OpenGL Изменить настройки координат - PullRequest
2 голосов
/ 04 ноября 2011

У меня настроен орто-экран в OpenGL ES на iPhone, и я хотел бы изменить свою систему координат с текущей настройки.

Я думал, что-то вроде этого сделает это.*

Однако, похоже, это никак не влияет на систему координат экрана. В настоящее время это настроено, поэтому, если я применяю объект к вершинам {0, -1,0, 1,0,0, 0,1, 0, -1,0,0} Я получаю ромбовидную форму размером с весь экран (другими словами, моя нижняя граница равна -1, а верхняя граница равна +1)

Как бы изменить свое представлениетак что мои границы 0,0 и screen_width, screen_height?

1 Ответ

1 голос
/ 04 ноября 2011

Хорошо, я получил ответ, эти две функции фактически выполняют то, что мне нужно.

Однако я загружал свою матрицу проекции идентичности после вызова этих функций.Таким образом, варианты либо не загружать матрицу идентификаторов, либо вызывать эти функции после загрузки матрицы идентификаторов.Поэтому, если бы я хотел, чтобы мои координаты шли из 0-экранного размера, я бы сделал следующее:

- (void)drawFrame
{
 [(EAGLView *)self.view setFramebuffer];

 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();

 glOrthof(0, self.view.frame.size.width, 0, self.view.frame.size.height, -1, 1);
 glViewport(0, 0, self.view.frame.size.width, self.view.frame.size.height);

 ///DRAWING STUFF HERE

 [(EAGLView *)self.view presentFramebuffer];
}

ИЛИ удалите следующий код из приведенного выше фрагмента

glMatrixMode(GL_PROJECTION);
glLoadIdentity();

glOrthof(0,self.view.frame.size.width, 0, self.view.frame.size.height,-1,1);
glViewport(0, 0, self.view.frame.size.width, self.view.frame.size.height);

и добавьте его вваша функция загрузки, возможно, в вашем init- или в пробуждении от nib, или viewDidLoad или viewWillAppear

Кажется, что не оба необходимы, однако теперь это прекрасно работает =]

...