다음은이 작업입니다. 그림을 전체 뷰포트에 채워진 배경으로로드하려고합니다. 이 배경은 카메라가 향하는 위치에 관계없이 항상 카메라를 향해야합니다. 먼저 나는 자연스럽게 배경으로 텍스처를 사용할 생각, 내 코드는 다음과 같습니다 :glDrawPixels를 사용하여 그림을 배경으로 렌더링하는 방법
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0,1,0,1,0,1);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glBindTexture(GL_TEXTURE_2D, myimage.GetID());
glEnable(GL_TEXTURE_2D);
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex2f(0, 0);
glTexCoord2f(1, 0); glVertex2f(1, 0);
glTexCoord2f(1, 1); glVertex2f(1, 1);
glTexCoord2f(0, 1); glVertex2f(0, 1);
glEnd();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glDisable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, 0);
이 날 믿어, myimage을 텍스처로 사진을로드 할 수있는 C 화상 클래스는 잘 작동합니다. 그러나 알 수없는 이유로 응용 프로그램에서 직사각형에 텍스처를로드 할 수 없습니다. (나는이 문제를 여기에 설명했다 click) 결과적으로, 나는 단지 내 뷰포트 주위에 사각형 프레임을 볼 수있다.
그래서 다른 해결책을 찾아 냈습니다.
텍스처 대신 glDrawPixels를 사용합니다. 내 코드는 다음과 같습니다.
glRasterPos2i(0, 0);
glDrawPixels(myimage.GetWidth(), myimage.GetHeight(), (myimage.GetBPP() == 24)?GL_RGB:GL_RGBA, GL_UNSIGNED_BYTE,
myimage.GetData());
사진이 등장했습니다! 그러나, 사진은 항상 내 카메라를 직면하지 않았다. 특정 방향으로 만 나타납니다. 장면의 물체처럼 카메라의 배경이 항상 보이지는 않습니다.
아무도 glDrawPixels를 사용하여 백그라운드를 구현하는 방법을 알고 있습니까?
그런데이 배경은 3D 장면에 배치 된 물체가 아니라고 생각합니다. 그래서 빌보드가 내 솔루션이 아닐 수도 있습니다. 다시 말하지만,이 배경은 전체 뷰 포트에 채워지고 항상 카메라를 향하고 있습니다.
로드하는 사진의 너비/높이는 얼마입니까? – Ani
'glDrawPixels'는 현재의 래스터 위치 (일반적인 변환 파이프 라인의 영향을받습니다)를 사용하려고합니다. 그러나 무엇이든간에, 텍스처가있는 쿼드 대신에'glDrawPixels'을 사용하지 마십시오. 오히려 ananthonline이 암시하는 것처럼 텍스처링 코드를 수정하십시오. –