OpenGL & amp; 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.

У кого-нибудь есть идеи, что я сделал не так? Есть ли ошибки в этих нескольких строках кода или они абсолютно правильные, а ошибка в другом месте?

-1

Решение

Как сказано в одном из комментариев ниже, настройка glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); и glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); решает проблему. 🙂

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]