Как вы используете glFrustrum в OpenGL ES1 на iPhone - PullRequest
0 голосов
/ 24 декабря 2009

Итак, я использую 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 должны вызываться только тогда, когда окно / создается и изменяется, но если я не вызываю его каждый кадр в моем проекте, это не работает. Есть идеи?

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

Ответы [ 2 ]

0 голосов
/ 08 июня 2010

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

0 голосов
/ 08 июня 2010

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

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

...