概述

Direct3D是一套底层图形API,借助该API我们可以利用硬件加速功能来实现3D场景的绘制,Direct3D可以视为应用程序和底层设备的交互。下图展示了Direct3D和硬件之间的交互关系:

图中Direct3D部分是一套已经定义好的,由Direct3D提供给应用程序和开发人员的接口函数,这些接口代表了当前Direct3D支持的所有功能。

注意:有些功能Direct3D支持,但是硬件设备却未必支持。

在上述的图中,Direct3D和硬件设备之间有一个环节:HAL(硬件抽象层),因为市面上的图形卡的种类太多了,Direct3D无法直接和硬件设备进行交互,例如:同样的一个清屏操作,不同的图形卡之间的操作可能大不一样。所以Direct3D就需要设备的制造商来实现一个HAL。

HAL是一个指示设备完成某些操作的设备相关的代码集,简单地说:HAL是代码集

基于HAL,Direct3D就可以不必关心底层硬件,其规范的指定便可以独立于硬件设备。

总结:设备制造商将自己硬件所支持的所支持的全部功能,都是实现到HAL里面。那些Direct3D支持但是设备不支持的功能就无法在HAL中实现。也就是说:调用一个没有在HAL中实现的Direct3D函数,就会调用失败(除非他是一种顶点处理运算,并且用户已经指定了软件顶点运算处理方式,这点暂时我也不太明白,有时间请教大神之后,再来补充吧)。

所以当你使用仅仅为少数的硬件实现的Direct3D功能的时候,务必要验证自己的硬件是否支持该功能。

REF设备

有时候Direct3D提供的而某些功能,本地的硬件不支持,但是还需要去使用这些功能,为了满足这些功能,Direct3D提供参考光栅设备,也就是REF设备,它能以软件的运行方式完全支持Direct3D API,借助REF设备您可以使用当前硬件不支持的功能,并对这些功能进行测试。

注意:REF设备仅仅应用于开发阶段,它与DirectX SDK绑定在一起,无法发布给最终的用户,此外,REF设备的速度十分的缓慢,在测试以外的场合十分不适用。

D3DDEVTYPE

在代码程序中,HAL设备用值D3DDEVTYPE_HAL来指定,该值是D3DDEVTYPR枚举类型的成员之一。类似的:REF设备用值D3DDEVTYPR_REF来指定,该值也是D3DDEVTYPE,枚举成员之一。

这些设备非常重要,因为我们在创建设备的时候,需要指定使用哪一种设备类型。

COM(组件对象模型)

COM(组件对象模型)是一项使得DirectX独立于编程语言并具备向下兼容特性的技术,我们常称COM对象为接口,可将其视为一个C++的类来使用。

关于COM组件,我们应该铭记以下:

1、我们仅仅需要知道的是:如何通过某个特定的函数或者COM接口的方法来获取指向一COM接口的指针。

2、创建COM接口时,不可以使用C++的关键字new。

3、使用完一个接口,应该调用接口相应的Release方法,而不是C++的关键字delete

4、所有的COM接口都继承自IUnknown,该接口提供了Release方法,使COM对象能够对其掌控的内存进行管理。

5、COM接口都有一个前缀“I”

下面是:DirectX9.03D库的下载地址:链接:https://pan.baidu.com/s/1028NylXtE6T3Y7MSVEs2GQ 密码:rp5x

