iPhone OpenGL Шаблон обманывает? - PullRequest
1 голос
/ 07 июня 2010

Шаблон XGode OpenGL, похоже, обманывает, чтобы решить эту «растянутую» проблему области просмотра, которую я пытался понять в течение последних 3 часов.

В шаблоне iphone "Приложение OpenGL ES" цветной квадрат, который прыгает вверх и вниз по экрану, на самом деле вовсе не квадрат!

ES1Renderer.m (также файл ES2)

static const GLfloat squareVertices[] = {
    -0.5f,  -0.33f,
     0.5f,  -0.33f,
    -0.5f,   0.33f,
     0.5f,   0.33f,
};

Но он выглядит прямоугольным на устройстве / симуляторе из-за эффекта растяжения / сжатия не квадратного видового экрана.Я попытался исправить это, возившись с glFrustumf (), но это, похоже, не меняет соотношение сторон.

Мне удалось получить хороший внешний вид (не растянутый), когда я кормил glViewport () с 1: 1 widht: height. Но это не похоже на ответ, потому что это смещает расположение области просмотра.

Какой правильный способ исправить это растяжение и почему XCode так не делает?

1 Ответ

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

Я думаю, что ответ:

XCode обманывает так, чтобы не путать нас с дополнительным кодом, необходимым для настройки усеченного контура.

Вот код, который я использую для его установки, и он исправил полученное мной сжатие / растяжение:

const GLfloat zNear = 0.0001, zFar = 1000.0, fieldOfView = 45.0; 
GLfloat size;

size = zNear * tanf(DEGREES_TO_RADIANS(fieldOfView) / 2.0);

aspectRatio = (GLfloat) backingWidth / backingHeight;


glFrustumf(-size,//left
           size,//right
           (GLfloat)-size / aspectRatio,//bottom 
           (GLfloat)size / aspectRatio,//top 
           zNear,//zNear 
           zFar);//zFar     

glViewport(0, 0, backingWidth, backingHeight); 

Надеюсь, это кому-нибудь поможет.

...