gpt4 book ai didi

opengl - 在 OpenGL 2.1 中使用纹理之前是否需要调用 glEnable(GL_TEXTURE)?

转载 作者:行者123 更新时间:2023-12-04 15:35:15 26 4
gpt4 key购买 nike

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

更新:

我正在使用 OpenGL 2.1 for Desktop,我的步骤是:

  • 加载 bmp 24 位图像(我检查了 gDebuger,它显示我的纹理正常,所以我确定我的加载图像过程没有失败)。
  • 调用 init() 中的几个 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_scene() 中:
    glUseProgram(program);
    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D, texture_id);
    glUniform1i(uniform_texture, 0);
    ...
  • 顶点着色器(版本 120):
    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);
    }
  • 最佳答案

    如果您在 OpenGL 2.1 中使用 GLSL 着色器,则调用 glEnable(GL_TEXTURE_*)没有任何意义。您在片段着色器中应用纹理。

    如果您打算继续使用 OpenGL 3.x 核心配置文件,请记住 glEnable(GL_TEXTURE_*)已弃用。

    关于opengl - 在 OpenGL 2.1 中使用纹理之前是否需要调用 glEnable(GL_TEXTURE)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14179497/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com