Exposed vertex stream argument to API.

This commit is contained in:
Branimir Karadžić
2017-05-14 11:48:59 -07:00
parent 52c28fa531
commit 68c6b46a65
36 changed files with 146 additions and 161 deletions

View File

@@ -6,11 +6,6 @@
#include "common.h"
#include "bgfx_utils.h"
namespace bgfx
{
void setVertexBuffer(uint8_t _stream, VertexBufferHandle _handle, uint32_t _startVertex = 0, uint32_t _numVertices = UINT32_MAX);
}
struct PosColorVertex
{
float m_x;
@@ -20,25 +15,17 @@ struct PosColorVertex
static void init()
{
ms_decl0
ms_decl
.begin()
.add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float)
.skip(4)
.end();
ms_decl1
.begin()
.skip(12)
.add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true)
.end();
};
static bgfx::VertexDecl ms_decl0;
static bgfx::VertexDecl ms_decl1;
static bgfx::VertexDecl ms_decl;
};
bgfx::VertexDecl PosColorVertex::ms_decl0;
bgfx::VertexDecl PosColorVertex::ms_decl1;
bgfx::VertexDecl PosColorVertex::ms_decl;
static PosColorVertex s_cubeVertices[] =
{
@@ -115,16 +102,10 @@ class ExampleCubes : public entry::AppI
PosColorVertex::init();
// Create static vertex buffer.
m_vbh0 = bgfx::createVertexBuffer(
m_vbh = bgfx::createVertexBuffer(
// Static data can be passed with bgfx::makeRef
bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) )
, PosColorVertex::ms_decl0
);
m_vbh1 = bgfx::createVertexBuffer(
// Static data can be passed with bgfx::makeRef
bgfx::makeRef(s_cubeVertices, sizeof(s_cubeVertices) )
, PosColorVertex::ms_decl1
, PosColorVertex::ms_decl
);
// Create static index buffer.
@@ -143,8 +124,7 @@ class ExampleCubes : public entry::AppI
{
// Cleanup.
bgfx::destroyIndexBuffer(m_ibh);
bgfx::destroyVertexBuffer(m_vbh0);
bgfx::destroyVertexBuffer(m_vbh1);
bgfx::destroyVertexBuffer(m_vbh);
bgfx::destroyProgram(m_program);
// Shutdown bgfx.
@@ -221,8 +201,7 @@ class ExampleCubes : public entry::AppI
bgfx::setTransform(mtx);
// Set vertex and index buffer.
bgfx::setVertexBuffer(0, m_vbh0);
bgfx::setVertexBuffer(1, m_vbh1);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh);
// Set render states.
@@ -250,8 +229,7 @@ class ExampleCubes : public entry::AppI
uint32_t m_height;
uint32_t m_debug;
uint32_t m_reset;
bgfx::VertexBufferHandle m_vbh0;
bgfx::VertexBufferHandle m_vbh1;
bgfx::VertexBufferHandle m_vbh;
bgfx::IndexBufferHandle m_ibh;
bgfx::ProgramHandle m_program;
int64_t m_timeOffset;

View File

@@ -726,7 +726,7 @@ class ExampleMetaballs : public entry::AppI
bgfx::setTransform(mtx);
// Set vertex and index buffer.
bgfx::setVertexBuffer(&tvb, 0, numVertices);
bgfx::setVertexBuffer(0, &tvb, 0, numVertices);
// Set render states.
bgfx::setState(BGFX_STATE_DEFAULT);

View File

@@ -97,7 +97,7 @@ void renderScreenSpaceQuad(uint8_t _view, bgfx::ProgramHandle _program, float _x
bgfx::setState(BGFX_STATE_DEFAULT);
bgfx::setIndexBuffer(&tib);
bgfx::setVertexBuffer(&tvb);
bgfx::setVertexBuffer(0, &tvb);
bgfx::submit(_view, _program);
}
}

View File

@@ -209,7 +209,7 @@ class ExampleInstancing : public entry::AppI
}
// Set vertex and index buffer.
bgfx::setVertexBuffer(m_vbh);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh);
// Set instance data buffer.

View File

@@ -270,7 +270,7 @@ class ExampleBump : public entry::AppI
bgfx::setInstanceDataBuffer(idb, numInstances);
// Set vertex and index buffer.
bgfx::setVertexBuffer(m_vbh);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh);
// Bind textures.
@@ -307,7 +307,7 @@ class ExampleBump : public entry::AppI
bgfx::setTransform(mtx);
// Set vertex and index buffer.
bgfx::setVertexBuffer(m_vbh);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh);
// Bind textures.

View File

@@ -425,7 +425,7 @@ int _main_(int _argc, char** _argv)
bgfx::setTransform(mtx);
// Set vertex and index buffer.
bgfx::setVertexBuffer(vbh);
bgfx::setVertexBuffer(0, vbh);
bgfx::setIndexBuffer(ibh);
// Set render states.

View File

