2013-03-26 6 views
1

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); 

결과는 내가 상관없이 분포가 텍스처 좌표에 의한 방법 이상한, 결국 질감을 볼 수 있습니다. 다음 정보를 수집했습니다 :

  1. 이미지를로드하는 데 사용하는 lib는 잘 작동합니다.

  2. 큐브 맵의 설정은 SuperBibble 9 장에서 설정합니다. 책의 코드를 컴파일 할 때 거의 동일한 코드가 작동합니다.

아직 누구나 이미지 라이브러리를로드하는 데 대한 제안 사항이 있습니까? 내가 사용하는 것은 정말로 오랜 시간 동안 업데이트를 멈추는 것처럼 보입니다 ...

추가 : 이제 내가 알아 낸 것은 모든 스카이 박스면이 하나의 img로만로드하려고 시도하면 텍스처가 표시된다는 것입니다 . 특정 값을 대체하기 위해 변수를 사용하는 한 아무 것도 표시되지 않습니다.

+0

어떻게/어디에서 밉맵을 설정합니까? (그렇지 않은 경우 왜 활성화 했습니까?) – JasonD

+0

@JasonD 축소 필터를 의미합니까? 실제로 밉맵을 구축하지 않았습니다. GL_LINEAR로 변경하면 여전히 작동하지 않습니다. 그래서 나는 그것이 문제가 아니라고 생각합니다. – Narusaki

+0

"* 내가 사용하는 것은 오랜 시간 동안 업데이트를 중단하는 것처럼 보입니다 ... *"SOIL? SOIL은 * 완성 *입니다. 그것은 소유자가주고 싶어하는 모든 기능을 가지고 있습니다. 어떤 시점에서 업데이트 할 필요가 없습니다. –

답변

0

마지막으로 알아낼 수 있습니다. 마지막 사진의 해상도이 다른 사진과 다르기 때문입니다.

많은 시간을 낭비하는 종류의 Realy.

관련 문제