OpenGL 씬을 텍스처로 렌더링하여 쉐이더에서 텍스처를 조작해야합니다. 나는 Framebuffer Objects를 사용하여이 문제를 해결했다. 내 효과 파이프 라인의 여러 지점에서 전체 화면 쿼드를 렌더링하고 동적으로 렌더링 된 텍스처로 텍스처를 처리해야합니다.이 텍스처는 내 문제가있는 곳입니다.텍스처에 렌더링 한 다음 결과를 OpenGL의 화면에 렌더링
이처럼 내 현장 모습입니다 : 나는 질감이 렌더링 및 전체 화면 쿼드로 그 텍스처 매핑 https://www.mathematik.uni-marburg.de/~thomak/planet.jpg
. 그러나, 결과적인 이미지는 이런 방식으로 왜곡되어
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glBegin(GL_QUADS);
glTexCoord2i(0, 0);
glVertex3i(-1, -1, -1);
glTexCoord2i(0, 1);
glVertex3i(1, -1, -1);
glTexCoord2i(1, 1);
glVertex3i(1, 1, -1);
glTexCoord2i(1, 0);
glVertex3i(-1, 1, -1);
glEnd();
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
셰이더 코드 여기 :
sampler2D BlitSamp = sampler_state
{
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = LINEAR;
AddressU = Clamp;
AddressV = Clamp;
};
float4 AlphaClearPS(float2 texcoords : TEXCOORD0) : COLOR
{
return float4(tex2D(BlitSamp, texcoords).rgb, 1.0f);
}
여기
https://www.mathematik.uni-marburg.de/~thomak/planettexture.jpg는 쿼드 렌더링 및 텍스처 좌표를 설정하는 코드는
여기서 BlitSamp는 렌더 된 텍스처이며 셰이더로 전달 된 텍스처입니다. 여기서 무슨 일이있을 수 있니?
감사합니다. 기본적으로 Direct3D 응용 프로그램을 OpenGL로 이식하고 있으며 UV 공간의 기원에 동의하지 않는다는 사실을 알지 못했습니다 ... Direct3D에서 맨 왼쪽이므로 OpenGL에서 왼쪽 아래에 있습니다. – Campusanis
그들은 일반적으로 OpenGL에서 왼쪽 아래에 있습니다. 도와 줘서 기뻐요! – bfishman