原文:https://blog.csdn.net/butcher986115/article/details/50595937 

什么是DirectX?

DirectX是游戏制作者的API(Application Development Interface)。

它是一组允许你直接控制计算机硬件设备的软件。

我们是通过硬件抽象层(HAL)和硬件仿真层(HEL)来保证设备无关性和让你的程序正常运行。

DirectX由很多组件构成,每一个都有特定的用途。

(1)组件DirectDraw是最为重要的一个,因为所有的图形都要用到它,它是2D图形的引擎,3D图形也同样离不开它。

(2)DirectSound:提供硬件和软件的声音混合与回放。

(3)DirectMusic:处理基于消息的音乐数据。它支持乐器数字接口(MIDI, Musical Instrument Digital Interface)并为创建交互式音乐提供创作工具。

(4)DirectPlay:使得通过调制解调器链接或通过网络来与应用程序相连成为可能

(5)Direct3D:是一个三维图形包,它提供一个高级的保留模式(Retained Mode)接口,这使得你能够实现一个完整的三维图形系统。它还包含一个低级的即时模式(Immediate Mode)接口,使得应用程序获得对渲染管线的完全控制。

(6) DirectInput:为包括游戏杆、鼠标、键盘和游戏控制器在内的输入设备提供支持。它还为反馈游戏设备提供支持。

(7)DirectSetup:为DirectX提供了一个简单的安装过程。它简化了更新显示和音频驱动程序的过程,并且确保没有硬件或软件冲突的存在。

(8) AutoPlay:让你能够制作一张一旦插入驱动器就能自动安装的光盘。AutoPlay并非DirectX所独有,因为它是Microsoft Win32 API的一部分。

组件对象模型(COM)是DirectX的基础.

组件对象模型(COM)

COM接口是DirectX技术的基础,

DirectX的大多数API都是基于COM结构的。COM为软件模块化和软件重用提供了最坚实的基础,它的最重要的概念就是接口(interface),接口是软件重用的最基本方法。更专业的说,接口是一系列操作的规范描述,即接口规范。

所有的COM接口都是从Iunknown接口继承而来的,IUnknown接口是所有COM接口的根。IUnknown接口具有3个方法:

· QueryInterface():此方法查询新接口,并在新接口存在时返回之。

· AddRef():此方法在接口或其它应用程序链接到此COM对象上时将引用计数值递加1。

· Release():此方法将COM对象的引用计数递减1。当引用计数递减到0时,该COM对象自动释放。

所有COM对象都具有这三个方法。虽然DirectX应用程序一般不需要考虑引用计数的问题,但引用计数确实是存在的,它已经由DirectX自动完成了。

我们所要做的,就是创建DirectX对象,然后在使用完毕后调用Release方法释放引用。

☆ 设置

用DirectX创建程序,你需要有三件主要的事要做。

第一件事是COM对象本身,它们包含在.DLL文件里,这些.DLL文件需要在Windows里注册,这在安装DirectX软件包时已经完成了。这些对象是我们创建DirectX应用程序时用到的接口,例如IdirectDraw。

使用DirectX的不同组件,你需要链接不同的静态库。例如你要使用DirectDraw组件,你就需要ddraw.lib。

最后,你还需要DrectX头文件,它包含函数原形、宏、常量和你需要用到的各种类型。对于DirectDraw,这个头文件是ddraw.h。

要确认你使用了正确的文件版本,你还得让编译器包含软件开发包的目录。

具体的做法是:

首先点击Tool菜单,选择Options,然后点击Directories,在Show Directories for 组合框下拉菜单中选择Include files,增加一个新的目录。将你的DirectX的路径填入。(例如:C:DXSDKinclude)然后将它移到列表的第一位,使编译时第一个寻找它(防止寻找老版本)。然后选择Show Directories for组合框下拉菜单中的Library files,方法同前,只是把include改成lib。现在,你已经设置完了DirectX。你仍然需要手动增加一些库文件到你的项目中,

