| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование игр, графики и искусственного интеллекта > непонятки с позиционированием в OpenGL ES |
| Автор: Kabu 5.9.2009, 17:12 | ||||
| Перерыл весь инет, а решения проблемы так и не нашел. Если кто знает в чем проблема, просветите. В общем проблема следующая: взял http://iphonedevelopment.blogspot.com/2008/12/glulookat.html реализацию gluLookAt() для OpenGL ES и решил проверить чего она может Логика программы следующая: 1. Инициализирую OpenGL ES 2. Определяю матрицу проекции, затем делаю текущей матрицу модели:
3. Далее код прорисовки кадра выглядит следующим образом (рисую простой треугольник и над ним позиционирую камеру, перед прорисовкой каждого кадра изменяю угол поворота камеры, направляя взгляд вдоль оси Y).
Если угол поворота достигает примерно 40 градусов при StartY=0, StartZ = 20, то изображение как-бы переворачивается. Попробовал поизменять StartY и StartZ и оказалось, что когда вне области видимости камеры(т.е. под камерой) лежит чуть меньше половины треугольника, то происходит зеркальное отображение картинки. Допустим если StartY=-20, а StartZ=20, то глюк происходит если поворот осуществлен примерно на 80 градусов. На картинках First - это когда StartY = -20, а Second - когда StartY = 0. Библиотека GLES http://sourceforge.net/projects/ogl-es/files/ Пишу на eMbedded Visual C++4.0. Точно такая же проблема возникала, когда писал на C#, собсно после этого и решил попробовать на сях. Эта проблема остается, если не использовать функцию gluLookAt, а позиционировать объект поворотами и перемещением. Если поворачивать вектор UP и держать его всегда перпендикулярно оси взгляда, то это тоже не помогает, я его даже держал вдоль оси Z - без толку. На реальных девайсах под управлением WinCE, WindowsMobile 5.0 и WindowsMobile 6.0 проблема остается. Скорее всего я чегото недопонимаю, помогите кто чем может. |