不使用uniform如何将纹理传递给GLSL着色器?
创始人
2024-12-29 12:30:11
0

在OpenGL中,可以通过使用glTexImage2D函数将纹理传递给GLSL着色器,而不使用uniform变量。以下是一个示例代码:

// 创建纹理对象并绑定
GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);

// 设置纹理参数
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

// 加载纹理图像
int width, height, nrChannels;
unsigned char *data = stbi_load("texture.jpg", &width, &height, &nrChannels, 0);

// 将纹理图像传递给OpenGL
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
glGenerateMipmap(GL_TEXTURE_2D);

// 释放图像数据
stbi_image_free(data);

// 在着色器中使用纹理
glUseProgram(shaderProgram);
glBindTexture(GL_TEXTURE_2D, texture);
glUniform1i(glGetUniformLocation(shaderProgram, "textureSampler"), 0); // 设置纹理单元为0

// 在片段着色器中获取纹理颜色
#version 330 core
out vec4 FragColor;
in vec2 TexCoord;

uniform sampler2D textureSampler;

void main()
{
    FragColor = texture(textureSampler, TexCoord);
}

在上述代码中,我们首先创建并绑定一个纹理对象。然后,设置纹理参数,例如循环方式和过滤方式。接着,加载纹理图像数据,并使用glTexImage2D函数将其传递给OpenGL。最后,将着色器程序绑定,并将纹理绑定到纹理单元。在片段着色器中,我们使用texture函数从纹理中获取颜色。

请注意,上述代码中使用了stb_image库来加载纹理图像数据。你可以根据自己的需要选择合适的库来加载纹理图像数据。

相关内容

热门资讯

黑科技辅助!微扑克ai辅助神器... 黑科技辅助!微扑克ai辅助神器,(微扑克ai智能)原来真的有挂,攻略教程(方式)-哔哩哔哩是一款可以...
黑科技辅助!aapoker透明... 黑科技辅助!aapoker透明,(AAPoKer线上德州)原来真的有挂,规律教程(方式)-哔哩哔哩;...
黑科技辅助!we-poker有... 黑科技辅助!we-poker有挂,(WePoKe ai)原来真的有挂,安装教程(有挂工具)-哔哩哔哩...
黑科技辅助!Wepoke辅助器... 黑科技辅助!Wepoke辅助器,(WePoKe链接)原来真的有挂,详细教程(有挂辅助)-哔哩哔哩;W...
黑科技辅助!wepoke辅助插... 黑科技辅助!wepoke辅助插件安装,(Wepoke实测)原来真的有挂,解密教程(有挂方式)-哔哩哔...
黑科技辅助!WePoKe外挂,... 黑科技辅助!WePoKe外挂,(WePoKe辅助v3.0)原来真的有挂,透明教程(确实有挂)-哔哩哔...
黑科技辅助!aa扑克辅助,(A... 黑科技辅助!aa扑克辅助,(AAPoKer靠谱)原来真的有挂,玩家教程(方针)-哔哩哔哩;亲真的是有...
黑科技辅助!wepoke有插件... 黑科技辅助!wepoke有插件,(WePoKe稳赢)原来真的有挂,可靠教程(有挂解密)-哔哩哔哩;W...
黑科技辅助!wepoke辅助软... 黑科技辅助!wepoke辅助软件靠谱,(Wepoke代码)原来真的有挂,必赢方法(有挂讲解)-哔哩哔...
黑科技辅助!德扑ai工具,(德... 黑科技辅助!德扑ai工具,(德扑ai俱乐部)原来真的有挂,黑科技教程(存在)-哔哩哔哩;德扑ai俱乐...