@@ -475,7 +475,7 @@ public:
bgfx::setTransform( mtx );
// Set vertex and index buffer.
bgfx::setVertexBuffer( m_vbh );
bgfx::setVertexBuffer(0, m_vbh );
bgfx::setIndexBuffer( m_ibh );
// Bind texture.
@@ -502,7 +502,7 @@ public:
bgfx::setTransform(mtx);
// Set vertex and index buffer.
bgfx::setVertexBuffer(m_vbh);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh);
// Bind texture.
@@ -524,7 +524,7 @@ public:
bgfx::setTransform(mtx);
// Set vertex and index buffer.
bgfx::setVertexBuffer(m_vbh);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh, 0, 6);
// Bind texture.
@@ -545,7 +545,7 @@ public:
bgfx::setTransform(mtx);
// Set vertex and index buffer.
bgfx::setVertexBuffer(m_vbh);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh, 0, 6);
// Bind texture.
@@ -566,7 +566,7 @@ public:
bgfx::setTransform(mtx);
// Set vertex and index buffer.
bgfx::setVertexBuffer(m_vbh, 24, 4);
bgfx::setVertexBuffer(0, m_vbh, 24, 4);
bgfx::setIndexBuffer(m_ibh, 0, 6);
// Bind texture.

View File

@@ -88,7 +88,7 @@ void screenSpaceQuad(float _textureWidth, float _textureHeight, bool _originBott
vertex[2].m_u = maxu;
vertex[2].m_v = maxv;
bgfx::setVertexBuffer(&vb);
bgfx::setVertexBuffer(0, &vb);
}
}

View File

@@ -767,7 +767,7 @@ struct Mesh
// Set model matrix for rendering.
bgfx::setTransform(_mtx);
bgfx::setIndexBuffer(group.m_ibh);
bgfx::setVertexBuffer(group.m_vbh);
bgfx::setVertexBuffer(0, group.m_vbh);
// Set texture
if (bgfx::invalidHandle != _texture.idx)

View File

@@ -1141,7 +1141,7 @@ struct Model
// Set buffers
bgfx::setIndexBuffer(group.m_ibh);
bgfx::setVertexBuffer(group.m_vbh);
bgfx::setVertexBuffer(0, group.m_vbh);
// Set textures
if (bgfx::invalidHandle != m_texture.idx)
@@ -2674,7 +2674,7 @@ int _main_(int _argc, char** _argv)
s_uniforms.submitPerDrawUniforms();
bgfx::setTransform(shadowVolumeMtx);
bgfx::setVertexBuffer(shadowVolume.m_vbSides);
bgfx::setVertexBuffer(0, shadowVolume.m_vbSides);
bgfx::setIndexBuffer(shadowVolume.m_ibSides);
setRenderState(renderStateCraftStencil);
::submit(viewId, svProgs[programIndex][ShadowVolumePart::Side]);
@@ -2683,14 +2683,14 @@ int _main_(int _argc, char** _argv)
{
s_uniforms.submitPerDrawUniforms();
bgfx::setTransform(shadowVolumeMtx);
bgfx::setVertexBuffer(group.m_vbh);
bgfx::setVertexBuffer(0, group.m_vbh);
bgfx::setIndexBuffer(shadowVolume.m_ibFrontCap);
setRenderState(renderStateCraftStencil);
::submit(viewId, svProgs[programIndex][ShadowVolumePart::Front]);
s_uniforms.submitPerDrawUniforms();
bgfx::setTransform(shadowVolumeMtx);
bgfx::setVertexBuffer(group.m_vbh);
bgfx::setVertexBuffer(0, group.m_vbh);
bgfx::setIndexBuffer(shadowVolume.m_ibBackCap);
::setRenderState(renderStateCraftStencil);
::submit(viewId, svProgs[programIndex][ShadowVolumePart::Back]);
@@ -2702,7 +2702,7 @@ int _main_(int _argc, char** _argv)
s_uniforms.submitPerDrawUniforms();
bgfx::setTransform(shadowVolumeMtx);
bgfx::setVertexBuffer(shadowVolume.m_vbSides);
bgfx::setVertexBuffer(0, shadowVolume.m_vbSides);
bgfx::setIndexBuffer(shadowVolume.m_ibSides);
::setRenderState(renderState);
::submit(VIEWID_RANGE1_PASS3, svProgs[ShadowVolumeProgramType::Color][ShadowVolumePart::Side]);
@@ -2711,14 +2711,14 @@ int _main_(int _argc, char** _argv)
{
s_uniforms.submitPerDrawUniforms();
bgfx::setTransform(shadowVolumeMtx);
bgfx::setVertexBuffer(group.m_vbh);
bgfx::setVertexBuffer(0, group.m_vbh);
bgfx::setIndexBuffer(shadowVolume.m_ibFrontCap);
::setRenderState(renderState);
::submit(VIEWID_RANGE1_PASS3, svProgs[ShadowVolumeProgramType::Color][ShadowVolumePart::Front]);
s_uniforms.submitPerDrawUniforms();
bgfx::setTransform(shadowVolumeMtx);
bgfx::setVertexBuffer(group.m_vbh);
bgfx::setVertexBuffer(0, group.m_vbh);
bgfx::setIndexBuffer(shadowVolume.m_ibBackCap);
::setRenderState(renderState);
::submit(VIEWID_RANGE1_PASS3, svProgs[ShadowVolumeProgramType::Color][ShadowVolumePart::Back]);

View File

@@ -311,7 +311,7 @@ int _main_(int _argc, char** _argv)
}
bgfx::setUniform(u_lightMtx, lightMtx);
bgfx::setIndexBuffer(ibh);
bgfx::setVertexBuffer(vbh);
bgfx::setVertexBuffer(0, vbh);
bgfx::setState(st.m_state);
bgfx::submit(st.m_viewId, st.m_program);
}

