OpenGL에서 텍스처를 사용하고 있습니다 (FLTK에서는 C++). mipmaps를 사용하고 있습니다. 다중 플랫폼 프로젝트 (현재 Mac에서 코딩 중)를 만들고 있지만 glGenerateMipmap을 사용하지 않고 Windows에서 확장을 사용하지 않으므로 수동으로 수행하기로 결정했습니다. 이 예제에서는 '바닥'과 '천장'에 대해 수행합니다. 나는 질감을 사용하면 내가 OpenGL에서 밉맵 색상 인공물
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,ceiling_texture);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT)
//draw primitives with texture coordinates
glDisable(GL_TEXTURE_2D);
내가 '바닥'에 대한 동일한 코드와 절차를 사용하여 사용하는 서로 다른 해상도 이미지 버전
glGenTextures(1, &ceiling_texture);
glBindTexture(GL_TEXTURE_2D, ceiling_texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 8);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, ceiling_width0, ceiling_height0, 0, GL_RGB, GL_FLOAT, ceiling_pixels0);
glTexImage2D(GL_TEXTURE_2D, 1, GL_RGB, ceiling_width1, ceiling_height1, 0, GL_RGB, GL_FLOAT, ceiling_pixels1);
glTexImage2D(GL_TEXTURE_2D, 2, GL_RGB, ceiling_width2, ceiling_height2, 0, GL_RGB, GL_FLOAT, ceiling_pixels2);
glTexImage2D(GL_TEXTURE_2D, 3, GL_RGB, ceiling_width3, ceiling_height3, 0, GL_RGB, GL_FLOAT, ceiling_pixels3);
glTexImage2D(GL_TEXTURE_2D, 4, GL_RGB, ceiling_width4, ceiling_height4, 0, GL_RGB, GL_FLOAT, ceiling_pixels4);
glTexImage2D(GL_TEXTURE_2D, 5, GL_RGB, ceiling_width5, ceiling_height5, 0, GL_RGB, GL_FLOAT, ceiling_pixels5);
glTexImage2D(GL_TEXTURE_2D, 6, GL_RGB, ceiling_width6, ceiling_height6, 0, GL_RGB, GL_FLOAT, ceiling_pixels6);
glTexImage2D(GL_TEXTURE_2D, 7, GL_RGB, ceiling_width7, ceiling_height7, 0, GL_RGB, GL_FLOAT, ceiling_pixels7);
glTexImage2D(GL_TEXTURE_2D, 8, GL_RGB, ceiling_width8, ceiling_height8, 0, GL_RGB, GL_FLOAT, ceiling_pixels8);
에서 데이터를로드하려면 다음 코드를 사용합니다.
그러나 천장의 경우 저해상도 밉맵을 사용하는 거리에서 이상한 색 인공물 (노란색 색조)이 나타납니다. I는 I 단지 GIMP에서 이미지를 스케일링함으로써 생성되는 다른 해상도에서 같은 파일의 다른 버전에 적용 glGetTexImage
를 사용하여 화소 정보를 생성
(그림 참조). 다시 나는 바닥과 천장 모두 똑같이했다.
glGenerateMipmap
을 사용했을 때 이런 일이 발생하지 않았습니다.
왜 내가이 인공물을 얻고 있으며 어떻게해야합니까?