不使用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库来加载纹理图像数据。你可以根据自己的需要选择合适的库来加载纹理图像数据。

相关内容

热门资讯

玩家必看教程!大赢家跑得快开挂... 玩家必看教程!大赢家跑得快开挂功能技巧,大赢家跑得快确实真的是有开挂技巧(有辅助挂教学)1、在大赢家...
玩家攻略推荐!德州扑克辅助器功... 玩家攻略推荐!德州扑克辅助器功能攻略,德州扑克好像有辅助器攻略(真的有辅助挂)1)德州扑克免费钻石:...
推荐一款!一起斗地主辅助功能神... 推荐一款!一起斗地主辅助功能神器,一起斗地主其实存在有辅助神器(有辅助挂教学)1、首先打开一起斗地主...
必看攻略!芷芷休闲透视挂功能软... 必看攻略!芷芷休闲透视挂功能软件,芷芷休闲都是有透视挂软件(有辅助挂方式)1、芷芷休闲有没有辅助教程...
2分钟细说!宝宝浙江开挂功能a... 2分钟细说!宝宝浙江开挂功能app,宝宝浙江都是是有开挂app(有辅助挂教学)小薇(辅助器软件下载)...
揭秘关于!棋牌游辅助功能攻略,... 揭秘关于!棋牌游辅助功能攻略,棋牌游竟然真的有辅助攻略(有辅助挂攻略)1.棋牌游 选牌创建新账号,点...
实测揭晓!七月游戏透视功能ap... 实测揭晓!七月游戏透视功能app,七月游戏确实是有透视app(有辅助挂猫腻)1、完成七月游戏辅助器v...
玩家必看科普!如意棋牌辅助器功... 玩家必看科普!如意棋牌辅助器功能工具,如意棋牌其实是真的有辅助器工具(有辅助挂详细)如意棋牌能透视中...
最新技巧!鼎盛棋牌开挂功能插件... 最新技巧!鼎盛棋牌开挂功能插件,鼎盛棋牌总是是有开挂插件(有辅助挂神器)1、在鼎盛棋牌插件功能辅助器...
揭秘一下!微友约局开挂功能教程... 揭秘一下!微友约局开挂功能教程,微友约局总是有开挂教程(真实有辅助挂)1、揭秘一下!微友约局开挂功能...