Показать все 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)
uniform vec3 в GLSL
Как-то странно себя ведут шейдеры. Не получается передать в шейдер из основной программы параметр типа vec3 (позиция камеры, позиция источника света и т.п.). В вертексном шейдере переменная объявлена как uniform vec3 lightPosition; Дальше в программе пишу
lightLoc = glGetUniformLocationARB(progObj, "lightPosition"); |
float light[] = {5000.0f, 1000.0f, 5000.0f}; |
glUniform3fvARB(lightLoc, 1, light); |
Шейдер собрался правильно? Validate сделал?
Передаешь после вызова glUseProgramObjectARB?
__________________
Да, всё правильно. Шейдер даже работает, но 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