我一直在尝试显示我的纹理时遇到一些问题。我试图初始化纹理,然后在我的opengl显示器中使用glActiveTexture来使用它们。
我首先通过以下方法声明这些纹理:
// Texture identifiers
GLuint texture0, texture1, texture2, texture3, texture4, texture5, texture6;
然后在初始化期间,我尝试通过以下代码创建纹理:
//Load the active textures for each of our textures
//Bind them, to be referenced later
glGenTextures(1, &texture0);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture0);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1000,
1000,0, GL_RGBA, GL_UNSIGNED_BYTE,
ceiling_tile);
glGenTextures(1, &texture1);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, texture1);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 500,
500,0, GL_RGBA, GL_UNSIGNED_BYTE,
floor_tile);
glGenTextures(1, &texture2);
glActiveTexture(GL_TEXTURE2);
glBindTexture(GL_TEXTURE_2D, texture2);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 64,
64,0, GL_RGBA, GL_UNSIGNED_BYTE,
lamp_color);
glGenTextures(1, &texture3);
glActiveTexture(GL_TEXTURE3);
glBindTexture(GL_TEXTURE_2D, texture3);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 500,
500,0, GL_RGBA, GL_UNSIGNED_BYTE,
total_black);
glGenTextures(1, &texture4);
glActiveTexture(GL_TEXTURE4);
glBindTexture(GL_TEXTURE_2D, texture4);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 500,
500,0, GL_RGBA, GL_UNSIGNED_BYTE,
flower_texture);
glGenTextures(1, &texture5);
glActiveTexture(GL_TEXTURE5);
glBindTexture(GL_TEXTURE_2D, texture5);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 500,
500,0, GL_RGBA, GL_UNSIGNED_BYTE,
dinosaur_texture);
glGenTextures(1, &texture6);
glActiveTexture(GL_TEXTURE6);
glBindTexture(GL_TEXTURE_2D, texture6);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 500,
500,0, GL_RGBA, GL_UNSIGNED_BYTE,
chair_texture);
然后在我的opengl显示功能中,当我想激活这些纹理中的每一个时,我运行:
glActiveTexture(GL_TEXTURE0+3); glBindTexture(GL_TEXTURE_2D, texture3);
'''
但是,当我执行所有这些操作时,没有纹理加载到其中。我不知道我是否正确拨打了所有这些电话?有任何想法吗?
我尝试绕过glActiveTextures之类的东西,例如glActiveTexture(GL_TEXTUREX),其中X等于1-6。