2014-05-13 3 views
0

GL_TEXTUREX 변수에 다른 텍스처를로드하고 다른 구체에 할당하려고했습니다. 하지만 지금까지 문제가 생겼어. 나는 게시물에서 제안의 일부를 시도했다 thisthis 그러나 couldnt는 그것을 해결한다.여러 개의 2D 텍스처를 바인딩하는 OpenGL

이 내 코드의 일부입니다

GLuint textures[2]; 
void LoadTextures(std::string const& dirname) 
{ 
glGenTextures(2, textures); 
glActiveTexture(GL_TEXTURE0); 
glBindTexture(GL_TEXTURE_2D, textures[0]); 
Image_t sun = loadPNG(std::string(dirname + "/sun.png")); 
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1024, 512, 0, GL_RGB, GL_UNSIGNED_BYTE, &(sun.data[0])); 
glBindTexture(GL_TEXTURE_2D, textures[0]); 

glActiveTexture(GL_TEXTURE1); 
glBindTexture(GL_TEXTURE_2D, textures[1]); 
Image_t mercury = loadPNG(std::string(dirname + "/mercury.png")); 
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 1024, 512, 0, GL_RGBA, GL_UNSIGNED_BYTE, &(mercury.data[0])); 
} 

그냥 무승부 호출을 수행하기 전에 glBindTexture를 호출 할 필요가
void draw(void) 
{ 

glEnable (GL_TEXTURE_2D); 
glBindTexture (GL_TEXTURE_2D, textures[0]); 
glPushMatrix(); 
glTranslatef(0.4,0,0); 
gluSphere(sun, 0.5, 36, 36); //I want this sphere to use the texture GL_TEXTURE0 
glPopMatrix(); 
glDisable(GL_TEXTURE_2D); 
} 
+0

당신이 [gluQuadricTexture] 사용하고 (HTTP : //www.talisman를 .org/opengl-1.1/Reference/gluQuadricTexture.html)? 달성하고자하는 결과와 멀티 텍스쳐링과 관련된 결과는 무엇입니까? – keltar

+0

예, 저는이 방법으로 사용하고 있습니다 : gluQuadricTexture (sun, GL_TRUE); 그리고 멀티 텍스쳐링으로하고 싶은 것은 다른 텍스처 (태양, 지구, 화성 등)로 모든 영역을 텍스처링하는 것입니다. 내가 올바른 길을 가고 있는지 확실하지 않습니다. 답장을 보내 주셔서 감사합니다. – user3276768

답변

0

:

glActiveTexture(GL_TEXTURE0); 
glBindTexture(GL_TEXTURE_2D, textures[0]); 

glActiveTexture(GL_TEXTURE1); 
glBindTexture(GL_TEXTURE_2D, textures[1]); 

draw_things(); 

을 위의 예에서, draw_things으로 그릴 때 텍스처 0과 1 (GL_TEXTURE0 및 GL_) 모두에 액세스 할 수 있습니다. 텍스트 1). 당신이 원하는 것은 많은 것을 그릴이지만, 다른 텍스처와 각각의 경우

이제

, 다음을 수행해야합니다

glActiveTexture(GL_TEXTURE0); // activate any texture unit 
glEnable(GL_TEXTURE_2D);  // make sure texturing is enabled 

glBindTexture(GL_TEXTURE_2D, thing1_texture); 
draw_thing1(); 

glBindTexture(GL_TEXTURE_2D, thing2_texture); 
draw_thing2(); 

// etecetera 
+0

몇 가지 개선 사항이 있습니다. 내 모델이 어떻게 보이는지입니다. [link] (http://imgur.com/KVUj4wq) 고마워! 이제 점점 가까워지고 있습니다. – user3276768

+0

텍스처의 색상 형식이 잘못되었습니다. 'glTexImage2D'에 대한 호출에서'GL_RGB/GL_RGBA'를 하드 코드 한 것을 볼 수 있습니다. 그 형식이 올바른지 확신합니까? 또한 치수도 고정되어 있습니다. 그것들은 이미지 크기와 일치합니까? 이상적인 것은'Image_t' 객체에서 이런 종류의 데이터를 쿼리하는 것입니다. 'getWidth()','getFormat() '등의 메소드를 가져야합니다. – glampert

+1

문제는 컬러 포맷과 관련이 있습니다. 시간 내 주셔서 대단히 감사합니다! :디 – user3276768

관련 문제