Здравствуйте! Сразу к делу:
В вершинном шейдере "обычными"(стандартными - не знаю как называется) являются команды:
void main(void) { gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; gl_FrontColor = gl_Color; gl_TexCoord[0] = gl_MultiTexCoord0; }
То есть с помощь них мы получаем обычную картинку(как без шейдеров).
С этим можно ковыряться и т.д. - то есть делать свой шейдер.
Внимание вопрос(точнее просьба):
Приведите, пожалуйста, "обычный"(стандартный) кусок кода для ФРАГМЕНТНОГО шейдера. (То есть какие надо команды использовать для получения нормальной картинки, чтобы с ними потом возиться?)
Очень надо! =)
начни с gl_FragColor = texture2D( TexDiffuse, gl_TexCoord[0].st );
Ничего нет.
(Зачем вообще нужна текстура диффузии?)
Вы имеете ввиду gl_FragColor?
Что-то типа такого надо:
void main(void) { gl_FragColor = ??? * gl_Color; }
Напишите пожалуйста!
_Goshan_
> Вы имеете ввиду gl_FragColor?
да
_Goshan_
> Ничего нет.
> (Зачем вообще нужна текстура диффузии?)
а это зачем gl_TexCoord[0] = gl_MultiTexCoord0; ?
Затем, что без этого текстуры не заполняются - на экране разноцветные примитивы без текстур.
Вы не могли бы привести полный код?
_Goshan_
> Вы не могли бы привести полный код
начни с gl_FragColor = texture2D( TexDiffuse, gl_TexCoord[0].st );
должна быть просто текстура...
вообще, полно примеров же
Решение нашлось, но я не понимаю смысла!
1) мне пришлось сделать Uniform "Textura" посылать значение "0"
2) а в Фрагментном шейдере использоват "Textura" после texture2D(
3) всё работает, отлично.
Парадокс: при замене "Textura" на 0 фрагшейдер не работает.
Понял! Отправляется не значение а указатель на значение! ))) Ура!!
_Goshan_
> Решение нашлось, но я не понимаю смысла!
:):):)
Эх, мне бы так сейчас на работе !
_Goshan_
Я мало что понял... Но юниформ самплер задаётся не ИД текстуры, а номер текстурного юнита...
Метод перебора не совместим с большими проектами! ))
Я думаю это вмести с первым кодом надо отправить в статью про GLSL, для новичков. Именно это мне было непонятно.
uniform sampler2D dgTexture; void main(void) { vec4 tColor = texture2D( dgTexture, gl_TexCoord[0].st ); // всевозможные изменения tColor gl_FragColor = tColor; }
Подскажите, люди! Почему при включении шейдеров у меня исчезло солнце?(состоящий из треугольников яркий круг, непрозрачный в середине и прозрачный на концах)
_Goshan_
> Почему при включении шейдеров у меня исчезло солнце?
Странно, у меня Солцне (состоящее из полностью непрозрачной сферы, которая в свою очередь состоит их полностью непрозрачных треугольников) наоборот - при отключении шейдеров пропадает. В чем дело?
Какие шейдеры, как ты их "включаешь"? Как рисуешь Солнце?
Тема в архиве.