我正在开发一个简单的程序,首先初始化一组 VertexPos 结构,每个结构在多维数据集的构造函数中都携带一个 XMFLOAT3 和 XMFLOAT2。然后,RenderCube 函数读取这些顶点并将立方体显示到屏幕上。
当我在 RenderCube 函数中声明一个数组(相同类型)时,我的代码工作得很好,如下所示:
VertexPos vertices[] = {
{XMFLOAT3( -1.0f, 1.0f, -1.0f ), XMFLOAT2( 0.0f, 0.0f )},
...
问题是,当我尝试从立方体对象中读取顶点[],在下面定义和初始化(为简洁起见,下面只定义了立方体的第一个顶点),在查看立方体->顶点时,我在调试器中看到了疯狂的值,如:
cube->vertices[0].pos.x=5.736e-039#DEN
渲染立方体():
bool Render::RenderCube(Cube* cube)
{
...
D3D11_SUBRESOURCE_DATA resourceData;
ZeroMemory(&resourceData, sizeof(resourceData));
resourceData.pSysMem = cube->vertices;
}
立方体.h
struct VertexPos
{
XMFLOAT3 pos;
XMFLOAT2 tex0;
VertexPos(){}
VertexPos(XMFLOAT3 p, XMFLOAT2 t)
{
pos = p;
tex0 = t;
}
};
class Cube
{
public:
Cube::Cube(LPCWSTR textureFileName);
VertexPos vertices[NUMBER_OF_VERTICES];
LPCWSTR getTextureFileName();
private:
LPCWSTR textureFileName;
};
多维数据集.cpp:
Cube::Cube(LPCWSTR textureFileName)
{
//set texture
this->textureFileName = textureFileName;
vertices[0] = VertexPos(XMFLOAT3( -1.0f, 1.0f, -1.0f ), XMFLOAT2( 0.0f, 0.0f ));
}
LPCWSTR Cube::getTextureFileName(){
return textureFileName;
}
我究竟做错了什么?