Fix webgl2 instancing bug (#1512)

This commit is contained in:
Hugo Amnov
2018-10-01 21:46:49 +02:00
committed by Branimir Karadžić
parent 7835f60e8c
commit 50a64a7fdf
2 changed files with 15 additions and 0 deletions

View File

@@ -4528,6 +4528,15 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
}
}
void ProgramGL::unbindInstanceData() const
{
for(uint32_t ii = 0; 0xffff != m_instanceData[ii]; ++ii)
{
GLint loc = m_instanceData[ii];
GL_CHECK(glDisableVertexAttribArray(loc));
}
}
void IndexBufferGL::destroy()
{
GL_CHECK(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0) );
@@ -7311,6 +7320,11 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
m_occlusionQuery.end();
}
if(isValid(draw.m_instanceDataBuffer))
{
program.unbindInstanceData();
}
statsNumPrimsSubmitted[primIndex] += numPrimsSubmitted;
statsNumPrimsRendered[primIndex] += numPrimsRendered;
statsNumInstances[primIndex] += numInstances;

View File

@@ -1329,6 +1329,7 @@ namespace bgfx { namespace gl
void destroy();
void init();
void bindInstanceData(uint32_t _stride, uint32_t _baseVertex = 0) const;
void unbindInstanceData() const;
void bindAttributesBegin()
{