Похоже, что glColorMaterial()
отсутствует в OpenGL ES . Согласно этой записи (для iPhone), вы все равно можете включить GL_COLOR_MATERIAL
в OpenGL ES 1.x, но вы застряли с настройками по умолчанию GL_FRONT_AND_BACK
и GL_AMBIENT_AND_DIFFUSE
, которые в противном случае вы бы сделали устанавливается с glColorMaterial()
. Я бы с этим согласился, но рассеянное освещение работает неправильно.
Я настроил свою сцену и протестировал ее с одним источником света, установив glMaterialfv()
для GL_AMBIENT
и GL_DIFFUSE
один раз при инициализации. Нормы были установлены правильно, и освещение работает так, как должно. Я вижу затенение Гуро.
При отключенном GL_LIGHTING
плоские цвета, которые я установил с помощью glColor4f()
, появляются на различных объектах сцены. Это также работает как ожидалось. Однако когда вызывается glEnable(GL_COLOR_MATERIAL)
, плоские цвета остаются. Я ожидаю увидеть световые эффекты.
glColorMaterial () также упоминается на anddev.org , но я не уверен, что информация там точная.
Я тестирую это на телефоне Android 2.1 (Motorola Droid).
Редактировать : На моем телефоне 1.6 (ADP1) он работает правильно. Я подал Выпуск 8015 .
Он не работает с эмулятором для Android 1.6 или 2.1.
Вот минимальный тестовый пример для воспроизведения проблемы.
Снимок экрана на Android 1.6 (ADP1):
Скриншот того же кода, работающего на Android 2.1 (Motorola Droid):
Снимок экрана на Android 1.6 (эмулятор):