Direct3D11学习笔记(一):创建最小的Direct3D应用程序

    xiaoxiao2025-04-02  6

    感谢博主~不会飞的章鱼~,本文是基于他的DirextX学习笔记所进行学习时的1记录,更全面的介绍见博客:https://www.cnblogs.com/OctoptusLian/p/9729605.html

    一、简介

    该例使用D3D实现用单一颜色填充屏幕,知识点包含n32编程基础和创建D3D程序的必要元素;

    二、主要步骤

    (一)创建窗口和消息循环

    1.定义一个窗口类,该类详细描述了窗口的各种属性,将填写好的窗口类注册到?;

    2.使用函数创建一个窗口;

    3.窗口显示;

    4.编写消息处理函数;

    (二)设置Direct3D 11 设备

    1.创建设备:

    设备中包含创建资源的方法;

    2.创建直接上下文(immediate context)

    直接上下文用于对缓冲区执行渲染;

    3.创建交换链

    定义一个交换链类,基于填写好的交换链类,利用函数创建交换链;

    4.渲染目标视图(可再了解一下资源视图的概念,目前还未理解,以及创建渲染目标视图的作用)

    调用GetBuffer()来获取后台缓冲区对象,利用CreateRenderTargetView()创建渲染目标视图,最后在直接上下文中调用OMSetRenderTargets()将其绑定到管道上,这可确保管道呈现的输出被写入后台缓冲区;

    5.初始化视口

    视口映射剪辑空间坐标,即视口呈现的为最终物体被看见时的坐标;

    (三)修改消息循环

    使用PeekMessage()而不是GetMessage(),因为应用程序窗口的队列中没有消息,后者会阻塞,并在消息可用之前不会返回,而前者在没有消息等待时,会立即返回而不是阻塞,于是我们可以花时间做一些渲染;

    (四)渲染,即编写Render()函数

    Present()负责将交换链的后台缓冲区显示在屏幕上;

    最新回复(0)