Проблема с освещением Android OpenGLES - PullRequest
1 голос
/ 07 октября 2010

Привет всем, я пишу небольшой 3D-движок для Android, чтобы лучше изучить платформу и opengl.Я надеюсь в конечном итоге использовать его в качестве основы для маленьких 3D-игр.

Я пытаюсь реализовать освещение прямо сейчас и в целом следую учебным пособиям по портам Android для NeHe opengl.У меня есть простой вращающийся куб и 1 источник света, который не должен менять положение.При рендеринге моей сцены на устройстве свет кажется «тусклым» и снова освещается при вращении куба.

Это SWF-видео о поведении: http://drop.io/obzfq4g

Код моего«engine» находится здесь: 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.Это гладко на протяжении всего вращения на эму.

Ответы [ 2 ]

1 голос
/ 24 сентября 2011

Вы используете

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

неправильно.

Должно быть:

gl.glNormalPointer(GL10.GL_FLOAT,0, mVNormalsBuffer);
1 голос
/ 07 октября 2010

Из видео видно, что ваши нормали неверны.

Для выровненного по оси куба нормали в cube.xml отключены. Они должны быть выровнены по оси, а не какими бы они ни были. Где ты взял модель?

Этот ответ также может быть связан, если mVNormalsBuffer пусто.

...