dx11学习 (一、二)

开始做dx11的支持工作啦,也是个学习的过程,记录一下吧,这些内容原作者放在好几篇博客中

一、

下边是上手的一个博客地址:

https://www.cnblogs.com/Ray1024/p/6048842.html

dx SDK下载地址:

https://www.microsoft.com/en-us/download/details.aspx?id=6812

示例代码:

http://www.d3dcoder.net/d3d11.htm

看完这个博客之后的总结:

1. 安装SDK环境

2. 链接dx库

相关概念

1. Effect框架是微软额外提供的一个程序框架,用于管理着色器程序和渲染状态的工具代码,使用户在程序中使用shader时与C++程序更方便地衔接。这个框架对于编写D3D程序来说不是必需的,好比D3DX库对于D3D程序来说也是可有可无的。但它毕竟大大方便了我们使用shader,在学习过程把心思放在要点上,因此在后面学习过程中将全程使用Effect框架。

在Direct3D 11中,Effects框架已从D3DX库中移除,你必须包含一个单独的头文件(d3dx11Effect.h),链接一个单独的库文件(Effects11.lib用于release生成,而Effects11D.lib用于debug生成)。

而且,在Direct3D 11中提供了effect库的完整源代码(DirectX SDKSamplesC++Effects11)。因此,你可以根据需要修改effect框架

2. D3DX中有很多函数以D3D或者以D3DX开头,譬如D3DCOLOR与D3DXCOLOR。

D3D更底层,而D3DX是基于D3D实现的,更加功能强大的函数库。

其中,D3DXMATERIAL指的是广义的材质结构,即纹理+材质,而D3DMATERIAL9则表达的是单纯的材质,即物体对光照的反射作用。

二、

这里讲述了d3d的部分基础知识,虽然在相关资料中也可以查到,博客中的针对性还是比较强:

https://www.cnblogs.com/Ray1024/p/6065598.html

总结:

纹理

texture,即我们常像素,超级采样和多重采样时都会使用4x的存储,但能减少锯齿效应(阶梯效应),有1D、2D、3D

深度缓存

初值为1.0(远端,最小值0.0)渲染时有更小的深度值,则替换该位置,最终得到最近的像素。

显卡架构

dx9时代以独立的并行处理单元,即,顶点着色器和像素着色器数量来评判显卡好坏,在每个周期输出受VS(顶点着色器)、ps、tmu、rop(像素着色单元、纹理单元、光珊引擎构成一条渲染管线)中数量短的制约。

dx10之后的显卡为提高处理显卡单元的使用率,不再区分顶点着色器、渲染管线,第个流处理单元在执行任意一种shader运算,因此不同架构的显卡不可以再按单元数量评判优劣。 这种统一架构避免了传统架构中资源分配不合理造成的浪费现象。

 

 

原文地址:https://www.cnblogs.com/ice-arrow/p/13600549.html