原文:Direct3D基础知识

重新从头开始学习DX,以前太急于求成了,很多基础知识都没掌握就开始写程序了,结果出了问题很难解决.
 
1.       D3D体系结构
D3D与GDI处与同一层次,区别在于,D3D可以使用HAL(Hardware Abstraction Layer)通过DDI来访问图形硬件,充分发挥硬件性能.
2.       D3D设备对象
2.1 D3D设备类型
        HAL,支持硬件加速光栅化和硬件或软件处理
        Software Device,硬件模拟层
        REF,reference device,SDK专用.不过nVidia的PerfHUD就是用的这种设备类型
2.2   D3DPRESENT_PARAMETERS
1: typedef struct D3DPRESENT_PARAMETERS {
 2:     UINT BackBufferWidth, BackBufferHeight;//后台缓冲区宽高
 3:     D3DFORMAT BackBufferFormat;//后台缓冲区像素格式
 4:     UINT BackBufferCount;//后台缓冲区的数量
 5:     D3DMULTISAMPLE_TYPE MultiSampleType;//多重采样类型,用于反锯齿
 6:     DWORD MultiSampleQuality;
 7:     D3DSWAPEFFECT SwapEffect;//后台缓冲区复制到前台缓冲区的方式
 8:     HWND hDeviceWindow;//图形绘制窗口
 9:     BOOL Windowed;//窗口/全屏
10:     BOOL EnableAutoDepthStencil;
11:     D3DFORMAT AutoDepthStencilFormat;
12:     DWORD Flags;
13:     UINT FullScreen_RefreshRateInHz;//刷新速率,窗口时必须为0
14:     UINT PresentationInterval;
15: } D3DPRESENT_PARAMETERS, *LPD3DPRESENT_PARAMETERS;
BackBufferWidth与BackBufferHeight为0时系统自动使用当前窗口客户区宽高
BackBufferCount取0和1时都表示一个后台缓冲区
hDeviceWindow为NULL时默认为当前被激活的窗口
BackBufferFormat取D3DFMT_UNKNOWN时,像素格式取当前显卡的像素格式
2.3   CreateDevice中的BehaviorFlag
D3DCREATE_HARDWARE_VERTEXPROCESSING,硬件顶点运算
D3DCREATE_MIXED_VERTEXPROCESSING,软硬件共同进行顶点运算
D3DCREATE_MULTITHREADED,多线程绘制,会降低性能
D3DCREATE_SOFTWARE_VERTEXPROCESSING,软件顶点运算
              通常某些集成显卡不支持硬件顶点运算,如intel 的GMA900/950
2.4   D3D绘制
Clear(),可以清空颜色缓冲区,深度缓冲区,模板缓冲区.可以选择清除区域
BeginScene()和EndScene()不允许嵌套
Present(),可以指定更新区域(脏矩形技术?),不过要求用D3DSWAPEFFECT_COPY
3.       D3D设备对象
全屏模式:
               枚举显示适配器(多显示器适用)
               IDirect3D9::EnumAdpterModes()枚举支持的显示模式
               IDirect3D9::CheckDeviceType()检测显示模式是否支持硬件加速
               IDirect3D9::GetDeviceCaps()检查渲染设备是否支持所需要的功能(显卡兼容性检测)
               IDirect3D9::CheckDeviceFormat()检测其它表面格式是否支持
               IDirect3D9::CheckDepthStencilMatch()检测深度/模板缓冲区是否和渲染目标兼容
               IDirect3D9::CheckDeviceMultiSampleType()检查设备是否支持多重采样(反锯齿用)
窗口模式:
               直接用D3DADAPTER_DEFAULT就可以忽略前两步了,剩下的都一样
设备丢失:
                     图形显示丢失焦点,必须重新创建相关资源
                     任何显存资源在设备丢失时必须销毁,包括CreateAdditionalSwapChain()创建的交换链和D3DPOOL_DEFAULT格式的内存资源
4.       D3D表面
表面格式:通常有两个属性,表面大小与颜色位数
表面翻转:将后台缓冲区移动到前台缓冲区的过程
交换链:按顺序逐个提交到前台显示的多个后台缓冲区的集合
        多个视图的应用程序用多个交换链
