одно и то же смещение в объекте единого буфера общего типа в OpenGL для 4 различных операций с плавающей запятой - PullRequest
0 голосов
/ 15 июля 2011

В настоящее время я программирую фонетный шейдер, использующий новую функцию ogl3, ubos.Мой буферный объект в шейдере:

`

Uniform Light {
   vec3 origin; 
   vec3 color; 
   vec3 direction;
   float intensity; 
   float linear_dissipation; 
   float illu_angle; 
   float max_illu_angle;
} Light[8];

`

Когда я вычисляю различные смещения с помощью функции

glGetActiveUniformsiv()

моя программа возвращает

origin : 0
color : 16
intensity : 48
direction : 32
illu_angle : 48
max_illu_angle : 48
linear_dissipation : 48

Я не могу использовать переменные интенсивности, illu_angle, max_illu_angle и linear_dissipation (ну, только одну из них: D).

1 Ответ

1 голос
/ 15 июля 2011

Учитывая, что origin, color и direction все выровнены по 16 байтов, я предполагаю, что OpenGL объединяет последние четыре числа с плавающей точкой в ​​один vec4.

Вы на самом делепопробуйте использовать один из них, чтобы убедиться, что они являются псевдонимами или нет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...