Android深度缓冲问题:对遇到任何问题的人提供建议

时间:2011-01-16 06:28:40

标签: android opengl-es depth depth-buffer

本周我浪费了大约30个小时编写和重写代码,认为我误解了OpenGL深度缓冲区是如何工作的。我试过的一切都失败了。我现在通过查找OpenGL的Android实现中的错误来解决我的问题。

请参阅此API条目:

http://www.opengl.org/sdk/docs/man/xhtml/glClearDepth.xml

  

void glClearDepth(GLclampd depth);

     

指定使用时的深度值   深度缓冲区被清除。该   初始值为1。

Android的实现有两个版本的命令:

  • glClearDepthx ,它取一个整数 值,钳位0-1

  • 需要浮动的
  • glClearDepthf 点值,钳位0-1

如果你使用 glClearDepthf(1),那么你会得到你期望的结果。如果你使用 glClearDepthx(1),那么你会得到不同的结果。 (注意1是默认值,但是使用参数1调用命令产生的结果与完全不调用它的结果不同。)我不知道发生了什么,但是深度缓冲区被清除为不同于什么的值我指定了。

1 个答案:

答案 0 :(得分:3)

尝试将65536传递给glClearDepthx()

GLfixed是S15.16的固定点,因此1.02^1665536表示。

此外,您链接到常规OpenGL文档,而不是OpenGL ES 1.1文档。