我正在處理一個簡單的程序,其中我通過初始化每個在多維數據集的構造函數中攜帶XMFLOAT3和XMFLOAT2的VertexPos結構數組開始。然後,RenderCube函數讀取這些頂點並將立方體顯示在屏幕上。沒有正確初始化的結構的類數組
的RenderCube函數I內有工作完全正常,當我聲明(同一類型的)的陣列中的代碼如下所示:
VertexPos vertices[] = {
{XMFLOAT3(-1.0f, 1.0f, -1.0f), XMFLOAT2(0.0f, 0.0f)},
...
問題是,當我試圖讀取從立方體的頂點[]對象,定義和下面(僅立方體的第一頂點下面爲了簡潔定義)初始化,我在調試器看到瘋狂的值看立方形>頂點時,如:
cube->vertices[0].pos.x=5.736e-039#DEN
RenderCube():
bool Render::RenderCube(Cube* cube)
{
...
D3D11_SUBRESOURCE_DATA resourceData;
ZeroMemory(&resourceData, sizeof(resourceData));
resourceData.pSysMem = cube->vertices;
}
Cube.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;
};
Cube.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;
}
我在做什麼錯?
您初始化數組頂點[]一個接一個? – Matt
不是我的實際代碼 - 這只是一個簡化的例子,說明了同樣的問題 – BearInATie