View File

@@ -976,7 +976,7 @@ struct Mesh
// Set model matrix for rendering.
bgfx::setTransform(_mtx);
bgfx::setIndexBuffer(group.m_ibh);
bgfx::setVertexBuffer(group.m_vbh);
bgfx::setVertexBuffer(0, group.m_vbh);
// Set textures.
if (bgfx::invalidHandle != _texture.idx)
@@ -1081,7 +1081,7 @@ void screenSpaceQuad(float _textureWidth, float _textureHeight, bool _originBott
vertex[2].m_u = maxu;
vertex[2].m_v = maxv;
bgfx::setVertexBuffer(&vb);
bgfx::setVertexBuffer(0, &vb);
}
}
@@ -2714,7 +2714,7 @@ int _main_(int _argc, char** _argv)
| BGFX_STENCIL_OP_FAIL_Z_REPLACE
| BGFX_STENCIL_OP_PASS_Z_REPLACE
);
bgfx::setVertexBuffer(&vb);
bgfx::setVertexBuffer(0, &vb);
bgfx::submit(RENDERVIEW_SHADOWMAP_0_ID, s_programs.m_black);
}
}

View File

@@ -291,7 +291,7 @@ class ExampleDrawStress : public entry::AppI
bgfx::setTransform(mtx);
// Set vertex and index buffer.
bgfx::setVertexBuffer(m_vbh);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh);
// Set render states.

View File

@@ -138,7 +138,7 @@ void screenSpaceQuad(float _textureWidth, float _textureHeight, bool _originBott
vertex[2].m_u = maxu;
vertex[2].m_v = maxv;
bgfx::setVertexBuffer(&vb);
bgfx::setVertexBuffer(0, &vb);
}
}

View File

@@ -142,7 +142,7 @@ void screenSpaceQuad(float _textureWidth, float _textureHeight, bool _originBott
vertex[2].m_u = maxu;
vertex[2].m_v = maxv;
bgfx::setVertexBuffer(&vb);
bgfx::setVertexBuffer(0, &vb);
}
}
@@ -399,7 +399,7 @@ class ExampleOIT : public entry::AppI
bgfx::setTransform(mtx);
// Set vertex and index buffer.
bgfx::setVertexBuffer(m_vbh);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh);
const uint64_t state = 0

View File

@@ -183,7 +183,7 @@ void screenSpaceQuad(float _textureWidth, float _textureHeight, float _texelHalf
vertex[2].m_u = maxu;
vertex[2].m_v = maxv;
bgfx::setVertexBuffer(&vb);
bgfx::setVertexBuffer(0, &vb);
}
}
@@ -520,7 +520,7 @@ class ExampleDeferred : public entry::AppI
bgfx::setTransform(mtx);
// Set vertex and index buffer.
bgfx::setVertexBuffer(m_vbh);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh);
// Bind textures.
@@ -635,7 +635,7 @@ class ExampleDeferred : public entry::AppI
*indices++ = 3;
*indices++ = 0;
bgfx::setVertexBuffer(&tvb);
bgfx::setVertexBuffer(0, &tvb);
bgfx::setIndexBuffer(&tib);
bgfx::setState(0
| BGFX_STATE_RGB_WRITE
@@ -698,7 +698,7 @@ class ExampleDeferred : public entry::AppI
);
bgfx::setTransform(mtx);
bgfx::setVertexBuffer(m_vbh);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh, 0, 6);
bgfx::setTexture(0, s_texColor, m_gbufferTex[ii]);
bgfx::setState(BGFX_STATE_RGB_WRITE);

View File

@@ -278,7 +278,7 @@ public:
bgfx::setTransform(mtx);
// Set vertex and index buffer.
bgfx::setVertexBuffer(m_vbh);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh);
// Set render states.

View File

@@ -176,7 +176,7 @@ void VectorDisplay::endFrame()
bgfx::setTexture(0, s_texColor, m_lineTexId);
bgfx::setVertexBuffer(m_vertexBuffers[i], 0, m_vertexBuffersSize[i]); // explicitly feed vertex number!
bgfx::setVertexBuffer(0, m_vertexBuffers[i], 0, m_vertexBuffersSize[i]); // explicitly feed vertex number!
bgfx::setState(0
| BGFX_STATE_RGB_WRITE
@@ -793,7 +793,7 @@ void VectorDisplay::screenSpaceQuad(float _textureWidth, float _textureHeight, f
vertex[2].m_u = maxu;
vertex[2].m_v = maxv;
bgfx::setVertexBuffer(&vb);
bgfx::setVertexBuffer(0, &vb);
}
}