Direct3D基础——Direct3D概述相关推荐

  1. 【转载】Direct3D基础知识

    原文:Direct3D基础知识 重新从头开始学习DX,以前太急于求成了,很多基础知识都没掌握就开始写程序了,结果出了问题很难解决. 1.       D3D体系结构 D3D与GDI处与同一层次,区别在 ...

  2. 虚拟化基础架构Windows 2008篇之1-虚拟化基础服务概述

    看完文章,请顺手投我一票(王春海),谢谢 http://edu.51cto.com/activityvote/voteRanking 京东6.18结束了,IT人自己的6.18来了!!!51CTO学院3 ...

  3. Kubernetes基础组件概述

    本文讲的是Kubernetes基础组件概述[编者的话]最近总有同学问Kubernetes中的各个组件的相关问题,其实这些概念内容在官方文档中都有,奈何我们有些同学可能英文不好,又或者懒得去看,又或者没 ...

  4. 展望未来计算机可以分为哪几种类型,大学计算机基础-计算机概述.ppt

    大学计算机基础-计算机概述.ppt 大学计算机基础 崔 晟 光电子科学与工程学院 E-mail: cuisheng@ Tel 课程概述 大学计算机教育的发展概况 教学目标 教学内容 教学设置与安排 学 ...

  5. 实验管理员掌握的计算机知识,计算机应用基础知识概述试验.DOC

    计算机应用基础知识概述试验 第1章 计算机应用基础知识概述实验 实验1.1 键盘指法练习及汉字输入 [实验目的与要求] 熟悉键盘布局及各键的功能. 掌握正确的键盘指法. 学会拼音输入法或五笔字型输入法 ...

  6. Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(一)基础知识概述

    Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(一)基础知识概述 前言 2016年,我写了一系列的 VUE 入门教程,当时写这一系列博文的时候,我也只是一个菜鸟 ...

  7. Swift基础知识概述

    第二章: Swift基础知识概述 1. 三件事 学习Swift语言 学习Xcode 理解ios开发组件,API.SwiftUI.SDK等 从以上三个方面自己修练.不用担心. 2. 开始学习 首先看一段 ...

  8. 低功耗蓝牙(BLE)基础知识概述

    1.开篇 低功耗蓝牙的概念以及低功耗蓝牙为什么能做到低功耗,蓝牙基础知识概述经典蓝牙和低功耗蓝牙的区别中就可以看出来了,这里就不多说了.本篇文章主要介绍BLE应用层开发中常见的一些概念以及BLE广播包 ...

  9. DIRECT3D基础知识 ---- 渲染与纹理 及位图,顶点缓存释义

    什么是渲染: 渲染-采集下的数字影片进行了剪接.加效果.加字幕.音乐等操作,当生成影片时需要将后加入的素材融合到影片中并压缩成为影片最终格式,这个过程就是渲染. 什么是纹理? 早期的计算机生成的3-D ...

最新文章

  1. flask 配置文件
  2. 利用Oracle分析函数实现多行数据合并为一行
  3. Creating my own systemd service files on Fedora 16(x86_64)
  4. linux下多进程编程简介
  5. thinkPHP 模板中的语法
  6. 剑指offer06:从尾到头打印链表
  7. STM32 SDIO详解
  8. Python——集合与字典练习
  9. OpenCV 单目摄像头(python版)
  10. 关于中国教育的一些思考
  11. Wi-Fi环境下基于注意力机制及深度学习的鲁棒被动感知技术
  12. linux配置ftp错误530,ubuntu16安装配置ftp服务(和530错误解决)
  13. jq操作数组的常用方法
  14. php+羊,PHP解决羊生羊的问题。
  15. scikit-learn入门到精通(二):seting和estimator
  16. RARP协议的使用场景
  17. SPH算法简介(四): Hello, SPH
  18. 少儿Python编程6-计算机数据结构和算法
  19. 全国电子设计竞赛(高频类题目)经验总结
  20. 要成为海贼王的HONOR

热门文章

  1. Stringtie详解
  2. 神一样的编程语言? -- 发现一个编程语言“shen”
  3. 考研线性代数题型总结
  4. ARM体系结构2:处理器内核和汇编指令集
  5. linux笔记本安装双显卡驱动(intel+nvidia)
  6. oracle查看dlink,oracle创建dlink方法
  7. Red Hat Enterprise Linux Server release 7.1 (Maipo) 安装gcc 的几种方式
  8. Linux各发行版的前世今生
  9. 怎么把win10设置Linux样式,老司机教你把win10系统界面换成win7样式的方法
  10. poj 4084:拓扑排序