Android OpenGLES照明问题

时间:2010-10-07 13:17:27

标签: android 3d opengl-es lighting

嘿所有,    我正在为Android编写一个小型3D引擎,以便更好地学习平台和opengl。我希望最终能够将它作为小型3D游戏的基础。

我正在尝试立即实现照明,并且通常遵循NeHe opengl android端口教程。我有一个简单的旋转立方体和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 这是实际旋转/绘制立方体网格的代码。

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

感谢您提供的任何帮助。

编辑:视频中动画的缓慢/波动也是screencap软件的结果。它在鸸all的整个旋转过程中都很平滑。

2 个答案:

答案 0 :(得分:1)

从视频中看起来你的法线不正确。

对于轴对齐的立方体,cube.xml中的法线似乎已关闭。它们应该是轴对齐的,而不是它们。你从哪里得到这个模型?

如果mVNormalsBuffer为空,

This answer也可能相关。

答案 1 :(得分:1)

您正在使用

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

错误。

应该是:

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