GLSL Fragment Shader текстурирует цилиндр, только становится серым? - PullRequest
1 голос
/ 05 ноября 2010

Хорошо, пытаясь отладить еще одну проблему, я решил убедиться, что моя текстура правильно рендерилась в моем фрагментном шейдере.Но это не так.Все, что я получаю, это серый цвет на всем моем цилиндре.Если я закомментирую "setShaders ()", то текстура будет правильно применена в конвейере с фиксированными функциями.

Все, что я делаю в своем фрагментном шейдере, это присвоение значения текстуры цвету фрагмента.Это должно работать, верно?Клянусь, у меня есть все кусочки на месте.grr

Вот код перед тем, как я нарисую свой цилиндр:

vertexShader = "fish.vert";
fragmentShader = "fish.frag";

glBindTexture(GL_TEXTURE_2D, checkerTexture);
glEnable(GL_TEXTURE_2D);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);

setShaders();

GLint loc1;
loc1 = glGetUniformLocation(shaderProgram,"fish_y_offset");
glUniform1i(loc1,0);    

glLightfv(GL_LIGHT0, GL_DIFFUSE, white);
glLightfv(GL_LIGHT0, GL_AMBIENT, white);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glLightfv(GL_LIGHT0, GL_SPECULAR, white);
glMaterialfv(GL_FRONT, GL_SHININESS, highShine);

drawCylinder();

А вот мой шейдер фрагмента рыбы:

uniform float spec_factor;
uniform sampler2D fish_y_offset;

varying vec3 lightDir,normal;
varying vec4 mycolor;
void main()
{
    float angle, shiny;
    angle = max(0.0, dot(normal, lightDir));


    shiny = pow(angle, gl_FrontMaterial.shininess);

    gl_FragColor = texture2D(fish_y_offset, gl_TexCoord[0].st);


    //gl_Color;//(gl_LightSource[0].ambient * gl_FrontMaterial.ambient +
                    //gl_LightSource[0].diffuse * gl_FrontMaterial.diffuse * angle +
                    //gl_LightSource[0].specular * gl_FrontMaterial.specular * shiny * spec_factor);

}

1 Ответ

1 голос
/ 05 ноября 2010

положить

gl_TexCoord[0] = gl_MultiTexCoord0;

в вершинный шейдер, чтобы исправить.

человек, у меня есть много, чтобы узнать о glsl ....

...