OpenGL에서 입방체의 질감으로 6 장의 사진을로드하려고합니다. 블로우는 로딩 코드입니다.OpenGL의 CubeMap이 전혀 표시되지 않습니다.
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
for (int i = 0;i < 6;++i)
{
int width, height, channel;
unsigned char* img = SOIL_load_image(skybox[i].c_str(), &width, &height, &channel, SOIL_LOAD_AUTO);
glTexImage2D(cubeTarget[i], 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, img);
delete img;
}
glEnable(GL_TEXTURE_CUBE_MAP_ARB);
렌더링 코드가 전달됩니다. 기이 한 것은 렌더링 된 큐브가 흰색이라는 것입니다. 텍스처가 전혀로드되지 않은 것 같습니다. 나는 2D 텍스처 작동 여부를 확인하기 위해로드 코드를 변경 :
glGenTextures(1, texture);
glBindTexture(GL_TEXTURE_2D, texture[0]);
int width, height, channel;
unsigned char* img = SOIL_load_image(skybox[0].c_str(), &width, &height, &channel, SOIL_LOAD_AUTO);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, img);
delete img;
if(texture[0] == 0) return false;
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glEnable(GL_TEXTURE_2D);
결과는 내가 상관없이 분포가 텍스처 좌표에 의한 방법 이상한, 결국 질감을 볼 수 있습니다. 다음 정보를 수집했습니다 :
이미지를로드하는 데 사용하는 lib는 잘 작동합니다.
큐브 맵의 설정은 SuperBibble 9 장에서 설정합니다. 책의 코드를 컴파일 할 때 거의 동일한 코드가 작동합니다.
아직 누구나 이미지 라이브러리를로드하는 데 대한 제안 사항이 있습니까? 내가 사용하는 것은 정말로 오랜 시간 동안 업데이트를 멈추는 것처럼 보입니다 ...
추가 : 이제 내가 알아 낸 것은 모든 스카이 박스면이 하나의 img로만로드하려고 시도하면 텍스처가 표시된다는 것입니다 . 특정 값을 대체하기 위해 변수를 사용하는 한 아무 것도 표시되지 않습니다.
어떻게/어디에서 밉맵을 설정합니까? (그렇지 않은 경우 왜 활성화 했습니까?) – JasonD
@JasonD 축소 필터를 의미합니까? 실제로 밉맵을 구축하지 않았습니다. GL_LINEAR로 변경하면 여전히 작동하지 않습니다. 그래서 나는 그것이 문제가 아니라고 생각합니다. – Narusaki
"* 내가 사용하는 것은 오랜 시간 동안 업데이트를 중단하는 것처럼 보입니다 ... *"SOIL? SOIL은 * 완성 *입니다. 그것은 소유자가주고 싶어하는 모든 기능을 가지고 있습니다. 어떤 시점에서 업데이트 할 필요가 없습니다. –