Hola a todos! Quiero hacer algunas cosas con shaders, en Opengl SL. Mi tarjeta grafica es un poco malilla asi que tendre que comprarme una nueva. Si me podeis recomendar alguna que no sea muy cara y que este bien.
Tambien queria preguntaros por un problema que tengo. Tengo un vertex shader con lo siguiente:
#version 110
uniform vec4 azul;
attribute vec4 attribColor;
uniform sampler2D tex;
void main(){
gl_FrontColor=texture2D(tex,gl_TexCoord[0].st);
gl_TexCoord[0]= gl_MultiTexCoord0;
gl_Position= ftransform();
}
Lo que quiero es usar el shader para modificar el color cogiendolo de la textura. El problema que tengo es que al introducir la instruccion texture2D el shader si es correcto, pero el programa al que enlazo el shader deja de ser valido. Alguien sabe porque puede ser? Puede ser por la tarjeta (Geforce MX440)?
Gracias.
ese shader esta mal, creo que antes de comenzar a programar deberias mirar un poco como van los shaders, y sobretodo la diferencia entre pixel y vertex shader ya que ahí estas mezclando ambos.
Hola de nuevo. Se que hay dos tipos de shader, pero debido a mi tarjeta solo puedo utilizar el vertex shader. ¿Por que esta mal? ¿No se puede usar texture2D en vertex shader? En el libro que me he leido pone que se puede usar tanto en vertex shader, como en fragment shader. Gracias por contestar.
Los accesos a textura desde un vertex shader sólo se pueden llevar a cabo a través de shaders 3.0, si no recuerdo mal.
Saludos.
Ok, muchas gracias. Entonces creo que es por eso. En cuanto a una tarjeta grafica decente y no muy cara?
Cita de: "BeRSeRKeR"Los accesos a textura desde un vertex shader sólo se pueden llevar a cabo a través de shaders 3.0, si no recuerdo mal.
Saludos.
Teóricamente es así, pero parece que a algunos conocidos fabricantes no les ha salido implementarlo.
Ups, me disculpo por mi anterior post, me pareció leer gl_FragColor donde pone gl_FrontColor y por eso pensé que mezclabas ambos shaders.
De todos modos no es muy util (salvo para situaciones muy complejas) leer colores en el vertex shader, lo obvio sería dejar que sea el fixed pipeline el que lo haga a partir de las coordenadas de textura que dejes desde el vertex shader.
Ok, no pasa nada si yo no es que sepa mucho, por eso te preguntaba que porque estaba mal, porque yo lo veia bien. Ahora mismo solo estoy haciendo pruebas para ir familiarizandome con los shaders. Mas adelante ya me metere con mas profundidad. Muchas gracias a todos por contestar.