2013-11-24 4 views
-1

Я пытаюсь показать текстуру серого на экране. Я создаю свою текстуру через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.

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

+2

Вы устанавливаете 'glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);' и 'glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);'? – leemes

+0

О, мой, спасибо. :) Теперь, когда я это делаю, все работает отлично! – user2623674

ответ

1

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

Смежные вопросы