我在使用 opengl 绘制简单的 2d 纹理四边形时遇到了 z 战斗的一些问题。症状是两个物体以相同的速度移动,一个物体在另一个物体上移动,但周期性地一个物体可以看到另一个物体,反之亦然——有点像“闪烁”。我认为这确实是z战斗。
我已关闭深度测试并具有以下功能:
gl.Disable(gl.DEPTH_TEST)
gl.DepthFunc(gl.LESS)
gl.Enable(gl.BLEND)
gl.BlendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA)
我的观点和正交矩阵如下:
我试图将近距和远距设置得更大(比如 50000 的范围,但仍然没有帮助)
Projection := mathgl.Ortho(0.0, float32(width), float32(height), 0.0, -5.0, 5.0)
View := mathgl.LookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0)
与我的 opengl 过程的唯一区别是,我将所有顶点、uvs(精灵图集)、平移、旋转等打包到一个发送到顶点着色器的大包中,而不是为每个单独的对象调用 drawelements。
有没有人对2d z战斗有补救措施?
编辑:
我正在添加一些图片以进一步描述场景:
这些图像彼此相隔几秒钟拍摄。它们只是从左到右移动的纹理。当他们移动时;您从图像中看到,一个精灵与另一个精灵重叠,反之亦然,以非常快的速度来回等。
另请注意,我的图像(精灵)是具有透明背景的 png。
呼如林
慕婉清6462132
相关分类