纹理未加载glActiveTexture

时间:2019-08-07 20:41:18

标签: c opengl

我一直在尝试显示我的纹理时遇到一些问题。我试图初始化纹理,然后在我的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。

0 个答案:

没有答案