플레이어의 이미지를 가리키는 곳으로 회전하려고합니다. 기술적으로 이것은 잘 동작합니다. Z 축을 중심으로 이미지를 회전시킨 후 다시 변형합니다.glRotatef로 회전하면 뒤틀림이 발생합니다.
그러나 이미지를 렌더링 할 때 창의 넓은 부분을 향한 각도가 가리키면 이미지가 비례하여 이미지를 표준화하려고하는 것처럼 이미지가 찌그러집니다. 해상도를 정사각형 (1080x1080, 1440x1440 등)으로 설정하면 제대로 작동하지만 사각형이 아닌 사각형 해상도는 플레이어 이미지가 뒤틀리게됩니다.
원래 플레이어의 x/y 좌표를 중심으로 회전하는 환경을 얻으려고 할 때도 똑같은 문제가 있었지만, glViewport를 사각형으로 설정하면이 문제가 해결되었습니다.
glViewport (0,0, width, width);
Warped when rotated 90 degrees
이러한 효과는 각각 270도, 180 개도에 대해 대칭, 점차 다른 모든 각도에 대해 서로간에 이동.
코드 Player.render()
glPushMatrix();
glTranslatef(
x/Main.width*2,
y/Main.height*2,
0);
glRotatef((float)angle,0f,0f,1f);
glTranslatef(
-x/Main.width*2,
-y/Main.height*2,
0);
drawTexture(t,x-w/2,y-w/2,w,w); //t = texture, w = width in pixels for texture to be mapped to
glPopMatrix();
그리고 drawTexture의 방법 : 다른 사람에
public static void drawTexture(Texture in,float x, float y,float w, float h) {
//Main.width and Main.height are the window window width and height.
float nx = x*2/Main.width;
float ny = y*2/Main.height;
float nw = w*2/Main.width;
float nh = h*2/Main.height;
in.bind(0);
glTexEnvf(GL_TEXTURE_2D,GL_TEXTURE_ENV_MODE,GL_MODULATE);
glDepthMask(false);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glColor4f(1.0f,1.0f,1.0f,1.0f);
glBegin(GL_QUADS);
glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
glTexCoord2f(0, 1);
glVertex2f(nx,ny);
glTexCoord2f(1, 1);
glVertex2f(nx+nw,ny);
glTexCoord2f(1, 0);
glVertex2f(nx+nw,ny+nh);
glTexCoord2f(0, 0);
glVertex2f(nx,ny+nh);
glEnd();
glDisable(GL_BLEND);
glDepthMask(true);
}
정확하게 확실하지가이 문제를 시도하고 해결하기 위해가는 내 자신의 연구가 분명히 이 문제를 가지고 있지 않아 방금 탈모가 발생했습니다. 더 많은 코드가 필요하거나 더 많은 이미지가 필요하면 나를 믿어주십시오. 도움을 청합니다.
drawTexture (t, x-w/2, y-w/2, w, w); 그것은 당신의 코드입니다. 마지막 인수는 높이이지만 너비 인 것처럼 보입니다. –
너는 무엇인지 알지 못하지만 알고리즘이 정사각형 해상도로 작동하고 너비와 높이와 같은 매개 변수를 전달하면 이상하다는 것을 알게된다. –
시각 효과를 위해 텍스처를 임의로 늘리거나 텍스처가 정사각형이 아닌 경우에 사용합니다. 텍스처는 정사각형이고, drawTexture 너비와 높이는 텍스처를 매핑하고자하는 사각형을 지정합니다. 그래서 나는 같은 질감을 가지고 그것을 날고있는 어느 방향으로나 작게 만들 수 있습니다. 'w'는 사각형을 양쪽 방향으로 정사각형으로 만들고 너비와 높이가 같은 변수로 설정하면 간단 해집니다. – user7109452