Direct3D 11 教程1:Direct3D 11基础

DirectX11 Direct3D基本概念 Direct3D基本概念 1. Direct3D概述 Direct3D是一种底层绘图API(application programming interface,应用程序接口),它可以让我们可以通过3D硬件加速绘制3D世界。从本质上讲,Direct3D提供的是一组软件接口,我们可以通过这组接口来控制绘图硬件。例如,要命令绘图设备清空渲染目标(例如屏幕),我们可以调用Direct3D的ID3D11D 阅读详情

概览

在第一个教程中,我们学习了创建一个最小Direct3D 11应用程序所需的元素,每个Direct3D 11应用程序必须包含这些元素才能正常工作,这些元素包括创建一个窗口和设备对象,然后才能在窗口中显示颜色。

程序截图

源代码

(SDK root)\Samples\C++\Direct3D11\Tutorials\Tutorial01。

创建Direct3D 11设备

第一个步骤中的创建窗口和消息循环在Direct3D 9、Direct3D 10、Direct3D 11都是相同的,可参见Direct3D 10教程0:Win32编程基础理解这个过程。当显示了一个窗口后,下面继续创建一个Direct3D 11设备,这个设备用于绘制3D场景。首先必须创建三个对象:一个设备、一个立即执行上下文(immediate context)和一个交换链(Swap Chain),立即执行上下文对象是Direct3D 11中新添加的。

在Direct3D 10中,设备同时用来绘制和资源的创建。在Direct3D 11中,立即执行上下文用于将内容绘制到缓存,而设备用于创建资源。

当显示了一个窗口后,下面继续创建一个Direct3D 11设备,这个设备用于绘制3D场景。首先必须创建两个对象:一个设备和一个交换链(Swap Chain)。

设备对象用于将内容绘制在一个缓冲中,设备还包含创建资源的方法。

交换链即表示对缓冲的操作,这些缓冲就是设备绘制的和显示在屏幕上的内容。交换链包含两个或两个以上的缓冲,主要是前缓冲和后备缓冲,它们就是设备绘制形成的纹理,用于显示在屏幕上。前缓冲(front buffer)就是当前显示在屏幕上的内容,这个缓冲是只读的,无法修改。后备缓冲(back buffer)是设备将要绘制的渲染目标,一旦它完成了绘制操作,交换链就会通过交换前缓冲和后备缓冲,将后备缓冲的内容显示在屏幕上,此时后备缓冲就变成了前缓冲。

要创建交换链,我们需要设置一个DXGI_SWAPCHAIN_DESC结构体说明将要创建的交换链。此结构体的几个字段需要说明一下:BackBufferUsage标志告诉程序我们使用后备缓冲的方式。本例中我们想绘制到后备缓冲,所以将BackBufferUsage设置为DXGI_USAGE_RENDER_TARGET_OUTPUT。OutputWindow字段表示交换链将使用的窗口,在这个窗口上我们显示图像。SampleDesc用来开启多重采样(multi-sampling),因为这个教程不使用多重采样,SampleDesc的Count设置为1,Quality设置为0,这样就禁用了多重采样。

设置好这个描述结构体后,我们就可以调用D3D11CreateDeviceAndSwapChaing方法创建设备和交换链。代码如下:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
DXGI_SWAP_CHAIN_DESC sd;
ZeroMemory( &sd, sizeof ( sd ) );
sd.BufferCount = 1;
Direct3D 11教程2:绘制一个三角形 概览 在前面的教程中,我们创建了一个最小化的Direct3D 11程序在平面上输出了单一的颜色。 本教程中,我们会在屏幕上绘制一个三角形。我们会学习设置三角形数据结构的方法。 源代码 (SDK root)\Samples\C++\Direct3D10\Tutorials\Tutorial02 三角形的构成 三角形由三个点定义,这些点又叫顶点(vertex)。确定位置的三个顶点定 阅读详情

相关推荐

《Practical Rendering & Computation with Direct3D11》读书总结 Chapter-1-Overview Of Direct3D 11

