2009-08-13 1 views
1

나는 분명히 일부 3D 오브젝트와 텍스처를 포함하고있는 간단한 OpenGL 어플리케이션을 만들고 있습니다. 그러나 문제는 모든 텍스처에 아티팩트가 나타나는 것입니다. 이들은 가장자리를 따라 삼각형의 형태로옵니다.OpenGL 텍스처 아티팩트 제거하기

뷰 포인트를 텍스처로 가깝게 이동 시키면 렌더링이 완벽하게 사라지는 것을 보았습니다. 따라서 밉 매핑이나 z 버퍼를 사용하여 무언가를 할 수 있다는 의구심이 있습니다. 모든 텍스처 좌표는 .3ds 파일에서로드되며 모두 0-1 범위 내에 있음을 확인합니다.

Picture 1

텍스쳐는 다음과 같이로드 : 여기

내 문제의 사진입니다

//Texture parameters 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST); 

glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); 

//Define the 2d texture 
glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, array); 

//Create 2d mipmaps 
gluBuild2DMipmaps(GL_TEXTURE_2D, 4, width, height, GL_RGBA, GL_UNSIGNED_BYTE, array); 
+0

메쉬 사진도 게시 할 수 있습니까? 엔진 덮개가 하나의 쿼드 또는 많은 삼각형으로 구성되어 있습니까? –

답변

3

내가 프로그래밍 된 DirectX, 가까운면/먼 평면 거리 비율을 사용했다 가장자리에 인공물이 생겼다.

필자의 경우 near plane이 'camera'에서 1 unit 떨어져 있고 far plane이 10000 units 떨어진 경우 비율은 1/10000이며 문제가 발생했습니다. 근거리 평면을 10 또는 100으로 설정하면 비율이 커집니다. 톱니 모양의 가장자리 문제를 해결했습니다.

OpenGL에서 적용 할 수있는 방법/방법은 잘 모르겠지만 체크 아웃하는 것이 좋습니다.

+0

그게 Z - 버퍼 prceision. 24 비트 Z 버퍼에 올랐다면 문제는 사라질 것입니다. 당신의 단위를 적절하게 세우는 데 중요한 교훈을 생각하십시오. 즉 0.01 단위의 너비와 10000 단위의 최대 끌기 거리를 가진 물체가 없어야합니다.) – Goz

+1

가까운 비행기를 0.1에서 10으로 바꿔서 문제가 해결되었습니다! –

+0

@ 고즈 ... 그래. DirectX는 w-buffer라고 불리는 것을 처리했습니다. 그것은 모두 관련되었다. 마지막으로 DirectX를 사용한 지 오래되었으므로 하드 스킬 학습 만 기억합니다 : D - 비율을 높게 유지하고 정확한 세부 정보는 유지하지 마십시오. –