2015-07-26 3 views
0

У меня проблема, если я пытаюсь отобразить текстурированный квадратик, на экране ничего не появляется. Простой цветной квадроцикл отлично работает. Кажется, что только если я использую функцию «texture2D», ничего не работает. Но я не получаю сообщение об ошибке, если компилирую шейдеры или свяжу программу.Java Android OpenGL ES 2.0 - фрагмент шейдерной текстуры2D не работает

Эта работа (Красный квад появляются на экране):

uniform sampler2D un_TextureUnit; 

varying vec2 fr_UV; 

void main() 
{ 
    gl_FragColor = vec4(1, 0, 0, 1); 
} 

Это не работает (ничего появляется на экране):

uniform sampler2D un_TextureUnit; 

varying vec2 fr_UV; 

void main() 
{ 
    gl_FragColor = texture2D(un_TextureUnit, fr_UV); 
} 

Это не работает (ничего не отображается на на экране тоже):

uniform sampler2D un_TextureUnit; 

varying vec2 fr_UV; 

void main() 
{ 
    vec4 c = texture2D(un_TextureUnit, vec2(0.5, 0.5)); 
    gl_FragColor = vec4(1, 0, 0, 1); 
} 

Обратите внимание, что я только изменил шейдер и ничего не добавил в код. Только если я использую функцию «texture2D», шейдер, похоже, не компилируется, но я не получаю сообщение об ошибке.

ответ

0

Мой пиксельный шейдер работает отлично рисовать текстуры на треугольники:

precision highp float; 

uniform sampler2D u_texture0; 
varying vec2 v_textureCoordinate0; 


void main()         
{     
    gl_FragColor = texture2D(u_texture0, v_textureCoordinate0); 
} 

Таким образом, я считаю, что проблема не в вашем пиксельный шейдер (который похож на мой), но в коде, чтобы подготовить шейдер , Я предлагаю вам проверить:

  • если ваш код, чтобы связать текстуру правильно (проверьте GLES20.glVertexAttribPointer, GLES20.glEnableVertexAttribArray)
  • если есть лицо забой

Во всяком случае, here есть хороший учебник, как рисовать треугольник с текстурой.

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