HLFX.Ru Forum
Показать все 3 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- OpenGL (https://hlfx.ru/forum/forumdisplay.php?forumid=7)
-- uniform vec3 в GLSL (https://hlfx.ru/forum/showthread.php?threadid=1876)


Отправлено axer 21-06-2009 в 12:24:

uniform vec3 в GLSL

Как-то странно себя ведут шейдеры. Не получается передать в шейдер из основной программы параметр типа vec3 (позиция камеры, позиция источника света и т.п.). В вертексном шейдере переменная объявлена как uniform vec3 lightPosition; Дальше в программе пишу

C++ Source Code:
lightLoc = glGetUniformLocationARB(progObj, "lightPosition");

Затем я передаю в шейдер параметр функцией
C++ Source Code:
float light[] = {5000.0f, 1000.0f, 5000.0f};
glUniform3fvARB(lightLoc, 1, light);

но в шейдере lightPosition всё равно равно 0 В чём может быть проблема?


Отправлено XaeroX 21-06-2009 в 12:32:

Шейдер собрался правильно? Validate сделал?
Передаешь после вызова glUseProgramObjectARB?

__________________

xaerox on Vivino


Отправлено axer 21-06-2009 в 13:43:

Да, всё правильно. Шейдер даже работает, но lightPosition = (0, 0, 0)

Добавлено 21-06-2009 в 16:43:

Так, с этим разобрался. Теперь проблема другая - uniform sampler2D texture; не передаётся. Точнее, вызываю glUniform1iARB(textureLoc, tex); (tex - номер текстуры), всё нормально. Но потом вызываю glDrawArrays и программа завершается с ошибкой доступа.


Временная зона GMT. Текущее время 18:14.
Показать все 3 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024