DirectX学习入门笔记(一)的更多相关文章

  1. 每天成长一点---WEB前端学习入门笔记

    WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...

  2. ORMLite学习入门笔记

    ORMLite学习入门笔记 使用原始的SQLiteHelper来操作维护数据库有点过于繁琐,重复工作量较大.所以会想到使用一个比较方便的ORM来维护我们本地的数据库,各位业界前辈都给我推荐了ORMLi ...

  3. 别人的spring学习入门笔记

    http://elf8848.iteye.com/blog/875830  可以做入门参考,英语好可以阅读spring的spring-framework-reference 更多学习blog http ...

  4. Away3D引擎学习入门笔记

    (1). 准备工作,一些必须知道的东西 (创建时间:2014-06-05) A.必要的开发语言基础.至少要懂点ActionScript 3.0语法(ActionScript 3.0语法及API参考), ...

  5. PyTorch深度学习入门笔记(一)PyTorch环境配置及安装

    @ 目录 一.工具安装 1.1 Anaconda 安装 1.2 Pytorch安装 二.编辑器安装 2.1 Pycharm安装 2.2 Jupyter安装 OS: ubuntu 20.04(虚拟机) ...

  6. .net Elasticsearch 学习入门笔记

    一. es安装相关1.elasticsearch安装  运行http://localhost:9200/2.head插件3.bigdesk插件安装(安装细节百度:windows elasticsear ...

  7. QT学习入门笔记

    系统路径 path 添加dll路径,如D:\QT\5.4\mingw491_32. .pro 文件添加 QT +=  widgets,否则出现qapplication no such file or ...

  8. Kotlin学习入门笔记

    参考资料 官网:https://kotlinlang.org/ 官方文档:https://kotlinlang.org/docs/reference/ Kotlin 源码:https://github ...

  9. SpringBoot入门笔记(一)、HelloWorld

    本文是一篇SprintBoot学习入门笔记 1.打开Eclipse,版本为Oxygen 4.7.0 2.新建项目NewProject->MavenProject->Next->Nex ...

随机推荐

  1. jquery easyui datagrid 在翻页以后仍能记录被选中的行及刷新设置选中行数据

    //easyUI的datagrid在复选框多选时,如何在翻页以后仍能记录被选中的行://注意datagrid中需要配置idField属性,一般为数据的主键 $.ajax({ type: 'GET', ...

  2. 用PHP写PHP7扩展,超级简单对吧!

    [图片打不开,请用代理] 介绍: PHP扩展是编译库,它允许在您的PHP代码中使用特定的功能(主要是使用C编写的php扩展). 例如,您需要使用PHP使用SQLite3,您可以实现自己的方法和功能来连 ...

  3. MVC比WebForm的优势,为什么使用MVC

    前言 如果你看了最近微软的议程,你会发现他们现在的焦点除了MVC,还是MVC.问题在于为什么微软如此热衷于丢弃传统的APS.NET Webform而转向ASP.NET MVC?本文就主要来讨论这个问题 ...

  4. 每周分享五个 PyCharm 使用技巧(四)

    文章首发于 微信公众号:Python编程时光 PyCharm 是大多数 Python 开发者的首选 IDE,每天我们都在上面敲着熟悉的代码,写出一个又一个奇妙的功能. 一个每天都在使用的工具,如果能掌 ...

  5. 【洛谷 P3346】 [ZJOI2015]诸神眷顾的幻想乡(后缀自动机)

    题目链接 广义sam+不同子串个数.. 找到所有入度为\(0\)的点开始\(dfs\),建出广义sam. 然后就是不同子串个数了 #include <cstdio> #include &l ...

  6. 解决SecureCRT 中文乱码??

    在linux服务器上搭建solr,用的是SecureCRT  连接linux服务器,发现不能输入中文,配置文件中的中文也是乱码:先以为是SecureCRT工具编码的问题,把编码改成utf-8之后发现还 ...

  7. iOS - 小功能 跳转到淘宝或天猫的商品展示详情页

    最近做iOS项目的时候遇到一个需求,点击广告页,跳转到淘宝或天猫的商品详情页. 具体需要是这样: 1)安装了淘宝:跳转到淘宝详情页. 2)没装淘宝,装了天猫:跳转到天猫详情页 3)淘宝.天猫都没装:跳 ...

  8. 【错误集】类ExcelExport是公共的, 应在名为 ExcelExport.java 的文件中声明

    检查类名是否相同 区分大小写,复制代码的时候会连类名也复制了,哈哈哈,总结一下

  9. javascript高级程序设计阅读总结

    5章 引用类型 1.object类型 创建 1.var obj ={} ---对象字面量 2.var obj = new Object(); ---new操作符 2.Array类型 创建 1.var ...

  10. RestFramework之序列化器源码解析

    一.源码解析之序列化: 1.当视图类进行实例化序列化类做了如下操作: #ModelSerializer继承Serializer再继承BaseSerializer(此类定义实例化方法) #在BaseSe ...