我尝试(基本上)为 std::vector (它的 D3D10 渲染)制作一个 Setter 方法
void GraphicsClass::BeginFrame(vector<LightClass> const &vlights)
{
lights = vlights;
其中lights是GraphicsClass的私有成员,声明:
vector<LightClass> lights;
现在,数组的属性被复制;但元素lights[0], lights[1]
等包含垃圾。我使用 Visual Studio 调试器检查了这一点。
我显然可以通过使用来解决
void GraphicsClass::BeginFrame(vector<LightClass> const &vlights) {
int size = vlights.size();
int i;
lights.resize(size);
for (i = 0; i < size; i++)
lights[i] = vlights[i];
但我不喜欢我不理解这个话题,而且这段代码似乎慢了一点。
提前感谢您的回答!
根据要求的 LightClass:
class LightClass
{
public:
LightClass(void);
~LightClass(void);
void SetDiffuseColor(float, float, float, float);
void SetDirection(float, float, float);
D3DXVECTOR4 GetDiffuseColor();
D3DXVECTOR3 GetDirection();
private:
D3DXVECTOR4 m_diffuseColor;
D3DXVECTOR3 m_direction;
};
构造函数和析构函数都是空的,这是一个错误(我从只创建指针的类中复制了它。比如 Type *thing。我是 OOP 的新手)
不过,我可能会将矢量更改为矢量。