Direct3D 11编程总结

这篇博客详细介绍了Direct3D 11编程的知识,包括资源管理、资源类型如顶点缓存、纹理资源,以及初始化Direct3D 11的步骤。还探讨了渲染到纹理技术的应用和实现方法,涉及创建新纹理资源、渲染目标视图和着色器纹理资源视图等步骤。
摘要由CSDN通过智能技术生成

一、Direct3D 11 知识

1. Direct3D 11资源

1.1 Direct3D资源简介

Direct3D 11利用资源来存储输入输出数据。资源分为:几何、纹理、着色数据。资源可以是有类型的,也可以是无类型的;可以控制资源的读写访问方式,也可以限定是被CPU还是GPU访问。在图形管道阶段最多可以创建128个资源。
一个Direct3D资源的生命周期分为:
(1)利用ID3D11Device接口创建资源;
(2)利用ID3D11DeviceContext接口,及利用上下文将资源绑定到图形管线;
(3)通过Realse方法释放资源。

1.2 Direct3D资源类型

(1)缓存资源:一组指定类型的数据的集合
分为顶点缓存(vetex buffer)、索引缓存(index buffer)和常量缓存(contant buffer)。顶点缓存常用于存储顶点数据,包括顶点的位置、法线、纹理坐标。索引缓存用于存储顶点的在其它顶点缓存中的索引(即偏移量),一个索引缓存可以指向多个顶点缓存。常量缓存用于存储常量数据。
(2)纹理资源:一种结构资源,用于存储纹理
一维纹理:纹理只在某一方向上变化,而在另一个方向上没有变化,相当于高度为1的二维纹理。使用ID3D11Texture1D接口来定义一维纹理。二维纹理:二维纹理是指纹理在相互垂直的两个方向发生变化。每个纹理单元可用u, v向量来表示,使用ID3D11Texture2D接口来定义二维纹理。
三维纹理:每个纹理单元可用u, v, w向量来表示,如下图所示。使用ID3D11Texture3D接口来定义三维纹理。
多重纹理:事先指定一系列分辨率逐渐减小的纹理图像。
纹理数组(texture arrays)是指包含相同结构的一组纹理数据,也就是说数组中的纹理必须有相同的数据结构(维度)和大小(纹理单元个数)。
注意 Direct3D 11 支持多重纹理和纹理数组,但是不能构建三维纹理数组。

1.3 资源的用法

D3D11_USAGE值

描述

CPU访问

GPU访问

D3D11_USAGE_IMMUTABLE

资源创建后不能改变

不能

只读

D3D11_USAGE_DEFAULT

资源内容改变速度最快每帧改变一次

不能

读/写

D3D11_USAGE_DYNAMIC

资源内容可每帧改变多次

D3D11_USAGE_STAGING

资源用於从GPU传递出入数据

读/写

拷贝

视图资源

资源接口

描述

ID3D11DepthStencilView

深度/模板测试时访问资源

ID3D11RenderTargetView

用于访问最终绘制目标的纹理资源

ID3D11ShaderResourceView

访问着色器资源,例如:常量缓存、纹理缓存、纹理采样器等

ID3D11UnorderedAccessView

在像素着色器或者计算着色器中访问随机资源

1.4  Direct3D 11 工程属性设置

Visual Studio 的工程属性的VC++ Directories中加入
Excutable Directories: $(DXSDK_DIR)Utilities\bin\x86
Include Directories: $(DXSDK_DIR)Include
Library Directories: $(DXSDK_DIR)Lib\x86
如果是Effect框架,则还需要在Include Directories中加入 $(DXSDK_DIR)Samples\C++\Effects11\Inc, 在Library Directories 中加入 $(DXSDK_DIR)Samples\C++\Effects11\Debug 或 $(DXSDK_DIR)Samples\C++\Effects11\Release。并且在$(DXSDK_DIR)Samples\C++\Effects11目录下,打开工程Effects11_*.sln,分别在Debug和Release模式下编译整个工程,分别得到Debug和Release模式下的两个lib库文件。
Linker Input 加入d3d11.lib, d3dcompiler.lib, d3dx11d.lib, d3dx9d.lib, dxerr.lib, dxguid.lib, winmm.lib,comctl32.lib, 以上lib也可以在源文件中通过 #pragma comment加入。

2. 初始化Direct3D 11步骤

2.1 描述交换链并创建设备、交换链和立即执行环境


2.2 创建目标视图并绑定到渲染管线

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值