我正在尝试将 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));
我确实认为因子值始终为零。可能发送纹理的某个步骤是错误的,但我不知道问题出在哪里,有没有人有类似的问题,请帮助我,谢谢
我发现了这个问题。 glBindTexture(GL_TEXTURE_BUFFER,angle_maps_ Disture_texture); 将 GL_TEXTURE_BUFFER 更改为 GL_TEXTURE_2D