View File

@@ -324,7 +324,7 @@ int _main_(int _argc, char** _argv)
}
// Set vertex and index buffer.
bgfx::setVertexBuffer(vbh);
bgfx::setVertexBuffer(0, vbh);
bgfx::setIndexBuffer(ibh);
bgfx::setInstanceDataBuffer(currPositionBuffer0, 0, u_paramsData.dispatchSize * threadGroupUpdateSize);

View File

@@ -224,14 +224,14 @@ class ExampleOcclusion : public entry::AppI
bgfx::OcclusionQueryHandle occlusionQuery = m_occlusionQueries[yy*CUBES_DIM+xx];
bgfx::setTransform(mtx);
bgfx::setVertexBuffer(m_vbh);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh);
bgfx::setCondition(occlusionQuery, true);
bgfx::setState(BGFX_STATE_DEFAULT);
bgfx::submit(0, m_program);
bgfx::setTransform(mtx);
bgfx::setVertexBuffer(m_vbh);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh);
bgfx::setState(0
| BGFX_STATE_DEPTH_TEST_LEQUAL
@@ -240,7 +240,7 @@ class ExampleOcclusion : public entry::AppI
bgfx::submit(1, m_program, occlusionQuery);
bgfx::setTransform(mtx);
bgfx::setVertexBuffer(m_vbh);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh);
bgfx::setCondition(occlusionQuery, true);
bgfx::setState(BGFX_STATE_DEFAULT);

View File

@@ -466,19 +466,19 @@ class ExampleTerrain : public entry::AppI
switch (m_terrain.m_mode)
{
default:
bgfx::setVertexBuffer(m_vbh);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh);
bgfx::submit(0, m_terrainProgram);
break;
case 1:
bgfx::setVertexBuffer(m_dvbh);
bgfx::setVertexBuffer(0, m_dvbh);
bgfx::setIndexBuffer(m_dibh);
bgfx::submit(0, m_terrainProgram);
break;
case 2:
bgfx::setVertexBuffer(m_vbh);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh);
bgfx::setTexture(0, s_heightTexture, m_heightTexture);
bgfx::submit(0, m_terrainHeightTextureProgram);

View File

@@ -176,7 +176,7 @@ void screenSpaceQuad(float _textureWidth, float _textureHeight, float _texelHalf
vertex[2].m_u = maxu;
vertex[2].m_v = maxv;
bgfx::setVertexBuffer(&vb);
bgfx::setVertexBuffer(0, &vb);
}
}

View File

@@ -324,7 +324,7 @@ class ExamplePom : public entry::AppI
bgfx::setUniform(u_norm_mtx, transpose);
// Set vertex and index buffer.
bgfx::setVertexBuffer(m_vbh);
bgfx::setVertexBuffer(0, m_vbh);
bgfx::setIndexBuffer(m_ibh);
// Bind textures.

View File

@@ -547,7 +547,7 @@ struct Mesh
const Group& group = *it;
bgfx::setIndexBuffer(group.m_ibh);
bgfx::setVertexBuffer(group.m_vbh);
bgfx::setVertexBuffer(0, group.m_vbh);
bgfx::submit(_id, _program, 0, it != itEnd-1);
}
}
@@ -578,7 +578,7 @@ struct Mesh
const Group& group = *it;
bgfx::setIndexBuffer(group.m_ibh);
bgfx::setVertexBuffer(group.m_vbh);
bgfx::setVertexBuffer(0, group.m_vbh);
bgfx::submit(state.m_viewId, state.m_program, 0, it != itEnd-1);
}
}

View File

