gpt4 book ai didi

directx - D3D9 顶点中字段的位置(位置、法线等)

转载 作者:行者123 更新时间:2023-12-04 21:00:12 25 4
gpt4 key购买 nike

我正在尝试读取为 DirectX 应用程序创建的 3D 模型,这些模型定义如下:

  • 在文件头中,给出了网格的灵活顶点格式(FVF)(实际上,我在我测试的网格中有 D3DFVF_{XYZ,DIFFUSE,NORMAL,TEX1,TEX2} 的任意组合)
  • 然后,n顶点以线性模式给出,字段根据 FVF 呈现。

  • 但是,我不知道这些字段的顺序。逻辑是它是在 DirectX 文档中的某个地方定义的,但我找不到它。例如,这两个结构中哪一个是正确的 FVF = D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_NORMAL (C 语法,但这个问题适用于每种语言) ?
    // This one ?
    struct vertex1
    {
    D3DVERTEX pos;
    DWORD color;
    D3DVERTEX normal;
    };

    // Or this one ?
    struct vertex2
    {
    D3DVERTEX pos;
    D3DVERTEX normal;
    DWORD color;
    };

    我想要一个包含所有可能字段的一般性答案(例如, XYZ before DIFFUSE before NORMAL before TEX1 before TEX2 )。指向文档右侧页面的指针也可以,因为我找不到它:)。

    最佳答案

    我自己也遇到了同样的事情。

    我认为位的顺序是所需的顺序。来自 d3d9types.h:

    #define D3DFVF_RESERVED0        0x001
    #define D3DFVF_POSITION_MASK 0x400E
    #define D3DFVF_XYZ 0x002
    #define D3DFVF_XYZRHW 0x004
    #define D3DFVF_XYZB1 0x006
    #define D3DFVF_XYZB2 0x008
    #define D3DFVF_XYZB3 0x00a
    #define D3DFVF_XYZB4 0x00c
    #define D3DFVF_XYZB5 0x00e
    #define D3DFVF_XYZW 0x4002

    #define D3DFVF_NORMAL 0x010
    #define D3DFVF_PSIZE 0x020
    #define D3DFVF_DIFFUSE 0x040
    #define D3DFVF_SPECULAR 0x080

    #define D3DFVF_TEXCOUNT_MASK 0xf00
    #define D3DFVF_TEXCOUNT_SHIFT 8
    #define D3DFVF_TEX0 0x000
    #define D3DFVF_TEX1 0x100
    #define D3DFVF_TEX2 0x200
    #define D3DFVF_TEX3 0x300
    #define D3DFVF_TEX4 0x400
    #define D3DFVF_TEX5 0x500
    #define D3DFVF_TEX6 0x600
    #define D3DFVF_TEX7 0x700
    #define D3DFVF_TEX8 0x800

    我很确定您要查找的订单是:

    位置,正常,PSIZE,漫反射,镜面反射,TEX0[,TEXn...]

    我也无法在文档中找到明确的答案。

    关于directx - D3D9 顶点中字段的位置(位置、法线等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1514796/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com