rendering artifact http://byte-werx.com/rendering-artifact.png
当我创建两个精灵批次并尝试在同一帧上绘制两次时,我的屏幕的一半(或左右)会“丢失”;无论小篝火精灵的位置如何,都会发生这种情况。
在线框模式下渲染时会出现相同的结果,因此看起来没有绘制出一个巨大的黑色多边形并覆盖下面铺设的tilemap。
这是用于初始化OpenGL的代码:
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glEnableClientState(GL_VERTEX_ARRAY);
glActiveTexture(GL_TEXTURE1);
glActiveTexture(GL_TEXTURE0);
glDepthRange(0.0f, 1.0f);
glEnable(GL_DEPTH_TEST);
glDisable(GL_CULL_FACE);
glEnable(GL_TEXTURE_2D);
glDisable(GL_LIGHTING);
glDepthFunc(GL_LEQUAL);
glDisable(GL_DITHER);
glClearDepth(1.0f);
glEnable(GL_CW);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
我在这里上传了相关代码:download
SDL2用于窗口创建和上下文管理,但我不使用SDL中的任何其他内容。
解决了这个问题,我在调用glDrawElements之后没有解除数组/元素缓冲区的绑定。
不得不把它放在glDrawElements之后:
glBindVertexArray(0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);