@@ -1818,7 +1818,7 @@ private:
bgfx::setUniform(u_params, params, 4);
bgfx::setTransform(_mtx, _num);
bgfx::setVertexBuffer(m_vbh, mesh.m_startVertex, mesh.m_numVertices);
bgfx::setVertexBuffer(0, m_vbh, mesh.m_startVertex, mesh.m_numVertices);
bgfx::setState(0
| attrib.m_state
| (_wireframe ? BGFX_STATE_PT_LINES|BGFX_STATE_LINEAA|BGFX_STATE_BLEND_ALPHA
@@ -1851,7 +1851,7 @@ private:
const Attrib& attrib = m_attrib[m_stack];
bgfx::setVertexBuffer(&tvb);
bgfx::setVertexBuffer(0, &tvb);
bgfx::setIndexBuffer(&tib);
bgfx::setState(0
| BGFX_STATE_RGB_WRITE
@@ -1900,7 +1900,7 @@ private:
const Attrib& attrib = m_attrib[m_stack];
bgfx::setVertexBuffer(&tvb);
bgfx::setVertexBuffer(0, &tvb);
bgfx::setIndexBuffer(&tib);
bgfx::setState(0
| (attrib.m_state & ~BGFX_STATE_CULL_MASK)

View File

@@ -750,7 +750,7 @@ void TextBufferManager::submitTextBuffer(TextBufferHandle _handle, uint8_t _id,
ibh.idx = bc.indexBufferHandleIdx;
}
bgfx::setVertexBuffer(vbh, 0, bc.textBuffer->getVertexCount() );
bgfx::setVertexBuffer(0, vbh, 0, bc.textBuffer->getVertexCount() );
bgfx::setIndexBuffer(ibh, 0, bc.textBuffer->getIndexCount() );
}
break;
@@ -790,7 +790,7 @@ void TextBufferManager::submitTextBuffer(TextBufferHandle _handle, uint8_t _id,
);
}
bgfx::setVertexBuffer(vbh, 0, bc.textBuffer->getVertexCount() );
bgfx::setVertexBuffer(0, vbh, 0, bc.textBuffer->getVertexCount() );
bgfx::setIndexBuffer(ibh, 0, bc.textBuffer->getIndexCount() );
}
break;
@@ -803,7 +803,7 @@ void TextBufferManager::submitTextBuffer(TextBufferHandle _handle, uint8_t _id,
bgfx::allocTransientVertexBuffer(&tvb, bc.textBuffer->getVertexCount(), m_vertexDecl);
bx::memCopy(tib.data, bc.textBuffer->getIndexBuffer(), indexSize);
bx::memCopy(tvb.data, bc.textBuffer->getVertexBuffer(), vertexSize);
bgfx::setVertexBuffer(&tvb, 0, bc.textBuffer->getVertexCount() );
bgfx::setVertexBuffer(0, &tvb, 0, bc.textBuffer->getVertexCount() );
bgfx::setIndexBuffer(&tib, 0, bc.textBuffer->getIndexCount() );
}
break;

View File

@@ -1887,7 +1887,7 @@ struct Imgui
bgfx::setTransform(mtx);
bgfx::setTexture(0, s_texColor, _cubemap);
bgfx::setVertexBuffer(&tvb);
bgfx::setVertexBuffer(0, &tvb);
bgfx::setIndexBuffer(&tib);
bgfx::setState(BGFX_STATE_RGB_WRITE
|BGFX_STATE_ALPHA_WRITE
@@ -2396,7 +2396,7 @@ struct Imgui
++vertex;
}
bgfx::setVertexBuffer(&tvb);
bgfx::setVertexBuffer(0, &tvb);
bgfx::setState(0
| BGFX_STATE_RGB_WRITE
| BGFX_STATE_ALPHA_WRITE
@@ -2701,7 +2701,7 @@ struct Imgui
}
bgfx::setTexture(0, s_texColor, m_fonts[m_currentFontIdx].m_texture);
bgfx::setVertexBuffer(&tvb);
bgfx::setVertexBuffer(0, &tvb);
bgfx::setState(0
| BGFX_STATE_RGB_WRITE
| BGFX_STATE_ALPHA_WRITE
@@ -2766,7 +2766,7 @@ struct Imgui
vertex[5].m_u = minu;
vertex[5].m_v = minv;
bgfx::setVertexBuffer(&vb);
bgfx::setVertexBuffer(0, &vb);
return true;
}

View File

@@ -148,7 +148,7 @@ struct OcornutImguiContext
bgfx::setState(state);
bgfx::setTexture(0, s_tex, th);
bgfx::setVertexBuffer(&tvb, 0, numVertices);
bgfx::setVertexBuffer(0, &tvb, 0, numVertices);
bgfx::setIndexBuffer(&tib, offset, cmd->ElemCount);
bgfx::submit(cmd->ViewId, program);
}

View File

@@ -587,7 +587,7 @@ namespace
| BGFX_STENCIL_OP_FAIL_Z_KEEP
| BGFX_STENCIL_OP_PASS_Z_DECR
);
bgfx::setVertexBuffer(&gl->tvb);
bgfx::setVertexBuffer(0, &gl->tvb);
bgfx::setTexture(0, gl->s_tex, gl->th);
fan(paths[i].fillOffset, paths[i].fillCount);
bgfx::submit(gl->m_viewId, gl->prog);
@@ -612,7 +612,7 @@ namespace
| BGFX_STENCIL_OP_FAIL_Z_KEEP
| BGFX_STENCIL_OP_PASS_Z_KEEP
);
bgfx::setVertexBuffer(&gl->tvb, paths[i].strokeOffset, paths[i].strokeCount);
bgfx::setVertexBuffer(0, &gl->tvb, paths[i].strokeOffset, paths[i].strokeCount);
bgfx::setTexture(0, gl->s_tex, gl->th);
bgfx::submit(gl->m_viewId, gl->prog);
}
@@ -620,7 +620,7 @@ namespace
// Draw fill
bgfx::setState(gl->state);
bgfx::setVertexBuffer(&gl->tvb, call->vertexOffset, call->vertexCount);
bgfx::setVertexBuffer(0, &gl->tvb, call->vertexOffset, call->vertexCount);
bgfx::setTexture(0, gl->s_tex, gl->th);
bgfx::setStencil(0
| BGFX_STENCIL_TEST_NOTEQUAL
@@ -643,7 +643,7 @@ namespace
{
if (paths[i].fillCount == 0) continue;
bgfx::setState(gl->state);
bgfx::setVertexBuffer(&gl->tvb);
bgfx::setVertexBuffer(0, &gl->tvb);
bgfx::setTexture(0, gl->s_tex, gl->th);
fan(paths[i].fillOffset, paths[i].fillCount);
bgfx::submit(gl->m_viewId, gl->prog);
@@ -657,7 +657,7 @@ namespace
bgfx::setState(gl->state
| BGFX_STATE_PT_TRISTRIP
);
bgfx::setVertexBuffer(&gl->tvb, paths[i].strokeOffset, paths[i].strokeCount);
bgfx::setVertexBuffer(0, &gl->tvb, paths[i].strokeOffset, paths[i].strokeCount);
bgfx::setTexture(0, gl->s_tex, gl->th);
bgfx::submit(gl->m_viewId, gl->prog);
}
@@ -677,7 +677,7 @@ namespace
bgfx::setState(gl->state
| BGFX_STATE_PT_TRISTRIP
);
bgfx::setVertexBuffer(&gl->tvb, paths[i].strokeOffset, paths[i].strokeCount);
bgfx::setVertexBuffer(0, &gl->tvb, paths[i].strokeOffset, paths[i].strokeCount);
bgfx::setTexture(0, gl->s_tex, gl->th);
bgfx::submit(gl->m_viewId, gl->prog);
}
@@ -690,7 +690,7 @@ namespace
nvgRenderSetUniforms(gl, call->uniformOffset, call->image);
bgfx::setState(gl->state);
bgfx::setVertexBuffer(&gl->tvb, call->vertexOffset, call->vertexCount);
bgfx::setVertexBuffer(0, &gl->tvb, call->vertexOffset, call->vertexCount);
bgfx::setTexture(0, gl->s_tex, gl->th);
bgfx::submit(gl->m_viewId, gl->prog);
}