访问表面内存:IDirect3DSurface9::LockRect(),不适用于多重采样后台缓冲区

【转载】Direct3D基础知识的更多相关文章

  1. 【转载】[基础知识]【网络编程】TCP/IP

    转自http://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=27043 [基础知识][网络编程]TCP/IP iooops  胖友们楼主我又 ...

  2. (转载)Java基础知识总结

    写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java语言代码把思路体现出来. 学习新技 ...

  3. [转载]Oracle基础知识

    一.oracle安装过程略 二.sys用户和system用户 (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限 默认密码是change_onins ...

  4. <转载>AWS 基础知识

    什么是AWS? Amazon Web Services (AWS) , 其实就是 亚马逊提供的专业云计算服务.其提供服务包括:亚马逊弹性计算网云(Amazon EC2).亚马逊简单储存服务(Amazo ...

  5. 转载 Deep learning:一(基础知识_1)

    前言: 最近打算稍微系统的学习下deep learing的一些理论知识,打算采用Andrew Ng的网页教程UFLDL Tutorial,据说这个教程写得浅显易懂,也不太长.不过在这这之前还是复习下m ...

  6. 转载:shell脚本之前的基础知识

    转载地址:http://www.92csz.com/study/linux/12.htm 第十二章 学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果 ...

  7. RabbitMQ基础知识(转载)

    RabbitMQ基础知识(转载) 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需 ...

  8. Java基础知识【下】( 转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  9. 【转载】Python编程中常用的12种基础知识总结

    Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进 ...

随机推荐

  1. python中的装饰函数

    在面向对象(OOP)的设计模式中,decorator被称为装饰模式.OOP的装饰模式需要通过继承和组合来实现,而Python除了能支持OOP的decorator外,直接从语法层次支持decorator ...

  2. 渲染、render与绘制

    渲染是抽象到具体的过程: 抽象:图片信息的描述(比如一条线:两个端点的位置.线粗.颜色等特征): 具体:依据抽象信息得到的可视图片(绘制过程). 渲染是中文翻译的问题,有种添油加醋的感觉.直意就是交与 ...

  3. webpack中热模块更新

    Hot Module Replacement,热模块更新,很多时候会简写成HMR. "scripts": { "start": "webpack-de ...

  4. 劳动节前得空半天-总结一下最近使用的LINUX命令

    一.搜索文件 1.locate xxx.log   全盘搜索xxx.log文件 2.which java       查找命令 3.ll  xxx.log         在目录下查找文件 二.搜索内 ...

  5. 1、Android-活动(下)

    1.4.活动的生命周期 对于活动来说生命周期的理解时非常重要的 当对其生命周期有了足够的了解,可以很好的写出程序 1.4.1.返回栈 Android中的活动是可以层叠的 没启动一个新的活动,就会立即覆 ...

  6. 3、Spring Cloud - Eureka(构建服务端/客户端)

    3.1.Eureka简介 3.1.1.什么是 Eureka 和Consul.Zookeeper 类似, Eureka 是一个用于服务注册和发现的组件,最开始主要应用 于亚马逊公司旗下的云计算服务平台 ...

  7. 转载:monkeyrunner之eclipse中运行monkeyrunner脚本之环境搭建(四)

    转载自:lynnLi 的monkeyrunner之eclipse中运行monkeyrunner脚本之环境搭建(四) monkeyrunner脚本使用Python语法编写,但它实际上是通过Jython来 ...

  8. fiddler常用功能一

    fiddler备忘,好久不用,有些步骤忘记了 1.本机pc,目前ie和chrome都可以直接抓取,但是搜狗浏览器暂时抓不到 2.手机端抓包 (1)设置下代理:fiddler客户端查看下端口,然后在手机 ...

  9. MySQL慢查询日志分析提取【转】

    原文:https://www.cnblogs.com/skymyyang/p/7239010.html 一:查询slow log的状态,如示例代码所示,则slow log已经开启. mysql> ...

  10. 后台npm

    后台进程运行 nohupwhich nohup.bash_profile中并source加载 如果没有就安装吧yum provides */nohup nohup npm start &原程序 ...