OpenGL和透视与多边形/模型大小

时间:2011-02-22 01:46:57

标签: android opengl-es camera perspective

我已经在Android上的OpenGL中捣乱了一段时间,觉得我已经能够解决很多问题了。我一直在写“Hello,Android!”这本书。和NeHe 3D世界教程的Android端口。有趣的是,两者在实现上都有所不同,因此从两者中拼凑起来的东西都很有趣。问题是,HA教程让您构建一个旋转立方体并使用非常大的int值。立方体基本上是65536x65536。缩小这些值会大大缩小多维数据集。但是,NeHe端口使用更小的浮动。小世界的高度只有6.0,但相机的视角使它看起来像你大约1.0-2.0单位。我比较和对比两个像疯了一样,试图找出这是怎么做的,但我想出空。我可以说,在HA代码的情况下,NeHe代码不正常。它应用glNormal3f函数将较大的值降低到1,0,0,例如,然后使用TRIANGLE_STRIP构建,这似乎是在短时间内抽取大量几何图形的快速方法。作为一个OpenGL新手,我不能肯定地说这是为什么,或者这是否使得以后更容易绘制和应用纹理。它可能是无关的,但是NeHe教程将顶点/纹理缓冲区作为GL_FLOAT提供,而HA将它们作为GL_FIXED提供。将后者改为前者导致了很多丑陋的计划。

我已经使用了视口和translatef(这让我进入旋转立方体),但我似乎无法弄清楚每个管理透视与周围多边形的大小。任何人都可以对此有所了解吗?感谢。

1 个答案:

答案 0 :(得分:0)

我不确定这个HA tutorial是什么,但请检查他们是否使用各种定点版本(通常使用x后缀而不是f) OpenGL ES功能。如果是这样,请记住OpenGL ES定点格式是S15.16,因此65536映射到1.0f左右。