diff --git a/examples/01-cubes/cubes.cpp b/examples/01-cubes/cubes.cpp index d39aeebd7..25e39e317 100644 --- a/examples/01-cubes/cubes.cpp +++ b/examples/01-cubes/cubes.cpp @@ -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; diff --git a/examples/02-metaballs/metaballs.cpp b/examples/02-metaballs/metaballs.cpp index 60728cc67..d0c772fbf 100644 --- a/examples/02-metaballs/metaballs.cpp +++ b/examples/02-metaballs/metaballs.cpp @@ -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); diff --git a/examples/03-raymarch/raymarch.cpp b/examples/03-raymarch/raymarch.cpp index 7cf65d450..80eb2da31 100644 --- a/examples/03-raymarch/raymarch.cpp +++ b/examples/03-raymarch/raymarch.cpp @@ -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); } } diff --git a/examples/05-instancing/instancing.cpp b/examples/05-instancing/instancing.cpp index 834969ea0..8d2fae8ff 100644 --- a/examples/05-instancing/instancing.cpp +++ b/examples/05-instancing/instancing.cpp @@ -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. diff --git a/examples/06-bump/bump.cpp b/examples/06-bump/bump.cpp index ae1753305..398b3ded7 100644 --- a/examples/06-bump/bump.cpp +++ b/examples/06-bump/bump.cpp @@ -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. diff --git a/examples/07-callback/callback.cpp b/examples/07-callback/callback.cpp index 464e2e55e..d8101d914 100644 --- a/examples/07-callback/callback.cpp +++ b/examples/07-callback/callback.cpp @@ -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. diff --git a/examples/08-update/update.cpp b/examples/08-update/update.cpp index 9bb3af0e4..334509434 100644 --- a/examples/08-update/update.cpp +++ b/examples/08-update/update.cpp @@ -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. diff --git a/examples/09-hdr/hdr.cpp b/examples/09-hdr/hdr.cpp index ff9c8df64..00a66fc60 100644 --- a/examples/09-hdr/hdr.cpp +++ b/examples/09-hdr/hdr.cpp @@ -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); } } diff --git a/examples/13-stencil/stencil.cpp b/examples/13-stencil/stencil.cpp index f7c6b95f8..7e1c1894c 100644 --- a/examples/13-stencil/stencil.cpp +++ b/examples/13-stencil/stencil.cpp @@ -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) diff --git a/examples/14-shadowvolumes/shadowvolumes.cpp b/examples/14-shadowvolumes/shadowvolumes.cpp index f39e8b9ad..e301addfc 100644 --- a/examples/14-shadowvolumes/shadowvolumes.cpp +++ b/examples/14-shadowvolumes/shadowvolumes.cpp @@ -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]); diff --git a/examples/15-shadowmaps-simple/shadowmaps_simple.cpp b/examples/15-shadowmaps-simple/shadowmaps_simple.cpp index e19479930..34f3ec914 100644 --- a/examples/15-shadowmaps-simple/shadowmaps_simple.cpp +++ b/examples/15-shadowmaps-simple/shadowmaps_simple.cpp @@ -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); } diff --git a/examples/16-shadowmaps/shadowmaps.cpp b/examples/16-shadowmaps/shadowmaps.cpp index 6c576b5dc..a0d692861 100644 --- a/examples/16-shadowmaps/shadowmaps.cpp +++ b/examples/16-shadowmaps/shadowmaps.cpp @@ -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); } } diff --git a/examples/17-drawstress/drawstress.cpp b/examples/17-drawstress/drawstress.cpp index 18a7a8fee..f39f99796 100644 --- a/examples/17-drawstress/drawstress.cpp +++ b/examples/17-drawstress/drawstress.cpp @@ -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. diff --git a/examples/18-ibl/ibl.cpp b/examples/18-ibl/ibl.cpp index 1608da739..b4016d519 100644 --- a/examples/18-ibl/ibl.cpp +++ b/examples/18-ibl/ibl.cpp @@ -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); } } diff --git a/examples/19-oit/oit.cpp b/examples/19-oit/oit.cpp index 90c5db05c..f503b3484 100644 --- a/examples/19-oit/oit.cpp +++ b/examples/19-oit/oit.cpp @@ -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 diff --git a/examples/21-deferred/deferred.cpp b/examples/21-deferred/deferred.cpp index c7c687cce..760a297e4 100644 --- a/examples/21-deferred/deferred.cpp +++ b/examples/21-deferred/deferred.cpp @@ -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); diff --git a/examples/22-windows/windows.cpp b/examples/22-windows/windows.cpp index 1b900d7d0..b1352f45f 100644 --- a/examples/22-windows/windows.cpp +++ b/examples/22-windows/windows.cpp @@ -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. diff --git a/examples/23-vectordisplay/vectordisplay.cpp b/examples/23-vectordisplay/vectordisplay.cpp index f5b5828f2..fb72fa1b3 100644 --- a/examples/23-vectordisplay/vectordisplay.cpp +++ b/examples/23-vectordisplay/vectordisplay.cpp @@ -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); } } diff --git a/examples/24-nbody/nbody.cpp b/examples/24-nbody/nbody.cpp index 0350ab5bb..a0418ee96 100644 --- a/examples/24-nbody/nbody.cpp +++ b/examples/24-nbody/nbody.cpp @@ -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); diff --git a/examples/26-occlusion/occlusion.cpp b/examples/26-occlusion/occlusion.cpp index 634aaa6cc..0a672fe4e 100644 --- a/examples/26-occlusion/occlusion.cpp +++ b/examples/26-occlusion/occlusion.cpp @@ -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); diff --git a/examples/27-terrain/terrain.cpp b/examples/27-terrain/terrain.cpp index 3bcd8491d..cebf8186e 100644 --- a/examples/27-terrain/terrain.cpp +++ b/examples/27-terrain/terrain.cpp @@ -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); diff --git a/examples/31-rsm/reflectiveshadowmap.cpp b/examples/31-rsm/reflectiveshadowmap.cpp index a435d1b42..73c7e0793 100644 --- a/examples/31-rsm/reflectiveshadowmap.cpp +++ b/examples/31-rsm/reflectiveshadowmap.cpp @@ -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); } } diff --git a/examples/33-pom/pom.cpp b/examples/33-pom/pom.cpp index 54a25e4d9..dddebfc7b 100644 --- a/examples/33-pom/pom.cpp +++ b/examples/33-pom/pom.cpp @@ -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. diff --git a/examples/common/bgfx_utils.cpp b/examples/common/bgfx_utils.cpp index a26c417ea..752a30994 100644 --- a/examples/common/bgfx_utils.cpp +++ b/examples/common/bgfx_utils.cpp @@ -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); } } diff --git a/examples/common/debugdraw/debugdraw.cpp b/examples/common/debugdraw/debugdraw.cpp index 7565966ec..152334903 100644 --- a/examples/common/debugdraw/debugdraw.cpp +++ b/examples/common/debugdraw/debugdraw.cpp @@ -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) diff --git a/examples/common/font/text_buffer_manager.cpp b/examples/common/font/text_buffer_manager.cpp index aa0924356..b78b9f712 100644 --- a/examples/common/font/text_buffer_manager.cpp +++ b/examples/common/font/text_buffer_manager.cpp @@ -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; diff --git a/examples/common/imgui/imgui.cpp b/examples/common/imgui/imgui.cpp index af1ff0858..6b1915d55 100644 --- a/examples/common/imgui/imgui.cpp +++ b/examples/common/imgui/imgui.cpp @@ -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; } diff --git a/examples/common/imgui/ocornut_imgui.cpp b/examples/common/imgui/ocornut_imgui.cpp index f518b656b..77d8def63 100644 --- a/examples/common/imgui/ocornut_imgui.cpp +++ b/examples/common/imgui/ocornut_imgui.cpp @@ -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); } diff --git a/examples/common/nanovg/nanovg_bgfx.cpp b/examples/common/nanovg/nanovg_bgfx.cpp index 09ba3ddfc..7ea6e3d36 100644 --- a/examples/common/nanovg/nanovg_bgfx.cpp +++ b/examples/common/nanovg/nanovg_bgfx.cpp @@ -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); } diff --git a/examples/common/ps/particle_system.cpp b/examples/common/ps/particle_system.cpp index 34ea02619..beb47cff1 100644 --- a/examples/common/ps/particle_system.cpp +++ b/examples/common/ps/particle_system.cpp @@ -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); diff --git a/include/bgfx/bgfx.h b/include/bgfx/bgfx.h index 77a8155a7..5c58e27a7 100644 --- a/include/bgfx/bgfx.h +++ b/include/bgfx/bgfx.h @@ -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 ); diff --git a/include/bgfx/c99/bgfx.h b/include/bgfx/c99/bgfx.h index b86f9ad0d..d2d127b0c 100644 --- a/include/bgfx/c99/bgfx.h +++ b/include/bgfx/c99/bgfx.h @@ -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); diff --git a/include/bgfx/c99/platform.h b/include/bgfx/c99/platform.h index e734fdf12..5e109d123 100644 --- a/include/bgfx/c99/platform.h +++ b/include/bgfx/c99/platform.h @@ -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); diff --git a/include/bgfx/defines.h b/include/bgfx/defines.h index f5538c004..fb1f80855 100644 --- a/include/bgfx/defines.h +++ b/include/bgfx/defines.h @@ -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. diff --git a/src/bgfx.cpp b/src/bgfx.cpp index cad07aff0..3eb17121f 100644 --- a/src/bgfx.cpp +++ b/src/bgfx.cpp @@ -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) diff --git a/tools/texturev/texturev.cpp b/tools/texturev/texturev.cpp index 363ee59c3..641021d58 100644 --- a/tools/texturev/texturev.cpp +++ b/tools/texturev/texturev.cpp @@ -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; }