章节概括 本章主要简要描述了Direct3D的架构以及它是如何与GPU硬件交互的、简要探讨了D3D11中的Pipeline,介绍了一些组件,最后以一个简短的Direct3D初始化的例子介绍了对于Dx的初始化需要做哪些工作。 1.1 Direct3D 的框架 Direct3D是一套用来与显卡交流并控制显卡的Native API,并以此来渲染图像。之所以说它是Native的,是因为它被设计成可以...

syddf 1021

Direct3D 11编程总结

一、Direct3D 11 知识 1. Direct3D 11资源 1.1 Direct3D资源简介 Direct3D 11利用资源来存储输入输出数据。资源分为:几何、纹理、着色数据。资源可以是有类型的,也可以是无类型的;可以控制资源的读写访问方式,也可以限定是被CPU还是GPU访问。在图形管道阶段最多可以创建128个资源。 一个Direct3D资源的生命周期分为: (1)利用ID3D1

HAIHUAYEN的专栏 3740

DirectX11入门教程——第二篇:DirectX11的基础知识

本系列系作者原创,可随便转发但一定要注明出处 刚才明明说尽量不跳章的,为啥一进来就变成第二章,这里首先用几句话说明一下原因:因为第一章我想留给更基础更概念的GPU发展史和管线描述。在此对不起大家了。不过我保证这个系列初步成型后绝对不跳章 2010年5月微软发布了DirectX11这个DirectX SDK系列家族的最新成员,伴随着SDK的升级,DirectX11带给我的是功能的扩展,性能的

hiroshiryu的专栏 7169

Direct3D 11基础教程:从代码到渲染实现

Direct3D 11是微软公司推出的一套高性能3D图形编程接口,它允许开发者在Windows平台上创建复杂的视觉效果。本章旨在为读者提供Direct3D 11的核心概念概览,为后续章节中关于设备创建、资源管理、渲染流程、交换链、着色器绑定和绘制命令的深入了解打下基础。Direct3D 11的架构包括多个核心组件,如设备(Device)、设备上下文(Device Context)、资源(Resources)和着色器(Shaders)。

weixin_35636570的博客 1555

Direct3D 11模糊效果实现教程

一个高级的资源管理技巧是使用资源重用链表。这个链表包含所有可以重用的资源实例,并按照某种优先级排序。当应用程序需要一个新的资源时,它会首先检查重用链表,以找到一个适当的可用实例,而不是创建一个新的资源。这样可以显著减少资源创建的开销,并且可以持续维持一个较低的资源使用量。另一个技巧是资源的压缩和解压缩。在内存受限的环境下,如移动设备或低功耗设备,对资源进行压缩可以节省大量内存。然而,资源的压缩和解压缩会引入额外的CPU开销。因此,需要在资源的加载时间、内存使用和CPU使用之间找到一个平衡点。

weixin_29138345的博客 737

忆阻器(二)——忆阻模拟器

