2013-02-27 3 views
1

openGl에서 텍스처를 사용하기 시작했는데 몇 가지 이상한 행동을 발견했습니다. 다음 의사 코드 예제를 참조하십시오.OpenGL : 텍스처 작업시 하나 이상의 텍스처를 바인딩 하시겠습니까?

Im 텍스처를로드하고 바인딩하는 중입니다.하지만 지금은 프리미티브를 그리는 중입니다. 그러나 이러한 프리미티브는 보이지 않습니다. 그들은 다음과 같은 경우에 볼 수 있습니다 :

int main()... 
bindTexture1(); // <- So the first bind() remains the only one 
//bindTexture2(); 
//bindTexture3(); 

// None of these textures are actually used! 

while(true) { 
    begin(); 
    // draw again just primitve stuff but now it's visible 
    end(); 
} 

또는

int main()... 
bindTexture1(); 
bindTexture2(); 
bindTexture3(); 

// None of these textures are actually used! 

while(true) { 
    begin(); 
    bindTexture1(); // Binding texture 1 again 
    // draw again just primitve stuff but now it's visible 
    end(); 
} 

그래서 나는 내 문제는이 glBindTexture 함수에 연결되어있는 것 같아요?

답변

1

고정 파이프의 2D 텍스처 렌더링 (OpenGL은 1, 2)하는 절차 :

glEnable(GL_TEXTURE_2D); 

glBindTexture(GL_TEXTURE_2D, textureId); 

// render 
glBegin(GL_QUADS); 

    glTexCoord2f(0.0, 0.0); 
    glVertex2f(0.0, 0.0); 
    glTexCoord2f(1.0, 0.0); 
    glVertex2f(1.0, 0.0); 
    glTexCoord2f(1.0, 1.0); 
    glVertex2f(1.0, 1.0); 
    glTexCoord2f(0.0, 1.0); 
    glVertex2f(0.0, 1.0); 

glEnd(); 

glDisable(GL_TEXTURE_2D); 
+0

glEnable 텍스쳐 만 고정 된 함수 파이프 라인에 요구된다. – datenwolf

+0

이 답변은 내 문제를 해결했습니다. glEnable (GL_TEXTURE_2D)를 사용하면 속도 차이가 있습니까? 및 glDisable (GL_TEXTURE_2D); 더 자주? 예 : 텍스처가있는 각 객체에 대해? 아니면 한 번 호출해야합니다, 모든 물건을 텍스처로 렌더링하고 glDisable을 호출해야합니까? – Anonymous

+0

@Anonymous 아니요. 마이크로 최적화가 될 것입니다. –