OpenGL 3.2 2D渲染问题

问题描述 投票:0回答:1

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中的任何其他内容。

c++ opengl sprite opengl-3 sdl-2
1个回答
-1
投票

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

不得不把它放在glDrawElements之后:

glBindVertexArray(0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
© www.soinside.com 2019 - 2024. All rights reserved.