gpt4 book ai didi

c++ - OpenGL 和 GLSL : Greyscale texture not showing

转载 作者:行者123 更新时间:2023-11-28 07:16:24 26 4
gpt4 key购买 nike

我正在尝试在屏幕上显示灰度纹理。我通过

创建我的纹理
glGenTextures(1, &heightMap);
glBindTexture(GL_TEXTURE_2D, heightMap);
glTexImage2D(GL_TEXTURE_2D, 0, GL_R32F, 512, 512, 0, GL_RED, GL_FLOAT, colorData);

colorData 是一个 float [512*512],其值介于 0.0 和 1.0 之间。

渲染时,我使用:

glBindTexture(GL_TEXTURE_2D, heightMap);
glUniform1i(shader.GetUniformLocation("textureSampler"), 0);

shader.GetUniformLocation 是我们在大学使用的一个库的函数。它本质上与 glGetUniformLocation(shader, "textureSampler") 相同,所以不要被它混淆。

我通过三角形带渲染两个三角形。我的片段着色器是:

#version 330
layout(location = 0) out vec4 frag_color;
in vec2 texCoords;
uniform sampler2D textureSampler;

void main()
{
frag_color = vec4(texture(textureSampler, texCoords).r, 0, 0, 1);
}

我知道三角形渲染正确(例如,如果我对 frag_color 使用 vec4(1.0, 0, 0, 1),我会得到一个完全红色的屏幕)。但是,对于上面的行,我只能得到一个完全黑屏。每个纹理值似乎都是 0.0。

有没有人知道我做错了什么?是那几行代码有错误,还是这些代码完全正确,但错误出在其他地方?

最佳答案

正如下面的评论之一所说,设置 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);和 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);解决了问题。 :)

关于c++ - OpenGL 和 GLSL : Greyscale texture not showing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20173608/

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