zoukankan      html  css  js  c++  java
  • DirectX学习入门笔记(一)

    原文: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。你仍然需要手动增加一些库文件到你的项目中,

  • 相关阅读:
    LeetCode 1245. Tree Diameter
    LeetCode 1152. Analyze User Website Visit Pattern
    LeetCode 1223. Dice Roll Simulation
    LeetCode 912. Sort an Array
    LeetCode 993. Cousins in Binary Tree
    LeetCode 1047. Remove All Adjacent Duplicates In String
    LeetCode 390. Elimination Game
    LeetCode 1209. Remove All Adjacent Duplicates in String II
    LeetCode 797. All Paths From Source to Target
    LeetCode 1029. Two City Scheduling
  • 原文地址:https://www.cnblogs.com/XiHua/p/11050770.html
Copyright © 2011-2022 走看看