C++ GLSL变换反馈返回数组与向量

C++ GLSL变换反馈返回数组与向量,c++,c,opengl,vector,glsl,C++,C,Opengl,Vector,Glsl,当我显式声明一个结构数组时,我的转换反馈循环工作得非常好 struct FeedBackInfo { float area; float Pabs; float Pref; } FeedBackInfo FBI[36]; .... .... glGetBufferSubData(GL_TRANSFORM_FEEDBACK_BUFFER, 0,sizeof(FBI), FBI); 但是,我不想将自己限制在为

当我显式声明一个结构数组时,我的转换反馈循环工作得非常好

struct FeedBackInfo
    {
            float area;
            float Pabs;
            float Pref;
    }

FeedBackInfo FBI[36];
....
....
glGetBufferSubData(GL_TRANSFORM_FEEDBACK_BUFFER, 0,sizeof(FBI), FBI);
但是,我不想将自己限制在为示例程序创建的36点框内,并且能够根据加载的模型进行放大。但是,当我尝试切换到可以动态分配的向量对象时,我无法使变换反馈起作用

struct FeedBackInfo
{
    float area;
    float Pabs;
    float Pref;
};

std::vector<FeedBackInfo> FBI;
FBI.resize(36);
....
....
这将只填充偏移庄园中的少数值

glGetBufferSubData(GL_TRANSFORM_FEEDBACK_BUFFER, 0,sizeof(FBI), &FBI[0]);
我甚至不能将0分到35分,并填写所有数据,只填写区域

我不明白为什么结构数组的显式声明可以顺利工作,为什么将其转换为向量对象突然不起作用

有没有一种方法可以动态地分配反馈信息的结构,并且仍然能够顺利地处理转换反馈循环

std::vector<FeedBackInfo> FBI;
FBI.resize(36);

我将您的
&FBI[0]
替换为
FBI.data()
,因为我认为阅读效果更好。

您是否尝试过使用迭代器:即
FBI.begin()
?将迭代器放置在glGetBufferSubData调用中的位置?我必须使用sizeof,因为sizeof返回FBI.size()的内存占用空间将返回向量的长度。放入迭代器也不起作用。呃,因为
sizeof(vector)
没有给出存储在向量中的数据的内存占用?工作得很好!非常感谢。
std::vector<FeedBackInfo> FBI;
FBI.resize(36);
glGetBufferSubData(GL_TRANSFORM_FEEDBACK_BUFFER, 0, FBI.size()*sizeof(FeedBackInfo), FBI.data());