Я пытаюсь показать текстуру серого на экране. Я создаю свою текстуру черезOpenGL & GLSL: текстура серого не отображается
glGenTextures(1, &heightMap);
glBindTexture(GL_TEXTURE_2D, heightMap);
glTexImage2D(GL_TEXTURE_2D, 0, GL_R32F, 512, 512, 0, GL_RED, GL_FLOAT, colorData);
colorData - это поплавок [512 * 512] со значениями от 0.0 до 1.0.
При визуализации, я использую:
glBindTexture(GL_TEXTURE_2D, heightMap);
glUniform1i(shader.GetUniformLocation("textureSampler"), 0);
shader.GetUniformLocation является функцией библиотеки мы используем в университете. Это по существу то же самое, что и glGetUniformLocation (шейдер, «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);
}
Я знаю, что треугольники оказываются правильно (например, если я использую vec4 (1,0, 0, 0, 1) для frag_color, я получаю полностью красный экран). Однако с приведенной выше строкой я получаю только черный экран. Каждой текстуре значение 0.0.
У кого-нибудь есть идея, что я сделал неправильно? Существуют ли ошибки в нескольких строках кода или они полностью правильны, а ошибка - где-то в другом месте?
Вы устанавливаете 'glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);' и 'glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);'? – leemes
О, мой, спасибо. :) Теперь, когда я это делаю, все работает отлично! – user2623674