Привет всем, я пишу небольшой 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.Это гладко на протяжении всего вращения на эму.
Вы используете
gl.glNormalPointer(3, GL10.GL_FLOAT, mVNormalsBuffer);
неправильно.
Должно быть:
gl.glNormalPointer(GL10.GL_FLOAT,0, mVNormalsBuffer);
Из видео видно, что ваши нормали неверны.
Для выровненного по оси куба нормали в cube.xml отключены. Они должны быть выровнены по оси, а не какими бы они ни были. Где ты взял модель?
Этот ответ также может быть связан, если mVNormalsBuffer пусто.
mVNormalsBuffer