相同的偏移量在OpenGL中的共享型统一缓冲对象中为4个不同的浮点数

same offset in a shared-type uniform buffer object in OpenGL for 4 different floats

本文关键字:对象 浮点数 缓冲 4个 共享型 偏移量 OpenGL      更新时间:2023-10-16

我目前正在编写一个使用新的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 ()

程序返回

<>之前原点:0颜色:16强度:48方向:32Illu_angle: 48Max_illu_angle: 48线性耗散:48之前

我不能使用我的强度,illu_angle, max_illu_angle和linear_耗散变量(好吧,只有一个:D)。

考虑到origin, colordirection都在16字节上对齐,我假设OpenGL将最后四个浮点合并为单个vec4

您是否真的尝试使用其中一个来验证它们是否有别名?