Как использовать glFrustrum в OpenGL ES1 на iPhone

Итак, я использую Xcode 3.2.1 и пытаюсь создать проект iPhone OpenGL ES1. Шаблон по умолчанию для проекта opengl подходит, но я пытался разделить код, чтобы не все выполнялось для каждого кадра при вызове drawView ().

У меня есть отдельный метод setupRC, который устанавливает освещение, включает тест глубины, включает отбраковку и устанавливает четкий цвет. Это вызывается при инициализации EAGLView, и это прекрасно работает.

Я взял вызовы glViewport () и glFrustrum () и поместил их в конец метода resizeFromLayer () в файле ES1Renderer.m. Это срабатывает, когда приложение запускается и когда приложение меняет размер должным образом.

Теперь проблема в том, что дальний угол пирамиды кажется испорченным, так как все мои объекты обрезаются / обрезаются. Я попытался отрегулировать положение и угол камеры, но по-прежнему все объекты обрезаны / обрезаны. Я увеличил дальность с 1000.0f до 30000.0f и все равно получил тот же результат. Что безумно, так это то, что если я вызываю вызовы glViewport () и glFrustrum () в drawView () в каждом кадре, все выглядит правильно. Ничего не обрезано и похоже, что я этого хочу. Из всего, что я читал, вызовы frustrum и viewport нужно вызывать только тогда, когда создается окно / и изменяется его размер, но если я не назову это каждый кадр в моем проекте, это не сработает. Любые идеи?

Заранее спасибо


person Paul    schedule 23.12.2009    source источник


Ответы (2)


Интересно, не могли бы вы где-нибудь сделать дополнительный перевод, прежде чем начать рисовать? Может быть, вы могли бы убедиться, что вы выполняете loadIdentity (), прежде чем начинать рисовать все, просто чтобы убедиться, что вы начинаете с того места, где вы думаете, что находитесь.

person user360092    schedule 08.06.2010

Пытаясь решить эту ситуацию с усеченной пирамидой / окном просмотра в шаблоне XCode OpenGL для iphone я сам, одним из ресурсов, которые помогли разобраться в этом, был:

http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-table-of.html

person user360092    schedule 08.06.2010