OpenGL 텍스처 단원 텍스처 목표 이해glActiveTextureglBindTexture

1187 단어 OpenGL
이렇게 간단하게 이해할 수 있다. 카드에는 N개의 무늬 단원(구체적인 수량은 당신의 카드 능력에 의존), 모든 무늬 단원(GL TEXTURE0, GL TEXTURE1 등)은 GL 가 있다.TEXTURE_1D、GL_TEXTURE_2D 등 코드는 다음과 같습니다.
struct TextureUnit
{
    GLuint targetTexture1D;
    GLuint targetTexture2D;
    GLuint targetTexture3D;
    GLuint targetTextureCube;
    ...
};
 
TextureUnit textureUnits[GL_MAX_TEXTURE_IMAGE_UNITS]
GLuint currentTextureUnit = 0;

기본적으로 현재 활성화된 무늬 단원은 0입니다.
 
void glActiveTexture(GLenum textureUnit)
{
    currentTextureUnit = textureUnit  - GL_TEXTURE0 ;
}

glActiveTextue는 무늬 단원을 활성화하는 것이 아니라 현재 활성화된 무늬 단원을 선택합니다.
void glBindTexture(GLenum textureTarget, GLuint textureObject)
{
    TextureUnit *texUnit = &textureUnits[currentTextureUnit];
    switch(textureTarget)
    {
    case GL_TEXTURE_1D: texUnit->targetTexture1D = textureObject; break;
    case GL_TEXTURE_2D: texUnit->targetTexture2D = textureObject; break;
    case GL_TEXTURE_3D: texUnit->targetTexture3D = textureObject; break;
    case GL_TEXTURE_CUBEMAP: texUnit->targetTextureCube = textureObject; break;
    }
}

예시 코드에서 볼 수 있듯이 무늬 목표를 연결할 때 현재 활발한 무늬 단원을 작용한다.

좋은 웹페이지 즐겨찾기