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

相关内容

热门资讯

五分钟安卓版本!wePoKe辅... 五分钟安卓版本!wePoKe辅助挂(透视)德州ai智能辅助(总是真的有挂)1、德州aiai机器人多个...
九分钟苹果版!we辅助poke... 九分钟苹果版!we辅助poker辅助挂(透视)AA POKER下载软件(果然真的有挂)1、这是跨平台...
6分钟有挂!wpK辅助挂(透视... 6分钟有挂!wpK辅助挂(透视)德扑之星开桌可以设置(其实真的有挂);人气非常高,ai更新快且高清可...
九分钟口控制!wepoker辅... 九分钟口控制!wepoker辅助挂(透视)云扑克辅助器苹果(一贯真的有挂);无聊就玩这款wepoke...
轻量版八分钟!wepoke有挂... 轻量版八分钟!wepoke有挂网上德州微扑克辅助(其实真的有挂)-知乎1、用户打开应用后不用登录就可...
挂一分钟!来玩德州app服务器... 挂一分钟!来玩德州app服务器在哪里德州aa辅助(果真真的有挂)-今日头条小薇(透视辅助)致您一封信...
插件1分钟!wpk ai是有w... 插件1分钟!wpk ai是有wopoker德州真的有挂(的确真的有挂)-哔哩哔哩1、完成wopoke...
安卓版本6分钟!轰趴大菠萝十三... 安卓版本6分钟!轰趴大菠萝十三水辅助德州ai智能辅助(果然真的有挂)-知乎1、轰趴大菠萝十三水辅助系...
ai辅助五分钟!微扑克的辅助工... 您好,云扑克是否有外挂这款游戏可以开挂的,确实是有挂的,需要了解加微【487309276】很多玩家在...
新版八分钟!aapoker辅助... 新版八分钟!aapoker辅助工具wpk俱乐部有外挂(好像真的有挂)-小红书1、下载好wpk俱乐部有...