在OpenGL中,纹理可以使用glBindTexture()函数绑定到纹理单元上。这个函数可以接受两个参数,第一个参数是纹理单元的类型(GL_TEXTURE_1D、GL_TEXTURE_2D、GL_TEXTURE_3D等),第二个参数是纹理句柄。对于每个类型的纹理,OpenGL都会分配一组纹理单元,这组纹理单元中的每一个都具有独特的编号。
例如,在OpenGL中使用纹理的示例中,可以使用以下代码来绑定纹理:
GLuint texId; glGenTextures(1, &texId); glBindTexture(GL_TEXTURE_2D, texId); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, textureWidth, textureHeight, 0, GL_BGRA, GL_UNSIGNED_BYTE, textureData); glBindTexture(GL_TEXTURE_2D, 0);
要使用纹理单元,需要使用glActiveTexture()函数来指定当前活动的纹理单元。该函数的参数是一个枚举值,它指定了要激活的纹理单元(GL_TEXTURE0代表第一个纹理单元)。
在OpenGL中使用纹理单元的示例中,可以使用以下代码来绑定纹理单元:
GLuint texId; glGenTextures(1, &texId); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, texId); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, textureWidth, textureHeight, 0, GL_BGRA, GL_UNSIGNED_BYTE, textureData); glUniform1i(glGetUniformLocation(shaderProgram, "texture"), 0); glBindTexture
上一篇:绑定Vue模型到React值