除了真实的器件,我们也可以用运放和乘法器来搭忆阻模拟器。这节将介绍数学模型、matlab仿真及multisim仿真。 一、数学模型 忆阻分为磁控和荷控两种,这里介绍三次非线性磁控忆阻模型: {I=W(φ)VW(φ)=a+3bφ2dφdt=V \begin{cases} I=W(\varphi)V \\ W(\varphi)=a+3b \varphi ^2\\ \frac{d \varphi }{dt}=V \end{cases} ⎩⎪⎨⎪⎧​I=W(φ)VW(φ)=a+3bφ2dtdφ​=V​ 这里的WWW

http://www.icfgblog.com/ 1万+

Sigmastar平台WDR调试实战:从参数解析到鬼影消除的完整指南

本文提供了Sigmastar平台宽动态(WDR)技术的实战调试指南。针对逆光、运动场景下的核心痛点,系统性地解析了从多曝光采集、HDR融合到色调映射的完整管线,并重点阐述了如何通过调整曝光比、运动阈值与调整曲线等关键参数,有效消除运动鬼影、平衡暗部噪声与细节,最终实现清晰稳定的图像效果。

Jerry的专栏 926

超强干货之---Python-数据爬取(爬虫)

定义: 深度优先搜索是一种遍历或搜索树或图的算法,从起始节点开始,一直沿着一个分支走到底,再回溯到上一个节点继续搜索下一个分支,直到遍历完所有节点。特点递归:通常用递归实现,或者使用栈来模拟递归过程。内存占用低:在有大量分支的情况下,内存占用比广度优先搜索低。适合目标较深的情况:如果目标节点距离起始节点较深,DFS能更快找到目标。适用场景需要遍历所有节点的情况,如生成树、迷宫搜索。目标节点较深,且分支较多时。在大规模数据爬取时,选择合适的存储方式取决于数据的规模、结构和访问需求。

房东的猫的博客 5万+

西南科技大学模拟电子技术实验七(集成运算放大器的非线性应用)预习报告

将电位器Rp调至中心位置,用双综示波器观察并绘制方波U0的波形,测量其幅值和频率;将电位器RP调至中心位置,用示波器观察并绘制锯齿波U0的波形,记录;示波器基线调零,Ui输入1000HZ、幅值为2V的正弦信号,观察并记录Ui与U0波形,读出图中波形跳变时的Ui临界值;用万用表电位器RP调至预测结果位置,用示波器观察并描绘三角波输出U0及方波输出uo’,测其幅值、频率及Rp值,记录之。示波器基线调零,U输入1000HZ、幅值为2V的正弦信号,观察UI与U0波形。理论算法公式:当Ui

Welcome To My6n Blog 3936

SAP 采购申请、采购订单的审批策略

采购申请、采购订单的审批策略 采购申请审批 PR审批可以分为:含分类、无分类 1、无分类PR审批: A、后台配置: 设置批准代码(批准代码可以设置多级审批): 发布批准标识使用系统已有的 “2 询价/采购订单”: 新建采购申请审批策略Z1(仅设置1级审批,一共可以设置8级审......

willieyuan的博客 2万+

【人工智能】广度优先搜索(BFS)在人工智能中的应用(Python源码)

本文系统阐述了广度优先搜索(BFS)算法在人工智能领域的核心原理与应用。作为无信息搜索算法,BFS通过FIFO队列实现节点遍历,保证在无权图中的最优性。文章详细解析了BFS的伪代码实现和Python编程示例,并通过机器人路径规划案例展示了其实际应用场景。测试结果表明,BFS能有效解决包含障碍物的网格寻路问题,验证了算法在AI领域的实用价值。该研究为理解基础搜索算法及其工程应用提供了重要参考。

梦想起飞的地方 1142

Transformer模型在时间序列预测中的应用:价格和产量预测

Transformer模型由Attention is All You Need论文提出,并在机器翻译任务上取得了巨大成功。其主要特点是使用自注意力机制代替传统的递归或卷积操作进行序列建模。Transformer模型由编码器和解码器组成,其中编码器用于学习输入序列的表示,解码器用于生成目标序列。在时间序列预测中,我们只需要使用Transformer的编码器部分。编码器将历史数据作为输入,学习一个表示,然后使用该表示来预测未来的数值。

HnrzLinux的博客 737

osgEarth 球上显示地形数据库

osgEarth 球上显示地形数据库 本文展示了一种由DSM和DEM得到Osgb工程,并在osgEarth球上显示的方法。其中DSM、DOM到Osgb工程的转换由VPB(VirtualPlanetBuilder)来实现,并采用Model图层将Osgb工程在球上显示。 本文主要解决一下问题: VPB编译 VPB生成地形 地形在球上显示 目录 1 前言 2 VPB编译与使用 3 地形在osgEarth球上显示 内容 1 前言 VirtualPlanetBuilder是一个开源代码工具,用于根据

CPWWHSU的博客 2435

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: Direct3D 10教程0:Win32编程基础
下一篇: Direct3D 11教程2:绘制一个三角形
jake2012
博客等级 码龄17年 32粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值