Glusphere OpenGL 물체에 2 개 이상의 텍스처 맵을 적용하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/348266

  •  20-08-2019
  •  | 
  •  

문제

나는 기본 행성 시청자 OpenGL Perl 응용 프로그램을 재미있게 쓰고 있습니다. 나는 영광스러운 행성과 함께 기본이 작동합니다. gluSphere(), 고전적인 지구 텍스처 맵으로 응용 프로그램으로 회전합니다.

이제 OpenGL ( "지구 구름")을 통해 두 번째 텍스처 맵을 적용하려면 어떻게해야합니까?

물론 Photoshop 또는 다른 그래픽 응용 프로그램에서 두 개의 텍스처 맵을 혼합 할 수 있지만 OpenGL API를 통해 방법이 있습니까?

나는 두 텍스처를로드하고 MIPMAP를 생성하려고 시도했지만 행성은 두 번째 텍스처 만 적용된 것만으로 표시됩니다.

도움이 되었습니까?

해결책

Jim Buck이 말했듯이 멀티 텍스트로 원하는 효과를 얻을 수 있습니다.

그러나 GLU Quadrics가 Multitexture 좌표 생성 (예 : Glmultitexcoord*() vs. gltexcoord*()를 사용하는 것을 지원한다고 생각하지 않습니다. 따라서 멀티 텍스처 경로로 이동하려면 자신의 구체 코드가 필요하다고 생각합니다.

또는 두 번째 텍스처 맵 (알파 채널 및 블렌딩을 적절하게 사용하여)에 약간 더 큰 구체를 그려서 도망 갈 수 있습니다. 이것은 Z-Fighting을 유발할 가능성이 높으므로 가치보다 더 어려울 수 있습니다.

자신의 구체 코드를 작성하는 것은 어렵지 않습니다. 아마도 만족스러운 결과를 얻는 가장 쉬운 경로 일 것입니다.

다른 팁

텍스처를 어떻게 결합하기를 원하십니까? 단순히 다중 텍스트를 사용하는 경우 원하는 효과를 얻을 수 있어야합니다.

glEnable(GL_TEXTURE_2D);

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture0ID);
glTexEnvf(GL_TEXTURE_ENV, ..., ...);

glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, texture1ID);
glTexEnvf(GL_TEXTURE_ENV, ..., ...);

텍스처를 결합하려는 방법에 따라 gltexenvf 호출을 설정하십시오. 그런 다음 Glusphere ()을 호출하십시오.

드류 홀에 동의합니다. 어쩌면 두 번째 구체를 만드는 것이 더 간단합니다. 모든 OpenGL 카드가 다중 텍스트를 지원하는 것은 아닙니다.

glpolygonoffset과 z- 싸움에 대응할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top