Directx 在DX9中渲染顶点

Directx 在DX9中渲染顶点,directx,directx-9,Directx,Directx 9,如果我使用顶点结构,如: struct ColorVertex { float x, y, z, rhw; DWORD color; //32bit }; 我可以在为顶点创建顶点缓冲区后绘制基本体 但是对于没有rhw的结构,我必须执行以下步骤: 创建顶点缓冲区并复制顶点数据 通过SetRenderState 创建投影矩阵 创建一个世界矩阵 然后绘制基本体 更复杂。如果我忽略了上面的任何一步,我什么也得不到。那么,上述步骤对于第二种结构来说都是必要的吗?还需要其他吗?我

如果我使用顶点结构,如:

struct ColorVertex {
    float x, y, z, rhw;
    DWORD color;    //32bit
};
我可以在为顶点创建顶点缓冲区后绘制基本体

但是对于没有
rhw
的结构,我必须执行以下步骤:

  • 创建顶点缓冲区并复制顶点数据
  • 通过
    SetRenderState
  • 创建投影矩阵
  • 创建一个世界矩阵
  • 然后绘制基本体
更复杂。如果我忽略了上面的任何一步,我什么也得不到。那么,上述步骤对于第二种结构来说都是必要的吗?还需要其他吗?我没有看到视图端口转换矩阵,有必要吗?是否未设置默认渲染状态

更新:

不,这些不是必需的,我看不到原语只是因为我将z-aix都设置为0。在D3D中,似乎投影窗口默认设置为z=1。但我不确定,plz评论

问题是关于第一个结构,我的数据是:

 CUSTOMVERTEX Vertices[] =
    {
        { 150.0f,  50.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color
        { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, },
        {  50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
    };

我仍然可以看到没有任何变换和渲染状态集的图形。

第二个结构在哪里?@zdd没有rhw字段。没有rhw字段,您如何知道顶点位置?