2011-11-10 5 views
0

텍스처를 중심에서 회전하려고하는데이 코드로 달성했지만 회전하는 동안 이미지가 약간의 각도로 표시됩니다 (이미지가 올바르게 표시되지 않습니다.) 첨부 된 사진과 같이 약간의 각도) 나에게이 문제를 광장OpenGL에서 중심 주위로 회전 텍스처 문제

public void onSurfaceChanged(GL10 gl, int width, int height) { 
    gl.glViewport(0, 0, width, height); 
    gl.glOrthof(0, 320, 0, 480, 0, 1); 
    gl.glMatrixMode(GL10.GL_MODELVIEW); 
    gl.glLoadIdentity(); 
    gl.glEnable(GL10.GL_TEXTURE_2D); 

} 

정점

float vertices[] = { 

       -.25f,.25f,0, 
       -.25f,-.25f,0, 
       .25f,.25f,0, 
       .25f,-.25f,0 
     }; 

있습니다 내 코드는 여기

를 해결하는 데 도움이 될 수 있습니다이 내 그리기 메타입니다 OD

public void draw(GL10 gl) { 
     gl.glPushMatrix(); 



     gl.glTranslatef(-.125f, -.125f, 0f); 
     gl.glRotatef(r,0, 0,-1); 
     gl.glTranslatef(.125f, .125f, 0); 

     // Point to our buffers 
     gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); 
     gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); 
     // Set the face rotation 
     gl.glFrontFace(GL10.GL_CW); 

     // Point to our vertex buffer 
     gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexbuffer); 
     gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, texturebuffer); 
     // Draw the vertices as triangle strip 
     gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4); 

     //Disable the client state before leaving 
     gl.glDisableClientState(GL10.GL_VERTEX_ARRAY); 
     gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY); 
     r = r+1; 
     gl.glPopMatrix(); 

    } 

enter image description here

enter image description here

enter image description here

답변

1

당신의 텍스처 좌표는 단순히 질감을 너무 많이 참조 할 수있다처럼 보이는 - 어떤 코드의 일부는 패딩 경우 발생할 수 2의 거듭 제곱 텍스처 크기는 아니지만 관련 지식을 전달하지 않는 2의 거듭 제곱 이미지. 따라서 텍스처의 중심을 중심으로 회전하지만 실제 이미지는 텍스처 모서리 부분 만 사용합니다.

예제 코드에서 이미지를로드하는 방법이나 값을 texturebuffer에 넣고있는 사람을 볼 수는 없지만 볼 수있는 스마트 영역입니다.

관련 문제