OpenGL-ES находит правильные координаты (переводы и т. Д.) - PullRequest
0 голосов
/ 04 июля 2011

Как правильно определить, какие значения я должен использовать для gl.glTranslatef (x, y, z) и аналогичных методов.Пример: у меня есть квадрат, и я хочу отобразить его в верхнем левом углу, примерно на 1/4 экрана.Я подумал, что это будет glTranslate () со значениями -0,5 и 0,5, но это не отображает, где я ожидал.
Так что в основном я не хочу знать, как найти правильные координаты для объектов в OpenGL-ES.

1 Ответ

1 голос
/ 04 июля 2011

К сожалению, еще не разработали контент opengl-es для android, но AFAIK вам нужно преобразовать координаты экрана (например, левый верхний угол вашего экрана) в мировые координаты (координаты вашего трехмерного мира в OpenGL).

Для 3D вы можете сделать это через проекцию луча. Вы найдете множество примеров в поиске Google и, возможно, в реализации OpenGL.

Для 2D вы можете получить бит, используя матрицу ортогональной проекции (без искажения перспективы в принципе) и поворачивая ее по мере необходимости (например, для режима Lanscape):

// Initialize your projection matrix - current number are half the dimensions for the G1 I borrowed(320x480)
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(-240.0f, 240.0f, -160.0f, 160.0f, -1.0f, 1.0f);

// Rotate everything by 90 degrees
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(-90.0f, 0.0f, 1.0f, 0.0f);

НТН

...