Android 용 OpenGL을 사용하여 2D 이미지를 그립니다.Android OpenGL es "glDrawTexfOES"가 거꾸로 그립니다.
는 때마다 나는 코드를 사용하여 뭔가를 그릴 :
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;
이 그러나 내 응용 프로그램의 로직을 해치지 않는, 그래서 나는 거꾸로 뒤집어 수 없습니다하는 결과를 싶습니다 I'v 사람들이 일을 통해이 문제를 해결 보았다. 아무도 왜 그런 일이 일어나는지, 그리고 그것을 피하거나 해결할 수있는 방법을 알고 있습니까?
편집 :
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);
저는 OpenGL을 처음 접했고 캔버스를 사용한 프로젝트를 좀 더 효율적으로 사용하기 시작했습니다. 이 단계 이전에 뭔가 잘못 이해했을 가능성이 높습니다. 더 자세히 살펴 보겠습니다. – Alle
저장된 텍스쳐를 왼쪽 상단에있는 것으로 생각하고 다른 곳에서 텍스쳐 좌표를'glDrawTexOES'에 고정하는 것을 선호한다고 가정하는 텍스쳐 로딩 시스템을 고정하려고 시도한 것 이외에는 아무 잘못도하지 않았을 가능성이 더 큽니다. API의 나머지 부분과는 달리 직접 창 좌표를 사용하므로 좌표를 보이지 않게 뒤집을 기회를 얻지 못합니다. – Tommy
만약 내가 올바르게 이해했다면, 내 코드는 이미 이미지를 뒤집어 놓았을 것입니다.하지만 glDrawTexOES가 Canvas와 같은 좌표 시스템을 가지고 있기 때문에 그렇게하고 싶지 않습니다. – Alle