簡體   English   中英

OpenGL和GLSL:灰度紋理未顯示

[英]OpenGL & GLSL: Greyscale texture not showing

我正在嘗試在屏幕上顯示灰度紋理。 我通過創建我的紋理

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);
}

我知道三角形可以正確渲染(例如,如果我對vrag4_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); 解決了問題。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM