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());