View File

@@ -655,7 +655,7 @@ namespace ps
| BGFX_STATE_CULL_CW
| BGFX_STATE_BLEND_NORMAL
);
bgfx::setVertexBuffer(&tvb);
bgfx::setVertexBuffer(0, &tvb);
bgfx::setIndexBuffer(&tib);
bgfx::setTexture(0, s_texColor, m_texture);
bgfx::submit(_view, m_particleProgram);

View File

@@ -2415,54 +2415,75 @@ namespace bgfx
/// Set vertex buffer for draw primitive.
///
/// @param[in] _stream Vertex stream.
/// @param[in] _handle Vertex buffer.
///
/// @attention C99 equivalent is `bgfx_set_vertex_buffer`.
///
void setVertexBuffer(VertexBufferHandle _handle);
/// Set vertex buffer for draw primitive.
///
/// @param[in] _handle Vertex buffer.
/// @param[in] _startVertex First vertex to render.
/// @param[in] _numVertices Number of vertices to render.
///
/// @attention C99 equivalent is `bgfx_set_vertex_buffer`.
///
void setVertexBuffer(VertexBufferHandle _handle, uint32_t _startVertex, uint32_t _numVertices);
/// Set vertex buffer for draw primitive.
///
/// @param[in] _handle Dynamic vertex buffer.
///
/// @attention C99 equivalent is `bgfx_set_dynamic_vertex_buffer`.
///
void setVertexBuffer(DynamicVertexBufferHandle _handle);
/// Set vertex buffer for draw primitive.
///
/// @param[in] _handle Dynamic vertex buffer.
/// @param[in] _startVertex First vertex to render.
/// @param[in] _numVertices Number of vertices to render.
///
/// @attention C99 equivalent is `bgfx_set_dynamic_vertex_buffer`.
///
void setVertexBuffer(
DynamicVertexBufferHandle _handle
uint8_t _stream
, VertexBufferHandle _handle
);
/// Set vertex buffer for draw primitive.
///
/// @param[in] _stream Vertex stream.
/// @param[in] _handle Vertex buffer.
/// @param[in] _startVertex First vertex to render.
/// @param[in] _numVertices Number of vertices to render.
///
/// @attention C99 equivalent is `bgfx_set_vertex_buffer`.
///
void setVertexBuffer(
uint8_t _stream
, VertexBufferHandle _handle
, uint32_t _startVertex
, uint32_t _numVertices
);
/// Set vertex buffer for draw primitive.
///
/// @param[in] _stream Vertex stream.
/// @param[in] _handle Dynamic vertex buffer.
///
/// @attention C99 equivalent is `bgfx_set_dynamic_vertex_buffer`.
///
void setVertexBuffer(
uint8_t _stream
, DynamicVertexBufferHandle _handle
);
/// Set vertex buffer for draw primitive.
///
/// @param[in] _stream Vertex stream.
/// @param[in] _handle Dynamic vertex buffer.
/// @param[in] _startVertex First vertex to render.
/// @param[in] _numVertices Number of vertices to render.
///
/// @attention C99 equivalent is `bgfx_set_dynamic_vertex_buffer`.
///
void setVertexBuffer(
uint8_t _stream
, DynamicVertexBufferHandle _handle
, uint32_t _startVertex
, uint32_t _numVertices
);
/// Set vertex buffer for draw primitive.
///
/// @param[in] _stream Vertex stream.
/// @param[in] _tvb Transient vertex buffer.
///
/// @attention C99 equivalent is `bgfx_set_transient_vertex_buffer`.
///
void setVertexBuffer(const TransientVertexBuffer* _tvb);
void setVertexBuffer(
uint8_t _stream
, const TransientVertexBuffer* _tvb
);
/// Set vertex buffer for draw primitive.
///
/// @param[in] _stream Vertex stream.
/// @param[in] _tvb Transient vertex buffer.
/// @param[in] _startVertex First vertex to render.
/// @param[in] _numVertices Number of vertices to render.
@@ -2470,7 +2491,8 @@ namespace bgfx
/// @attention C99 equivalent is `bgfx_set_transient_vertex_buffer`.
///
void setVertexBuffer(
const TransientVertexBuffer* _tvb
uint8_t _stream
, const TransientVertexBuffer* _tvb
, uint32_t _startVertex
, uint32_t _numVertices
);

