本文版权归博客园 lovedday 所有,转载请详细标明原创作者及原文出处,以示尊重!

原创作者: lovedday 

原创博客:天行健 君子当自强而不息

原文出处:DXUT框架剖析

DXUT框架剖析(14)      摘要: 控件是用户接口的重要组成部分,为了便于用户操作,为程序界面添加各种控件是非常好的方法。DXUT框架为在Direct3D程序中添加各种控件提供了支持。为了便于加载控件和处理各控件的消息,通常先在窗口中加载对话框,然后在对话框中添加响应的控件,由对话框来管理控件。为了统一管理各个对话框,还需要定义对话框资源管理器类CDXUTDialogResourceManager的一个对象,在程序开始时,调用各个对话框的Init函数和对话框资源管理对象进行初始化  
DXUT框架剖析(13)      摘要: DXUT框架对文本绘制进行了封装,提供了类CDXUTHelper来简化文本显示,使用该接口大体分为3个步骤:初始化ID3DXSprite和ID3DXFont对象,显示文本,释放ID3DXSprite和ID3DXFont对象。  
DXUT框架剖析(12)      摘要: DXUT暂停函数:

DXUTPause:将框架的内部计数器和(或)渲染过程设为暂停状态。
DXUTRenderingPaused:检查当前设备的渲染状态是否处在暂停状态。
DXUTIsTimePaused:检查当前设备的计时器是否处在暂停状态。

DXUT框架剖析(11)      摘要: DXUT统计函数:

DXUTGetFPS: 获取当前每秒提交的帧数。
DXUTGetFrameStats:获取一个指向字符串的指针,该字符串包括每秒帧数、分辨率、后台缓冲区格式、深度缓冲区格式。
DXUTGetDeviceStats:获取一个指向字符串的指针,该字符串包括当前设备类型、顶点运算行为和设备名。

DXUT框架剖析(10)      摘要: 管理DXUT框架的函数:

DXUTResetFrameworkState: 将框架状态重置为初始默认状态,之前设置的框架状态改变将失效。
DXUTShutdown: 触发程序终止和清空框架。
DXUTGetExitCode: 获取框架的退出代码。

DXUT框架剖析(9)      摘要: 下面列出允许改变DXUT行为和获取内部变量的函数,这些函数在使用DXUT框架的Direct3D程序中是非常实用的。  
DXUT框架剖析(8)      摘要: Direct3D API的设计使程序能比较容易地处理各种错误,尽管大多数Direct3D API函数返回HTRSULT值,但只有一部分函数返回设备错误,如D3DERR_DEVICELOST或 D3DERR_DRIVERINTERNALERROR。但是通常的Direct3D应用程序使用多种API函数,当传递的参数不合要求时,将返回 D3DERR_INVALIDCALL。

当开发Direct3D应用程序时,应该检查所有的API调用是否成功,如果出现一个没有预测到的失败调用,应用程序应立即给出通知或记录该错误。使用这种方法,开发人员能很快发现哪些API函数的调用是不正确的。一个正确调用Direct3D API函数的应用程序应能安全地忽略大多数Direct3D API函数的失败调用,除了一些关键性的API函数,如Present()或TestCooperativeLevel(),这些函数返回的错误应用程序不能忽略。

DXUT框架剖析(7)      摘要: 框架也提供了帧事件,它在渲染过程中的每一帧被调用,应用程序应该注册并实现这些回调函数。  
DXUT框架剖析(6)      摘要: 在窗口和设备创建好之后,应用程序需要使用消息循环处理窗口消息、更新和渲染场景、处理设备事件。应用程序可以实现自己的消息循环,也可以使用DXUT消息循环,注册相应的回调函数,可以让DXUT处理设备、帧消息事件。

为使用DXUT框架的消息循环,可以调用DXUTMainLoop()函数.

DXUT框架剖析(5)      摘要: 应用程序可以通过DXUTSetCallbackDeviceChanging()设置回调函数来修改Direct3D设备的创建设置。

回调函数ModifyDeviceSettings()返回一个布尔值,如果应用程序返回 TRUE,DXUT框架继续像在正常情况下那样进行设备创建。如果返回FALSE,框架不能改变设备,如果已有一个设备,则继续使用当前设备。如果框架提出的请求是改变到一个应用程序不能使用的设备,应用程序可以拒绝该请求。例如,在一个多显示器配置中,默认情况下在显示器之间拖动窗口将使框架改变设备。但如果应用程序不能使用其他设备,它就必须拒绝这种改变并继续使用当前设备。

DXUT框架剖析(4)      摘要: 通常可以用标准的Direct3D方法CreateDevice()创建一个Direct3D设备,这个方法需要一个有效的显示适配器、设备类型(硬件抽象层设备或参考设备)、窗口句柄、运行标志(软件/硬件顶点运算模式和其他驱动标志)和提交参数。更重要的是,结构体 D3DPRESENT_PARAMETERS有许多成员指定了后台缓冲区的设置、多重采样设置、交换效果、窗口模式、深度缓冲区设置、刷新频率、提交间隔和提交标志等。

为所有的参数选择合适的设置是比较繁琐的,DXUT框架使用函数DXUTCreateDevice()简化了Direct3D设备的创建。

DXUT框架剖析(3)      摘要: 使用DXUT框架之前,首先需要初始化DXUT,初始化DXUT可以通过函数DXUTInit()完成。

通常在WinMain()函数中调用DXUTInit()函数进行DXUT初始化工作,如果程序员没有调用DXUTInit()函数,则DXUT框架会自动使用默认参数调用该函数。

