07/01/2020
游戏对象由Transform变换信息和游戏对象的网格数据组成,简单的几何网格有平面,立方体,球,棱台等等
Transform类
位置朝向缩放SetBuffer主要创建顶点缓冲区和索引缓冲区,在创建它们之前,我们必须知道游戏对象的顶点信息
void SetBuffer(ID3D11Device * device, const Geometry::MeshData<VertexType, IndexType>& meshData);网格数据保存信息:顶点数组和索引数组 顶点数组
点坐标法向量切向量颜色纹理坐标索引数组
索引下标 // 创建球体网格数据,levels和slices越大,精度越高。 //VertexType 表示顶点数组储存的类型 //IndexType 表示索引数组储存的类型 template<class VertexType = VertexPosNormalTex, class IndexType = DWORD> MeshData<VertexType, IndexType> CreateSphere(float radius = 1.0f, UINT levels = 20, UINT slices = 20, const DirectX::XMFLOAT4& color = { 1.0f, 1.0f, 1.0f, 1.0f }); // 创建立方体网格数据 template<class VertexType = VertexPosNormalTex, class IndexType = DWORD> MeshData<VertexType, IndexType> CreateBox(float width = 2.0f, float height = 2.0f, float depth = 2.0f, const DirectX::XMFLOAT4& color = { 1.0f, 1.0f, 1.0f, 1.0f });当确定完游戏对象的顶点数组和索引数组后,我们就可以创建顶点缓冲区和索引缓冲区了,在局部坐标系下,这两个缓冲区保存了游戏对象的网格数据
顾名思义,顶点缓冲区存放的是一连串的顶点数据,尽管缓冲区的数据实际上还是一堆二进制流,但在传递给输入装配阶段的时候,就会根据顶点输入布局将其装配成HLSL的顶点结构体数据。顶点缓冲区的数据可以用自定义的顶点结构体数组来初始化。顶点可以包含的成员有:顶点坐标(必须有),顶点颜色,顶点法向量,纹理坐标,顶点切线向量等等。每个顶点的成员必须匹配合适的DXGI数据格式。
当然,纯粹的顶点数组只是针对单个物体而言的。如果需要绘制大量相同的物体,需要同时用到多个顶点缓冲区。这允许你将顶点数据分开成多个顶点缓冲区来存放。
每一个游戏对象,都应该对应一个或多个纹理资源视图
每一个游戏对象需要重新装配着色器,加载它们独有的顶点缓冲区,索引缓冲区,常量缓冲区,纹理资源视图等等,最后一步才是上下文的绘图函数
// 绘制 void Draw(ID3D11DeviceContext * deviceContext);每一个物体独有信息
变换矩阵,即位置,朝向和大小,由常量缓冲区保存网格数据,即顶点和下标数组保存,由顶点和下标缓冲区保存纹理图片,如果使用了纹理贴图而不是顶点颜色,那么需要使用纹理资源视图保存材质信息,可以由常量缓冲区设置更新函数,用来反映每一帧的变化绘图函数,重新装配上述资源X_Jun博客园