【发布时间】:2014-07-24 22:12:38
【问题描述】:
rendering artifact 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);
我已经在这里上传了相关代码:download
SDL2 用于创建窗口和上下文管理,但我不使用 SDL 中的任何其他东西。
【问题讨论】:
-
我敢说你的投影矩阵是错误的,你的平面偏向前剪裁平面......或者它可能是 Z 战斗......你能显示代码设置投影?
-
不确定这真的是 OpenGL-3.2 特有的。
-
@rodrigo 这是投影矩阵:m_ProjectionMatrix = glm::ortho(0.0f, 1024.0f, 768.0f, 0.0f, -1.0f, 1.0f);
-
@NateStrandberg 养成这个习惯很好。此外,如果您不确定哪些功能已被弃用;查看 OpenGL 3.3 参考页面。
-
@NateStrandberg OpenGL 3.2 非常 相似,我实际处理的唯一区别是,在 3.3 中,所有已弃用的 guff 实际上都已删除,除非您使用兼容性配置文件。
标签: c++ opengl sprite opengl-3 sdl-2