DXUT框架剖析(2)      摘要: DXUT框架提供了下列服务,帮助程序员创建一个应用程序:

(1)简化窗口和设备的创建。

(2)声明设备事件(创建、重置、丢失、销毁)和窗口事件(消息、键盘、鼠标)。

(3)在窗口模式和全屏模式间切换,在硬件抽象层设备和参考设备间切换。

(4)高分辨率计时器。

(5)为自动测试提供命令行支持。

(6)通过对话框或API选择设备。

(7)纹理GUI控件组,包括IME-enable文本框。

(8)附加杂类,例如简单的摄像机类。

DXUT框架剖析(1)      摘要: DXUT(也称sample framework)是建立在Direct3D API之上的Direct3D应用程序框架,有了DXUT这样一个Direct3D程序框架,只需在这个框架的基础上编写相应的代码,从而简化了 windows和Direct3D API的使用,可以高效地进行Direct3D程序设计。  

DXUT框架剖析系列文章(原创:天行健 君子当自强而不息)相关推荐

  1. DXUT框架剖析(14)

    本文版权归博客园 lovedday 所有,转载请详细标明原创作者及原文出处,以示尊重! 原创作者: lovedday  原文出处:DXUT框架剖析(14) 控件是用户接口的重要组成部分,为了便于用户操 ...

  2. DXUT框架剖析(13)

    本文版权归博客园 lovedday 所有,转载请详细标明原创作者及原文出处,以示尊重! 原创作者: lovedday  原文出处:DXUT框架剖析(13) 添加文本 DXUT框架对文本绘制进行了封装, ...

  3. DXUT框架剖析(11)

    本文版权归博客园 原创作者:  原文出处:DXUT框架剖析(11) DXUT统计函数 函数 描述 DXUTGetFPS 获取当前每秒提交的帧数 DXUTGetFrameStats 获取一个指向字符串的 ...

  4. DXUT框架剖析(10)

    本文版权归博客园 lovedday 所有,转载请详细标明原创作者及原文出处,以示尊重! 原创作者: lovedday  原文出处:DXUT框架剖析(10) 管理DXUT框架的函数 函数 描述 DXUT ...

  5. DXUT框架剖析(9)

    本文版权归博客园 lovedday 所有,转载请详细标明原创作者及原文出处,以示尊重! 原创作者: lovedday  原文出处:DXUT框架剖析(9) 下面列出允许改变DXUT行为和获取内部变量的函 ...

  6. DXUT框架剖析(8)

    本文版权归博客园 lovedday 所有,转载请详细标明原创作者及原文出处,以示尊重! 原创作者: lovedday  原文出处:DXUT框架剖析(8) DXUT框架与错误处理 Direct3D AP ...

  7. DXUT框架剖析(7)

    本文版权归博客园 lovedday 所有,转载请详细标明原创作者及原文出处,以示尊重! 原创作者: lovedday  原文出处:DXUT框架剖析(7) (2)帧事件 框架也提供了帧事件,它在渲染过程 ...

  8. DXUT框架剖析(6)

    本文版权归博客园 lovedday 所有,转载请详细标明原创作者及原文出处,以示尊重! 原创作者: lovedday  原文出处:DXUT框架剖析(6) 在窗口和设备创建好之后,应用程序需要使用消息循 ...

  9. DXUT框架剖析(5)

    本文版权归博客园 lovedday 所有,转载请详细标明原创作者及原文出处,以示尊重! 原创作者: lovedday  原文出处:DXUT框架剖析(5) 修改可用的设备 应用程序可以通过DXUTSet ...

最新文章

  1. 国航移动门户让我出行无忧
  2. 数据库查询速度极慢【个人工作问题解决过程记录】
  3. 如何自动以管理员身份运行.NET程序?
  4. Linux-常用系统管理命令
  5. 用xshell传输jdk_在JDK 9中将InputStream传输到OutputStream
  6. 关于 create-react-app 自定义 eslint文件配置解决方案
  7. Codechef QGRID
  8. Atitit.vs2017 visual studio vs2003 vs2005 vs2008 VS2010 vs2012 vs2015新特性 新功能.docx Atitit. visual st
  9. Mac 迅雷限速问题
  10. VS Code报错:Java 11 or more recent is required to run. Please download and install a recent JDK
  11. 安装安全防护软件有助于保护计算机不受侵害,安装安全防护软件有助于保护计算机不受病毒侵害。...
  12. 关于正向代理,反向代理,负载均衡的个人理解
  13. 根据贷款还款方式(等额本金,等额本息,等本等息,先息后本),计算本息
  14. 3D人体姿态估评估指标
  15. fhq-Treap题目记录
  16. 强化学习入门系列一VS强化学习的基本概念
  17. 修改latex表格内容无衬线字体
  18. 如何将竖屏视频转换为横屏,横屏转为竖屏
  19. N圆最密堆积、最小外接正方形的matlab求解(二维、三维等圆Packing 问题)
  20. 【Python代码基础(符号篇2)】

热门文章

  1. snmp是什么层协议_率先拥抱TSN——CC-Link发布新一代网络协议CC-Link IE TSN
  2. 1470. 重新排列数组
  3. 结构体02:结构体数组
  4. 什么是联表查询?(深度刨析,建议收藏)
  5. php代码连接mysql数据库,php连接mysql数据库代码
  6. 得知发行组长老潘今天岗位上最后一天就要离开有感
  7. Ubuntu系统中docker本地镜像的位置
  8. python键盘监听
  9. sudo报错案例-RHEL6
  10. Linux命令解释之passwd