D3D自学笔记

本文是作者自学Direct3D (D3D) 的过程记录,主要总结了从定义点结构,创建effect文件,设定inputlayout,到数据缓存与管线绑定的关键步骤。在已有的程序框架基础上,作者详细阐述了如何实现3D图形的基本渲染,包括点的位置、颜色、纹理描述,以及如何通过effect实现坐标变换和特效。虽然参考了《龙书》的代码,但依然需要亲手实践以加深理解。
摘要由CSDN通过智能技术生成

         这是我建立自己的D3D程序的第一篇文章,也算是自学龙书11的学习一个阶段性总结,尽管认真看了龙书11,但还是有很多代码要一边敲,以便参考龙书配套的代码。这个程序是在已经把程序框架建好了(程序框架包括初始化窗口,消息处理函数,时间函数,运行步骤)的基础之上做出的。

(一)

        首先,我们要用一个结构定义点(点由 位置 颜色 纹理等构成),然后对构成点的元素(位置 颜色 纹理等)进行描述。

        然后,我们建立effect文件,实现基本的操作(坐标变换)和一些特效(光照,纹理等)。

        最后,我们运用上面的“描述”和“effect文件”建立inputlayout,并将inputlayout绑定到输入装配阶段,这样管线就可以访问到了。

(二)

       具体数据(每个顶点具体位置,颜色值等)我们应该把它存到缓存里面,让管线可以访问,结合上面的effect,就可以渲染了。

       首先,描述我们要建立的”缓存“

       然后,描述我们要的具体点,具体索引。

       最后,用建立缓存,并绑定到输入装配阶段。

上面两大步就完成了输入装配阶段。其实effect文件也把vs阶段和ps阶段给”描述“了。

(一)

结构定义点

//Vertex.h

namespace Vertex
{
	struct CubeVertex
	{
	XMFLOAT3 pos; //XMFLOAT3在xnamath里面,这两个变量对应
	XMFLOAT4 Color; //元素描述,和顶点着色器的输入(用语义(语义在顶点描述那里定义)对应)
	}
}

构成点的元素(位置 颜色 纹理等)进行描述

//Vertex.h

class InputLayoutDec
{
public:
	static const D3D11_INPUT_ELEMENT_DESC CubeVertexs[];
};
//Vertex.cpp

const D3D11_INPUT_ELEMENT_DESC InputLayoutDec::CubeVertexs[] =
{
	{"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0},
	{"COLOR",    0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0}
};
建立effect文件

//effect.fx


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值