OpenGL 3.2 2D渲染问题

OpenGL 3.2 2D rendering issues

本文关键字:问题 2D OpenGL      更新时间:2023-10-16

渲染工件http://byte-werx.com/rendering-artifact.png

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

在线框模式下渲染时,也会出现相同的结果,因此不会出现一个巨大的黑色多边形正在被绘制并覆盖下面的铺设瓷砖图。

这是用来初始化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);

我已经上传了相关的代码在这里:下载

SDL2用于窗口创建和上下文管理,但是我不使用SDL中的任何其他内容。

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

必须把这个放在glDrawElements:

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