View File

@@ -840,13 +840,13 @@ BGFX_C_API void bgfx_set_dynamic_index_buffer(bgfx_dynamic_index_buffer_handle_t
BGFX_C_API void bgfx_set_transient_index_buffer(const bgfx_transient_index_buffer_t* _tib, uint32_t _firstIndex, uint32_t _numIndices);
/**/
BGFX_C_API void bgfx_set_vertex_buffer(bgfx_vertex_buffer_handle_t _handle, uint32_t _startVertex, uint32_t _numVertices);
BGFX_C_API void bgfx_set_vertex_buffer(uint8_t _stream, bgfx_vertex_buffer_handle_t _handle, uint32_t _startVertex, uint32_t _numVertices);
/**/
BGFX_C_API void bgfx_set_dynamic_vertex_buffer(bgfx_dynamic_vertex_buffer_handle_t _handle, uint32_t _startVertex, uint32_t _numVertices);
BGFX_C_API void bgfx_set_dynamic_vertex_buffer(uint8_t _stream, bgfx_dynamic_vertex_buffer_handle_t _handle, uint32_t _startVertex, uint32_t _numVertices);
/**/
BGFX_C_API void bgfx_set_transient_vertex_buffer(const bgfx_transient_vertex_buffer_t* _tvb, uint32_t _startVertex, uint32_t _numVertices);
BGFX_C_API void bgfx_set_transient_vertex_buffer(uint8_t _stream, const bgfx_transient_vertex_buffer_t* _tvb, uint32_t _startVertex, uint32_t _numVertices);
/**/
BGFX_C_API void bgfx_set_instance_data_buffer(const bgfx_instance_data_buffer_t* _idb, uint32_t _num);

View File

@@ -175,9 +175,9 @@ typedef struct bgfx_interface_vtbl
void (*set_index_buffer)(bgfx_index_buffer_handle_t _handle, uint32_t _firstIndex, uint32_t _numIndices);
void (*set_dynamic_index_buffer)(bgfx_dynamic_index_buffer_handle_t _handle, uint32_t _firstIndex, uint32_t _numIndices);
void (*set_transient_index_buffer)(const bgfx_transient_index_buffer_t* _tib, uint32_t _firstIndex, uint32_t _numIndices);
void (*set_vertex_buffer)(bgfx_vertex_buffer_handle_t _handle, uint32_t _startVertex, uint32_t _numVertices);
void (*set_dynamic_vertex_buffer)(bgfx_dynamic_vertex_buffer_handle_t _handle, uint32_t _startVertex, uint32_t _numVertices);
void (*set_transient_vertex_buffer)(const bgfx_transient_vertex_buffer_t* _tvb, uint32_t _startVertex, uint32_t _numVertices);
void (*set_vertex_buffer)(uint8_t _stream, bgfx_vertex_buffer_handle_t _handle, uint32_t _startVertex, uint32_t _numVertices);
void (*set_dynamic_vertex_buffer)(uint8_t _stream, bgfx_dynamic_vertex_buffer_handle_t _handle, uint32_t _startVertex, uint32_t _numVertices);
void (*set_transient_vertex_buffer)(uint8_t _stream, const bgfx_transient_vertex_buffer_t* _tvb, uint32_t _startVertex, uint32_t _numVertices);
void (*set_instance_data_buffer)(const bgfx_instance_data_buffer_t* _idb, uint32_t _num);
void (*set_instance_data_from_vertex_buffer)(bgfx_vertex_buffer_handle_t _handle, uint32_t _startVertex, uint32_t _num);
void (*set_instance_data_from_dynamic_vertex_buffer)(bgfx_dynamic_vertex_buffer_handle_t _handle, uint32_t _startVertex, uint32_t _num);

View File

@@ -6,7 +6,7 @@
#ifndef BGFX_DEFINES_H_HEADER_GUARD
#define BGFX_DEFINES_H_HEADER_GUARD
#define BGFX_API_VERSION UINT32_C(40)
#define BGFX_API_VERSION UINT32_C(41)
///
#define BGFX_STATE_RGB_WRITE UINT64_C(0x0000000000000001) //!< Enable RGB write.

View File

@@ -3741,14 +3741,9 @@ error:
s_ctx->setVertexBuffer(_stream, _handle, _startVertex, _numVertices);
}
void setVertexBuffer(VertexBufferHandle _handle)
void setVertexBuffer(uint8_t _stream, VertexBufferHandle _handle)
{
setVertexBuffer(0, _handle, 0, UINT32_MAX);
}
void setVertexBuffer(VertexBufferHandle _handle, uint32_t _startVertex, uint32_t _numVertices)
{
setVertexBuffer(0, _handle, _startVertex, _numVertices);
setVertexBuffer(_stream, _handle, 0, UINT32_MAX);
}
void setVertexBuffer(uint8_t _stream, DynamicVertexBufferHandle _handle, uint32_t _startVertex, uint32_t _numVertices)
@@ -3757,14 +3752,9 @@ error:
s_ctx->setVertexBuffer(_stream, _handle, _startVertex, _numVertices);
}
void setVertexBuffer(DynamicVertexBufferHandle _handle)
void setVertexBuffer(uint8_t _stream, DynamicVertexBufferHandle _handle)
{
setVertexBuffer(0, _handle, 0, UINT32_MAX);
}
void setVertexBuffer(DynamicVertexBufferHandle _handle, uint32_t _startVertex, uint32_t _numVertices)
{
setVertexBuffer(0, _handle, _startVertex, _numVertices);
setVertexBuffer(_stream, _handle, 0, UINT32_MAX);
}
void setVertexBuffer(uint8_t _stream, const TransientVertexBuffer* _tvb, uint32_t _startVertex, uint32_t _numVertices)
@@ -3774,14 +3764,9 @@ error:
s_ctx->setVertexBuffer(_stream, _tvb, _startVertex, _numVertices);
}
void setVertexBuffer(const TransientVertexBuffer* _tvb)
void setVertexBuffer(uint8_t _stream, const TransientVertexBuffer* _tvb)
{
setVertexBuffer(0, _tvb, 0, UINT32_MAX);
}
void setVertexBuffer(const TransientVertexBuffer* _tvb, uint32_t _startVertex, uint32_t _numVertices)
{
setVertexBuffer(0, _tvb, _startVertex, _numVertices);
setVertexBuffer(_stream, _tvb, 0, UINT32_MAX);
}
void setInstanceDataBuffer(const InstanceDataBuffer* _idb, uint32_t _num)
@@ -4805,21 +4790,21 @@ BGFX_C_API void bgfx_set_transient_index_buffer(const bgfx_transient_index_buffe
bgfx::setIndexBuffer( (const bgfx::TransientIndexBuffer*)_tib, _firstIndex, _numIndices);
}
BGFX_C_API void bgfx_set_vertex_buffer(bgfx_vertex_buffer_handle_t _handle, uint32_t _startVertex, uint32_t _numVertices)
BGFX_C_API void bgfx_set_vertex_buffer(uint8_t _stream, bgfx_vertex_buffer_handle_t _handle, uint32_t _startVertex, uint32_t _numVertices)
{
union { bgfx_vertex_buffer_handle_t c; bgfx::VertexBufferHandle cpp; } handle = { _handle };
bgfx::setVertexBuffer(handle.cpp, _startVertex, _numVertices);
bgfx::setVertexBuffer(_stream, handle.cpp, _startVertex, _numVertices);
}
BGFX_C_API void bgfx_set_dynamic_vertex_buffer(bgfx_dynamic_vertex_buffer_handle_t _handle, uint32_t _startVertex, uint32_t _numVertices)
BGFX_C_API void bgfx_set_dynamic_vertex_buffer(uint8_t _stream, bgfx_dynamic_vertex_buffer_handle_t _handle, uint32_t _startVertex, uint32_t _numVertices)
{
union { bgfx_dynamic_vertex_buffer_handle_t c; bgfx::DynamicVertexBufferHandle cpp; } handle = { _handle };
bgfx::setVertexBuffer(handle.cpp, _startVertex, _numVertices);
bgfx::setVertexBuffer(_stream, handle.cpp, _startVertex, _numVertices);
}
BGFX_C_API void bgfx_set_transient_vertex_buffer(const bgfx_transient_vertex_buffer_t* _tvb, uint32_t _startVertex, uint32_t _numVertices)
BGFX_C_API void bgfx_set_transient_vertex_buffer(uint8_t _stream, const bgfx_transient_vertex_buffer_t* _tvb, uint32_t _startVertex, uint32_t _numVertices)
{
bgfx::setVertexBuffer( (const bgfx::TransientVertexBuffer*)_tvb, _startVertex, _numVertices);
bgfx::setVertexBuffer(_stream, (const bgfx::TransientVertexBuffer*)_tvb, _startVertex, _numVertices);
}
BGFX_C_API void bgfx_set_instance_data_buffer(const bgfx_instance_data_buffer_t* _idb, uint32_t _num)

View File

@@ -457,7 +457,7 @@ bool screenQuad(int32_t _x, int32_t _y, int32_t _width, uint32_t _height, uint32
vertex[4].m_abgr = _abgr;
vertex[5].m_abgr = _abgr;
bgfx::setVertexBuffer(&vb);
bgfx::setVertexBuffer(0, &vb);
return true;
}