我正在努力寻找一种正确快速的方法来实现游戏引擎中的动态光,但有一些问题(我希望我的解释足够好,因为我不是英语母语)。
问题是:
我需要一种存储向量数组的方法(每个向量有4个浮点)
在堆栈上
因此,编译器可以通过sizeof运算符识别其大小,我可以轻松访问数据,最简单的方法是:
PointLight pointLights[NR_POINT_LIGHTS];
但我想在NR\u POINT\u处添加灯光,因此随着我添加更多灯光,NR\u POINT\u灯光可能会增加,但当然,NR\u POINT\u灯光必须是静态常数(我猜),我有一个这样的函数:
class LightSystem{
void BakeMyLights()
{
struct
{
}ubo;
MyLovely_OpenGL_And_DirectX_UBO.Update(&ubo,sizeof(ubo));
}
private:
int nooflights;
};
我已经使用了一段时间(我想替换的旧代码)。。。
struct SHADERUBO_t {
Math::Vector4 camPosandMaterialshininess;
_PointLight pointLights[4];
}ShaderUBO;
MyLovely_OpenGL_And_DirectX_UBO.Update(&ShaderUBO,sizeof(ShaderUBO));
这个问题
有没有正确的方法来实现它,以便每次“烘焙”系统时,我都可以创建一个包含静态数组的结构,该数组存储在堆栈上并保持其活动状态???
此外,上面显示的所有代码都是伪代码,而不是实际实现。
谢谢