在OpenGL 2.1中使用纹理之前,是否需要调用glEnable(GL_纹理)?

在OpenGL 2.1中使用纹理之前,是否需要调用glEnable(GL_纹理)?,opengl,textures,Opengl,Textures,在OpenGL 2.1+中,在使用纹理之前是否需要调用glEnable(GL\u纹理)?如果我们在纹理方面遇到问题,可能是什么原因 更新: 我将OpenGL 2.1用于桌面,我的步骤是: 加载bmp 24位图像(我签入了gDebuger,它显示了我的纹理,所以我确信加载图像的过程没有失败) 在init()procedude中调用几个OpenGL函数: glGenTextures(1, &texture_id); glBindTexture(GL_TEXTURE_2D, texture_i

在OpenGL 2.1+中,在使用纹理之前是否需要调用
glEnable(GL\u纹理)
?如果我们在纹理方面遇到问题,可能是什么原因

更新:

我将OpenGL 2.1用于桌面,我的步骤是:

  • 加载bmp 24位图像(我签入了gDebuger,它显示了我的纹理,所以我确信加载图像的过程没有失败)

  • init()
    procedude中调用几个OpenGL函数:

    glGenTextures(1, &texture_id);
    glBindTexture(GL_TEXTURE_2D, texture_id);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image_width, image_height, 0, GL_BGR, GL_UNSIGNED_BYTE, image_data);
    
  • 在draw_场景()中:

  • 顶点着色器(版本120):

  • 片段着色器:

    uniform sampler2D my_texture;
    varying vec2 fragTexCoord;
    
    void main()
    {
        gl_FragColor = texture2D(my_texture, fragTexCoord);
    }
    

  • 如果在OpenGL 2.1中使用GLSL着色器,那么调用
    glEnable(GL_TEXTURE.*)
    没有任何意义。在片段着色器中应用纹理


    如果您打算继续使用OpenGL 3.x核心配置文件,请记住
    glEnable(GL\u纹理)
    已被弃用。

    如果您使用的是着色器,那么我怀疑
    glEnable(GL\u纹理)
    是否有任何作用。你能给我们一个你得到的屏幕截图,或者更详细地描述你的输出问题吗?我想我的一些参数是错误的,我已经清除并重写了所有的纹理代码,现在它工作了!有谁能告诉我这两种方法有什么不同吗。。。在
    内部格式中
    ?如果我在
    internalFormat
    中使用了
    GL\u RGB
    ,那么我可以访问片段着色器中的alpha元素,如:
    texture2D(myTexture,texCoord).a
    attribute vec3 vPos;
    attribute vec2 vTexCoord;
    
    uniform mat4 MV;
    uniform mat4 Projection;
    
    varying vec2 fragTexCoord;
    
    void main()
    {
        fragTexCoord = vTexCoord;
        gl_Position = Projection * MV * vPos;
    }
    
    uniform sampler2D my_texture;
    varying vec2 fragTexCoord;
    
    void main()
    {
        gl_FragColor = texture2D(my_texture, fragTexCoord);
    }