Я пытаюсь использовать OpenGL для 2D-программирования на Android. Прямо сейчас я на стадии установки; пытаясь настроить мой видовой экран. У меня есть текстуры загрузки и рисования, но у меня проблемы с тем, чтобы заставить их рисовать так, как я хочу. Если возможно, я хочу, чтобы источник находился в верхнем левом углу экрана, увеличиваясь вниз, так как именно так настраивается мой код (перенесенный с того времени, когда я ранее использовал холст). Я подумал, что это будет легко; что-то вроде перевода и переворачивания. Когда я попытался изменить операторы, которые конфигурируют область просмотра, я был удивлен, увидев, что, очевидно, они не влияют на мое приложение. См. Код ниже для метода onSurfaceChanged () объекта GLRenderer:
public void onSurfaceChanged(GL10 gl, int width, int height) {
this.width = width;
this.height = height;
gl.glViewport(0, 0, width, height);
gl.glLoadIdentity();
GLU.gluOrtho2D(gl, 0, width, height, 0);
gl.glColor4x(0x10000, 0x10000, 0x10000, 0x10000);
}
Я могу изменить эти значения или даже закомментировать эти строки (за исключением glColor4x), и графика все равно будет отображаться точно так же. Графика отображается в ожидаемом размере, без искажений и даже в правильном месте, если вы берете нижнюю левую координату за начало координат. Вот процедура рисования для моих текстур, как часть класса, представляющего один рисуемый объект:
public void draw(GL10 gl, float x, float y) {
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
cropSignature = OpenGLUtil.setTextureCrop(gl,srcRectParam,cropSignature);
((GL11Ext)gl).glDrawTexfOES(x, y, 0, width, height);
}
Где x, y - координаты для рисования, а width, height - размеры текстуры, указанные при создании этого объекта.
Полностью ли glDrawTexfOES игнорирует установленные мной настройки области просмотра? Если так, как я должен рисовать? И как я могу установить начало OpenGL в верхнем левом углу, увеличивая вниз? Или это плохая практика, и я должен инвертировать остальную часть своего кода, чтобы соответствовать этому?