Ортографическая проекция в OpenGL - PullRequest
0 голосов
/ 16 марта 2011

Я пытаюсь установить ортографическую проекцию, используя gl.glOrthof ...

Однако, не имеет значения, какие значения я передаю в функцию, ширина и высота, кажется, получают постоянные значения с плавающей точкойи они не соответствуют моим атрибутам glOrthof.

Мой код SurfaceChanged:

gl.glViewport(0, 0, w, h);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrthof(0.0f, 10.0f, 10.0f, 0.0f, 0.0f, 1.0f);

Мой код рисования:

gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glBindTexture(GL10.GL_TEXTURE_2D, texture);  
((GL11Ext) gl).glDrawTexfOES(positionX, positionY, 0.0f, 1.0f, 1.0f);

Есть идеи?Скажи мне, если тебе нужно что-то узнать.

1 Ответ

2 голосов
/ 16 марта 2011

glDrawTexfOES параметры ширины и высоты указаны в пикселях, поэтому вместо

((GL11Ext) gl).glDrawTexfOES(positionX, positionY, 0.0f, 1.0f, 1.0f);

вы должны использовать

((GL11Ext) gl).glDrawTexfOES(positionX, positionY, 0.0f, texture_width, texture_height);

Матрица проекции и просмотра модели влияет только на положение x, y, а не на масштаб текстуры. Выбор части текстуры для использования осуществляется с помощью прямоугольника кадрирования .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...