OpenGL 3.2 2D渲染问题

时间:2014-07-24 22:12:38

标签: c++ opengl sprite opengl-3 sdl-2

rendering artifact http://byte-werx.com/rendering-artifact.png

当我创建两个精灵批次并尝试在同一帧上绘制两次时,我的屏幕的一半(或左右)会丢失"丢失&#34 ;;无论小篝火精灵的位置如何,都会发生这种情况。

在线框模式下渲染时会出现相同的结果,因此看起来没有绘制出一个巨大的黑色多边形并覆盖下面铺设的贴图。

这是用于初始化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中的任何其他内容。

1 个答案:

答案 0 :(得分:-1)

解决了这个问题,我在调用glDrawElements后没有取消绑定数组/元素缓冲区。

不得不把它放在glDrawElements之后:

glBindVertexArray(0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);