Я использую OpenGL для Android для рисования своих 2D-изображений.
Всякий раз, когда я рисую что-то, используя код:
gl.glViewport(aspectRatioOffset, 0, screenWidth, screenHeight);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
GLU.gluOrtho2D(gl, aspectRatioOffset, screenWidth + aspectRatioOffset,screenHeight, 0);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glBindTexture(GL10.GL_TEXTURE_2D, myScene.neededGraphics.get(ID).get(animationID).get(animationIndex));
crop[0] = 0;
crop[1] = 0;
crop[2] = width;
crop[3] = height;
((GL11Ext)gl).glDrawTexfOES(x, y, z, width, height)
, я получаю результат с ног на голову.Я видел, как люди решают эту проблему следующим образом:
crop[0] = 0;
crop[1] = height;
crop[2] = width;
crop[3] = -height;
Это, однако, вредит логике в моем приложении, поэтому я бы хотел, чтобы результат не переворачивался с ног на голову.Кто-нибудь знает, почему это происходит, и есть ли способ избежать или решить его?
Редактировать: Я нашел решение, хотя не знаю, хорошее ли оно:
int[] crop = new int[4];
crop[0] = 0;
crop[1] = imageDimension[ID][1];
crop[2] = imageDimension[ID][0];
crop[3] = -imageDimension[ID][1];
((GL11)gl).glTexParameteriv(GL10.GL_TEXTURE_2D, GL11Ext.GL_TEXTURE_CROP_RECT_OES, crop, 0);
((GL11Ext)gl).glDrawTexfOES(x, ScreenHeight - y - height, 0, width, height);