1.一种创建顶点缓冲区方法,应用于Direct3D11软件平台,其特征在于,包括:
编译HLSL脚本,获得类型为ID3DBlob的第一接口,所述第一接口中保存了编译后的HLSL脚本的字节码;
调用所述第一接口的获取指定缓冲区内容方法,获得所述字节码,以及调用所述第一接口的获取指定缓冲区大小方法,获得所述字节码的字节长度,基于所述字节码与所述字节长度,调用所述Direct3D11软件平台的返回方法,获得ID3D11ShaderReflection类型的第二接口;
调用所述第二接口的获取描述信息方法,获得D3D11_SHADER_DESC类型的第一结构,访问所述第一结构的顶点输入参数字段,确定所述HLSL脚本中所使用的顶点输入参数数量;
基于所述顶点输入参数字段,构建D3D11_INPUT_ELEMENT_DESC类型的顶点输入布局描述数组,所述顶点输入布局描述数组中保存有与所述顶点输入参数数量一致的顶点输入参数描述信息变量,每个所述顶点输入参数描述信息变量与所述HLSL脚本中所使用的每个顶点输入参数一一对应,每个所述顶点输入参数描述信息变量包括对应顶点输入参数的语义名称、语义索引、数据格式及偏移值;
基于顶点输入布局描述数组与所述顶点输入参数字段,调用设备接口的创建顶点布局结构方法,创建ID3D11InputLayout接口。
2.如权利要求1所述的方法,其特征在于,所述基于所述顶点输入参数字段,构建D3D11_INPUT_ELEMENT_DESC类型的顶点输入布局描述数组,包括:所述顶点输入参数字段的值为M,确定所述HLSL脚本中所使用的M个顶点输入参数,针对所述M个顶点输入参数中每个顶点输入参数,声明D3D11_INPUT_ELEMENT_DESC类型的顶点输入参数描述信息变量,以及声明偏移变量;
调用所述第二接口的获得顶点输入参数描述信息获取方法,获取该顶点输入参数的第一描述信息,将所述第一描述信息中的语义名称保存到所述顶点输入参数描述信息变量的语义名称中,将所述第一描述信息中的语义索引保存到所述顶点输入参数描述信息变量的语义索引中,以及基于所述第一描述信息中的数据格式信息与掩码值,设置所述顶点输入参数描述信息变量的数据格式以及所述偏移变量的偏移值,将所述偏移变量的偏移值保存到所述顶点输入参数描述信息变量的偏移成员中;
将所述顶点输入参数描述信息变量保存至所述顶点输入布局描述数组。
3.如权利要求2所述的方法,其特征在于,所述基于所述第一描述信息中的数据格式信息与掩码值,设置所述顶点输入参数描述信息变量的数据格式以及所述偏移变量的偏移值,包括:如果所述第一描述信息中的成员类型字段的值为D3D_REGISTER_COMPONENT_FLOAT32,掩码值为1,将所述顶点输入参数描述信息变量的格式字段设置为DXGI_FORMAT_R32_FLOAT,将所述偏移变量的偏移值设置为在初始值上加4;
如果所述第一描述信息中的成员类型字段的值为D3D_REGISTER_COMPONENT_FLOAT32,掩码值为3,将所述顶点输入参数描述信息变量的格式字段设置为DXGI_FORMAT_R32G32_FLOAT,将所述偏移变量的偏移值设置为在初始值上加8;
如果所述第一描述信息中的成员类型字段的值为D3D_REGISTER_COMPONENT_FLOAT32,掩码值为7,将所述顶点输入参数描述信息变量的格式字段设置为DXGI_FORMAT_R32G32B32_FLOAT,将所述偏移变量的偏移值设置为在初始值上加12;
如果所述第一描述信息中的成员类型字段的值为D3D_REGISTER_COMPONENT_FLOAT32,掩码值为15,将所述顶点输入参数描述信息变量的格式字段设置为DXGI_FORMAT_R32G32B32A32_FLOAT,将所述偏移变量的偏移值设置为在初始值上加16。
4.如权利要求2所述的方法,其特征在于,所述基于所述第一描述信息中的数据格式信息与掩码值,设置所述顶点输入参数描述信息变量的数据格式以及所述偏移变量的偏移值,包括:如果所述第一描述信息中的成员类型字段的值为D3D_REGISTER_COMPONENT_SINT32,掩码值为1,将所述顶点输入参数描述信息变量的格式字段设置为DXGI_FORMAT_R32_SINT,将所述偏移变量的偏移值设置为在初始值上加4;
如果所述第一描述信息中的成员类型字段的值为D3D_REGISTER_COMPONENT_SINT32,掩码值为3,将所述顶点输入参数描述信息变量的格式字段设置为DXGI_FORMAT_R32G32_SINT,将所述偏移变量的偏移值设置为在初始值上加8;
如果所述第一描述信息中的成员类型字段的值为D3D_REGISTER_COMPONENT_SINT32,掩码值为7,将所述顶点输入参数描述信息变量的格式字段设置为DXGI_FORMAT_R32G32B32_SINT,将所述偏移变量的偏移值设置为在初始值上加12;
如果所述第一描述信息中的成员类型字段的值为D3D_REGISTER_COMPONENT_SINT32,掩码值为15,将所述顶点输入参数描述信息变量的格式字段设置为DXGI_FORMAT_R32G32B32A32_SINT,将所述偏移变量的偏移值设置为在初始值上加16。
5.如权利要求2所述的方法,其特征在于,所述基于所述第一描述信息中的数据格式信息与掩码值,设置所述顶点输入参数描述信息变量的数据格式以及所述偏移变量的偏移值,包括:如果所述第一描述信息中的成员类型字段的值为D3D_REGISTER_COMPONENT_UINT32,掩码值为1,将所述顶点输入参数描述信息变量的格式字段设置为DXGI_FORMAT_R32_UINT,将所述偏移变量的偏移值设置为在初始值上加4;
如果所述第一描述信息中的成员类型字段的值为D3D_REGISTER_COMPONENT_UINT32,掩码值为3,将所述顶点输入参数描述信息变量的格式字段设置为DXGI_FORMAT_R32G32_UINT,将所述偏移变量的偏移值设置为在初始值上加8;
如果所述第一描述信息中的成员类型字段的值为D3D_REGISTER_COMPONENT_UINT32,掩码值为7,将所述顶点输入参数描述信息变量的格式字段设置为DXGI_FORMAT_R32G32B32_UINT,将所述偏移变量的偏移值设置为在初始值上加12;
如果所述第一描述信息中的成员类型字段的值为D3D_REGISTER_COMPONENT_UINT32,掩码值为15,将所述顶点输入参数描述信息变量的格式字段设置为DXGI_FORMAT_R32G32B32A32_UINT,将所述偏移变量的偏移值设置为在初始值上加16。
6.一种创建顶点缓冲区装置,应用于Direct3D11软件平台,其特征在于,包括:
编译单元,用于编译HLSL脚本,获得类型为ID3DBlob的第一接口,所述第一接口中保存了编译后的HLSL脚本的字节码;
获取单元,用于调用所述第一接口的获取指定缓冲区内容方法,获得所述字节码,以及调用所述第一接口的获取指定缓冲区大小方法,获得所述字节码的字节长度,基于所述字节码与所述字节长度,调用所述Direct3D11软件平台的返回方法,获得ID3D11ShaderReflection类型的第二接口;
确定单元,用于调用所述第二接口的获取描述信息方法,获得D3D11_SHADER_DESC类型的第一结构,访问所述第一结构的顶点输入参数字段,确定所述HLSL脚本中所使用的顶点输入参数数量;
第一创建单元,用于基于所述顶点输入参数字段,构建D3D11_INPUT_ELEMENT_DESC类型的顶点输入布局描述数组,所述顶点输入布局描述数组中保存有与所述顶点输入参数数量一致的顶点输入参数描述信息变量,每个所述顶点输入参数描述信息变量与所述HLSL脚本中所使用的每个顶点输入参数一一对应,每个所述顶点输入参数描述信息变量包括对应顶点输入参数的语义名称、语义索引、数据格式及偏移值;
第二创建单元,用于基于顶点输入布局描述数组与所述顶点输入参数字段,调用设备接口的创建顶点布局结构方法,创建ID3D11InputLayout接口。
7.如权利要求6所述的装置,其特征在于,所述第一创建单元具体用于:
所述顶点输入参数字段的值为M,确定所述HLSL脚本中所使用的M个顶点输入参数,针对所述M个顶点输入参数中每个顶点输入参数,声明D3D11_INPUT_ELEMENT_DESC类型的顶点输入参数描述信息变量,以及声明偏移变量;
调用所述第二接口的获得顶点输入参数描述信息获取方法,获取该顶点输入参数的第一描述信息,将所述第一描述信息中的语义名称保存到所述顶点输入参数描述信息变量的语义名称中,将所述第一描述信息中的语义索引保存到所述顶点输入参数描述信息变量的语义索引中,以及基于所述第一描述信息中的数据格式信息与掩码值,设置所述顶点输入参数描述信息变量的数据格式以及所述偏移变量的偏移值,将所述偏移变量的偏移值保存到所述顶点输入参数描述信息变量的偏移成员中;
将所述顶点输入参数描述信息变量保存至所述顶点输入布局描述数组。
8.如权利要求7所述的装置,其特征在于,所述第一创建单元具体用于:
如果所述第一描述信息中的成员类型字段的值为D3D_REGISTER_COMPONENT_FLOAT32,掩码值为1,将所述顶点输入参数描述信息变量的格式字段设置为DXGI_FORMAT_R32_FLOAT,将所述偏移变量的偏移值设置为在初始值上加4;
如果所述第一描述信息中的成员类型字段的值为D3D_REGISTER_COMPONENT_FLOAT32,掩码值为3,将所述顶点输入参数描述信息变量的格式字段设置为DXGI_FORMAT_R32G32_FLOAT,将所述偏移变量的偏移值设置为在初始值上加8;
如果所述第一描述信息中的成员类型字段的值为D3D_REGISTER_COMPONENT_FLOAT32,掩码值为7,将所述顶点输入参数描述信息变量的格式字段设置为DXGI_FORMAT_R32G32B32_FLOAT,将所述偏移变量的偏移值设置为在初始值上加12;
如果所述第一描述信息中的成员类型字段的值为D3D_REGISTER_COMPONENT_FLOAT32,掩码值为15,将所述顶点输入参数描述信息变量的格式字段设置为DXGI_FORMAT_R32G32B32A32_FLOAT,将所述偏移变量的偏移值设置为在初始值上加16。
9.一种创建顶点缓冲区装置,应用于Direct3D11软件平台,其特征在于,所述创建顶点缓冲区装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-5中任一项所述的创建顶点缓冲区方法的步骤。
10.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5中任一项所述的创建顶点缓冲区方法的步骤。