Я работаю над созданием загрузчика объектов для использования с iOS, мне удалось загрузить данные вершин, нормалей и граней из файла OBJ, а затем поместить эти данные в массивы для реконструкции объекта.Но я столкнулся с проблемой с освещением, внизу есть видео с симуляцией моей программы - это с освещением в следующей позиции:
CGFloat position[] = { 0.0f, -1.0f, 0.0f, 0.0f };
glLightfv(GL_LIGHT0, GL_POSITION, position);
Это указано в обоих рендерахМетод каждого кадра и метод просмотра установки, который вызывается один раз при настройке.
Здесь представлены различные другие подробности освещения, они вызываются один раз во время настройки:
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
CGFloat ambientLight[] = { 0.2f, 0.2f, 0.2f, 1.0f };
CGFloat diffuseLight[] = { 1.0f, 0.0f, 0.0, 1.0f };
glLightfv(GL_LIGHT0, GL_AMBIENT, ambientLight);
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight);
CGFloat position[] = { 0.0f, -1.0f, 0.0f, 0.0f };
glLightfv(GL_LIGHT0, GL_POSITION, position);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_NORMALIZE);
Видео проблемы можетможно найти здесь:
http://youtu.be/dXm4wqzvO5c
Спасибо,
Пол
[РЕДАКТИРОВАТЬ]
для получения дополнительной информации нормаль также поставляютсяпо следующему коду, они в настоящее время находятся в большом массиве нормалей или XYZ XYZ XYZ и т.д ...
// FACE SHADING
glColorPointer(4, GL_FLOAT, 0, colors);
glEnableClientState(GL_COLOR_ARRAY);
glNormalPointer(GL_FLOAT, 3, normals);
glEnableClientState(GL_NORMAL_ARRAY);
glDrawArrays(GL_TRIANGLES, 0, 3*numOfFaces);
glDisableClientState(GL_COLOR_ARRAY);