2012-01-31 4 views
3

OpenGL 텍스처를 생성하기 위해 SOIL을 사용하고 있습니다. SOIL에서 밉맵 생성으로 인한 먼 인공물을 제외하고는 모든 것이 좋습니다. 깃발을 사용하지 않을 때 :SOIL을 사용하는 이상한 밉맵 관련 문제 - OpenGL

SOIL_FLAG_MIPMAPS 

그것은 아프지 만 나 빠진다. 이런 유물을 본 사람 있어요? 물 위에는 적갈색이 있고 모래 위에는 연한 녹색/파란색 왜곡처럼 보입니다.

enter image description here

+0

문제를 나타내는 완벽한 최소 프로그램을 게시하십시오. – genpfault

답변

0

Anisotropic filtering 도움이 될 :

// right after you set your GL_TEXTURE_MIN/MAG_FILTER 
if(glewIsSupported("GL_EXT_texture_filter_anisotropic")) 
{ 
    GLfloat max; 
    glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &max); 
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, max); 
} 

또는로드/질감 어떤 종류의 오류를 좌표 (충분한 정보를 확인하기 위해이 아니다하지만, 여기에

처럼 보이는 것입니다 즉, 문제를 보여주는 완전한 최소 프로그램).

+0

불행히도 효과가 없습니다. 그래도 고마워. –

3

guess은 밉맵을 생성하는 데 사용하는 모든 것이 버그가 있으며 밉 레벨을 적절하게 필터링하지 않습니다. 이전 레벨의 픽셀이 저장된 "유효"영역 외부에서 임의의 색상이 "누설됩니다" , 또는 일부 픽셀의 vaule을 계산하는 것을 잊어 버릴 수도 있습니다. 나는. 밉맵 체인의 마지막 레벨에만 영향을주는 버그가 있습니다.

이것이 원인인지 확인하려면로드 한 텍스처의 밉 레벨에서 데이터를 다시 읽습니다. glReadPixels 또는 무엇이든 사용하기. 마지막 밉 레벨에 쓰레기가 포함되어있는 경우 텍스처로드 루틴에 결함이 있습니다. 또한 GL_LINEAR_MIPMAP_NEAREST 필터를 사용하여 보라색 픽셀이있는 특정 밉 레벨이 있는지 확인할 수 있습니다.

은 (1.4 OpenGL은 2+는 OpenGL. - I가 3+의 OpenGL에서 사용되지 첨가 된 버전 깜빡) (OpenGL은 3+) glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);이 문제를 우회 첫번째 레벨 화상을 생성하고 glGenerateMipmaps을 사용하여, 또는 gluBuild2DMipMap (고대 OpenGL 버전).

또는 직접 밉맵을 계산할 수 있습니다. 상자 필터는 구현하기 어렵지 않습니다. 가우시안도 어렵지 않습니다.

"생성"이라고 말한 이후로 수식을 사용하여 텍스처를 생성하는 경우 가비지 색이 나타나는 마지막 밉 레벨에서 수식이 계산 오류를 일으키는 경우가 있습니다.

또 다른 가능한 시나리오는 결함 하드웨어 (깨진 냉각기로 과열 된 GPU에서 얻을 수있는 사진의 종류가 무엇인지 믿을 수 없음) 또는 버그가있는 드라이버입니다. 하지만 이는 프로그램뿐만 아니라 많은 응용 프로그램에서 아티팩트를 유발해야합니다.

+0

오늘 밤 이것을 시도하고 다시 연락 할 것입니다. 감사! –

관련 문제