1

大家好,我正在为 android 编写一个小 3D 引擎,以更好地学习平台和 opengl。我希望最终将它用作小型 3D 游戏的基础。

我现在正在尝试实现照明,并且通常遵循 NeHe opengl android port 教程。我有一个简单的旋转立方体和 1 个不应改变位置的灯。在设备上渲染我的场景后,灯光会随着立方体的旋转而“变暗”并重新变亮。

这是该行为的 swf 视频:http: //drop.io/obzfq4g

我的“引擎”代码位于:http: //github.com/mlasky/Smashout-Android-3D-Engine/

相关位是:

http://github.com/mlasky/Smashout-Android-3D-Engine/blob/master/src/com/supernovamobile/smashout/SmashoutGLRenderer.java
这是我初始化opengl和设置我的场景的地方。

http://github.com/mlasky/Smashout-Android-3D-Engine/blob/master/src/com/supernovamobile/smashout/SMMesh.java 这是实际旋转/绘制立方体网格的代码。

我希望我能提出一个更好的问题;但我非常困惑/困惑,除了“有人知道什么可能导致我看到的那种行为吗?”之外,我什至想不出一个聪明的问题。

感谢您的任何帮助,您可以提供。

编辑:视频中动画的缓慢/不连贯也是屏幕截图软件的结果。在鸸鹋的整个旋转过程中,它是平滑的。

4

2 回答 2

1

从视频看来,您的法线不正确。

对于轴对齐的立方体,cube.xml中的法线似乎关闭了。它们应该是轴对齐的,而不是它们是什么。你从哪里弄来的模型?

mVNormalsBuffer如果为空,此答案也可能相关。

于 2010-10-07T14:49:59.793 回答
1

您正在使用

gl.glNormalPointer(3, GL10.GL_FLOAT, mVNormalsBuffer);

错误的。

它应该是:

gl.glNormalPointer(GL10.GL_FLOAT,0, mVNormalsBuffer);
于 2011-09-23T23:55:19.147 回答