0

我已经在 Android 上的 OpenGL 中闲逛了一段时间,感觉我已经能够弄清楚很多事情了。我一直在研究《你好,Android!》这本书。和 NeHe 3D 世界教程的 Android 端口。有趣的部分是两者在实现上略有不同,因此将两者拼凑在一起很有趣。问题是,HA 教程让您构建一个旋转立方体并使用非常大的 int 值。立方体基本上是 65536x65536。缩小这些值会大大缩小立方体。然而,NeHe 端口使用小得多的浮点数。小世界的高度只有 6.0,但从相机的角度来看,它看起来像你大约 1.0-2.0 单位高。我已经疯狂地比较和对比了这两者,试图找出这是如何完成的,但我却一无所获。我可以看出 NeHe 代码在 HA 代码中没有正常的任何东西。例如,它应用 glNormal3f 函数将较大的值降低到 1,0,0,然后使用 TRIANGLE_STRIP 构建,这似乎是在短时间内抽取大量几何图形的快速方法。作为一个 OpenGL 新手,我不能确定这是否是原因,或者这只是让以后更容易绘制和应用纹理。这可能是不相关的,但是 NeHe 教程将顶点/纹理缓冲区作为 GL_FLOAT 提供,而 HA 将它们作为 GL_FIXED 提供。将后者更改为前者会导致很多丑陋的刨削。这似乎是一种在短时间内抽取大量几何图形的快速方法。作为一个 OpenGL 新手,我不能确定这是否是原因,或者这只是让以后更容易绘制和应用纹理。这可能是不相关的,但是 NeHe 教程将顶点/纹理缓冲区作为 GL_FLOAT 提供,而 HA 将它们作为 GL_FIXED 提供。将后者更改为前者会导致很多丑陋的刨削。这似乎是一种在短时间内抽取大量几何图形的快速方法。作为一个 OpenGL 新手,我不能确定这是否是原因,或者这只是让以后更容易绘制和应用纹理。这可能是不相关的,但是 NeHe 教程将顶点/纹理缓冲区作为 GL_FLOAT 提供,而 HA 将它们作为 GL_FIXED 提供。将后者更改为前者会导致很多丑陋的刨削。

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

4

1 回答 1

0

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

于 2011-02-22T03:13:37.830 回答