在着色器中读取浮动纹理,值始终为零

问题描述 投票:0回答:1

我正在尝试将 float buf(第 1020 行。第 4 列)数据发送到着色器

以下是我的c++代码

float angle_maps[1020 * 4];

GLuint angle_maps_distort_texture;

glGenTextures(1, &angle_maps_distort_texture);
glBindTexture(GL_TEXTURE_2D, angle_maps_distort_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);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 4);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F_ARB, 1020, 1, 0, GL_RGBA, GL_FLOAT, angle_maps);

glActiveTexture(GL_TEXTURE4);
glBindTexture(GL_TEXTURE_BUFFER, angle_maps_distort_texture);
m_shaderProgram->set_uniform_value("angle_maps_distort_text", 4);

以下是碎片着色器

uniform sampler2D angle_maps_distort_text;

float theta_degree = degrees(theta);
//The range of values returned by theta_degree is [0.0, 102.0]
vec4 factor = texture(angle_maps_distort_text, vec2(theta_degree/102.0, 0.0));

我确实认为因子值始终为零。可能发送纹理的某个步骤是错误的,但我不知道问题出在哪里,有没有人有类似的问题,请帮助我,谢谢

c++ glsl
1个回答
0
投票

我发现了这个问题。 glBindTexture(GL_TEXTURE_BUFFER,angle_maps_ Disture_texture); 将 GL_TEXTURE_BUFFER 更改为 GL_TEXTURE_2D

© www.soinside.com 2019 - 2024. All rights reserved.