专栏首页编程C加加游戏编程,大神十年的绝技,正确的入门,这才叫学习

C加加游戏编程,大神十年的绝技,正确的入门,这才叫学习

1.《C++ primer》

2.《Windows程序设计》

3.《VC++深入详解》

4.《Windows核心编程》

5.《Effective STL》

6.《Windows游戏编程大师技巧》

7.《DIRECTX.9.0.3D游戏开发编程基础》

这个书籍是从零编程基础开始的,其中部分书中涉及到了DirectDraw与Direct3D8,这两个API在新版本DirectX SDK中都被移除了,现在基本上无用武之地,所以涉及到DirectDraw与Direct3D 8的那部分就不用仔细看了哈。

1.DirectX的定义

首先,我们必须了解DirectX的定义。DirectX,(Direct eXtension,简称DX)是由微软公司创建的多媒体编程接口。由C++编程语言实现,遵循COM。被广泛使用于MicrosoftWindows、Microsoft Xbox和MicrosoftXbox 360电子游戏开发,并且只能支持这些平台。最新版本为DirectX 11,创建在最新的Windows 7上。MicrosoftDirectX是这样一组技术:它们旨在使基于Windows的计算机成为运行和显示具有丰富多媒体元素(例如全色图形、视频、3D动画和丰富音频)的应用程序的理想平台。DirectX包括安全和性能更新程序,以及许多涵盖所有技术的新功能。应用程序可以通过使用DirectX API来访问这些新功能。

学编程最重要的是实践,就是写代码、看别人写的代码、再写代码,你看再多的书,不写代码,你还是不会编程。但是写代码也要讲究方法循序渐进,不能刚学了几天语法,就想写个操作系统什么的,树立这种不切实际的目标只会让你的自信受到严重打击迷失自我。

2.引擎设计概述

游戏引擎是一系列高档代码,我们能够以它为基础开发自己的游戏。现代的游戏引擎现已对运用他的人隐藏了底层完结的细节和标准。如,能够在OpenGL和Direct3D的基础上开发烘托引擎,这样,引擎用户就不需求知道运用的是哪一个烘托引擎,尽管也用到了一些底层的东西。游戏引擎包括:烘托引擎,物理引擎,声响引擎等。游戏引擎自身只是一个由更小的引擎组成的调集。游戏引擎或它包括的内容并没有一个精确的界说。关于视频游戏而言,它的游戏引擎至少要包括烘托引擎和输入引擎,这是必须的,不然,就不能称其为交互式游戏。游戏程序员和游戏引擎程序员完结的是两种不同的作业。游戏程序员只与开发游戏的游戏引擎打交道,而游戏引擎程序员要开宣布其他人用于开发游戏的引擎

3.游戏引擎中的几个关键系统

游戏引擎中的几个关键系统有:游戏渲染系统,输入系统,声音系统,物理系统,动画系统,人工智能(AI)系统等。

4. DirectXAPI函数

DirectX的API主要由DirectGraphics,DirectInput,DirectPlay,DirectMusic,DirectSound组成。每个API之间相互独立,负责完成DirectX内核中不同的功能。DirectX中每个API都可以通过硬件加速,这意味着这些API可以直接和运行软件的底层硬件对话。下面是各种API函数的概要解释。

DirectGraphics:DirectGraphics为负责向屏幕渲染二维图形和三维图形的DirectX API,也就是众所周知的Direct3D。

DirectInput:DirectInput是可以直接使用所有与计算机关联的输入设备的DirectX API。这些设备包括键盘,鼠标和游戏控制器设备。

DirectPlay:DirectPlay是控制Direct中网络功能的Direct API。DirectPlay可以让应用程序对机器进行网络功能设置,从而可以通过和其他网络玩家交流。

DirectMusic:DirectMusic是负责普通声音处理的DirectX API。

DirectSound:DirectSound是负责高级声音处理的DirectX API。

5.动手写一个窗口

在Windows中使用Direct3D创建Win32窗口非常简单。要创建一个Win32窗口就必须拥有一个WinMain函数(这不是废话是什么)。我们可以在MSDN中查到WinMain的标准句法

int WINAPI WinMain(

HINSTANCEhInstance,

HINSTANCEhPrevInstance,

LPSTR lpCmdLine,

int nCmdShow

);

当程序第一次运行时,WinMain函数中的所有参数从系统获取自己的相应参数值。通过在WinMain函数内部创建一个类型为WNDCLASSSEX的窗口类对象,创建窗口,然后显示窗口,然后进行消息循环,就可以实现一个空窗口的显示。具体实现代码如下:下面是上面讲的框架代码,也是后面的笔记二的基础,需要结合笔记二一起看。

发现大家都在留言中说要推荐一下游戏开发相关的书籍,我这里就把各个阶段(从零基础开始)的推荐教程列出来吧,平时我写这个系列的笔记就参考了下面的很多书籍,大家感兴趣的话,可以深入去学习(推荐去买实体书,这样就不用整天盯着电脑屏幕看伤害眼睛,健康是用钱买不来的):

第一阶段,首先是C++的精通。推荐《C++ Primer》,之后《Effect C++》。

第二阶段,熟悉windows下的编程。推荐看《Windows程序设计》。

第三阶段,Visual C++的学习。推荐的书《VC++深入详解》。以及侯俊杰老师的《MFC深入详解》,与时俱进的有《Visual C++2010入门经典》。

(第二阶段和第三阶段可以结合着来学习,有很多知识是相辅相成的,并没有什么大的界限。)

第四阶段,刚开始学习专门介绍游戏开发的教程(有DirectX和OpenGL两条路可选,这儿我们挑选DirectX,DirectX在国内为干流。 ,荐书本为《DirectX 9.0 3D游戏开发编程基础》(封面为一个红龙的),《Windows游戏编程大师技巧》,《Direct3D游戏开发技能详解》等等,当然这类教程就比较多了,新出的有许多,DirectX相关的层出不穷,也能够挑选刚发行不久的新书,毕竟上面讲的常识比较前沿与更具老练性。(依然感谢liusofttech的指出,为什么我没有引荐专门讲解3D编程数学根底的教程。我没有专门指出来,是因为简直每一本Direct3D教材里面都有一章到几章有关必备数学根底常识的讲解。我觉得独自来学数学根底没必要,费时且吃力,我们只要在Direct3D或许OpenGL教材里掌握相关的数学常识,那就足够了。)

本文来自企鹅号 - 冷漠丶媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 月薪数万的攻城狮带你了解到什么是C语言编程思想,原来这就是编程思想

    什么是编程思想?答案可能很会复杂,但也可以很简单; 一句话来讲就是,用计算机来解决人们实际问题的思维方式,即编程思想; 编程就是为了解决实际中的问题,在思考如何...

    企鹅号小编
  • 程序员应该如何提高自己?

    想法和问题 当程序员已经处于中级时,应如何提高自己?有很多关于“学习编程”的资源,能够让人从 0 到新手(虽然这些资源中大多数的质量是值得商榷的),但是怎么样才...

    企鹅号小编
  • 大数据入门基础系列之浅谈Hive的数据存储和元数据存储

    Hive的数据存储 从表(Table)、外部表(External Table)、分区(Partition)和桶(Bucket)。 (1)Hive数据库 类似传统...

    企鹅号小编
  • 轻松水印-批量提取exif信息加水印的工具

            今天整理了一下自己的照片,选了一部分准备到网上冲印出来,整理好的照片,都没有日期,我很希望能够有日期,以后看到照片立刻就能想起来。但是,如果手工...

    用户1075292
  • 面向对象多继承和网络编程

    py3study
  • 什么是小样本学习?这篇综述文章用166篇参考文献告诉你答案

    数据是机器学习领域的重要资源,在数据缺少的情况下如何训练模型呢?小样本学习是其中一个解决方案。来自香港科技大学和第四范式的研究人员综述了该领域的研究发展,并提出...

    机器之心
  • 小样本学习最新综述

    数据是机器学习领域的重要资源,在数据缺少的情况下如何训练模型呢?小样本学习是其中一个解决方案。来自香港科技大学和第四范式的研究人员综述了该领域的研究发展,并提出...

    CV君
  • Python 系统时间与Mysql时间对

     由于自己是负责海外项目,常常会遇到一些问题,最近被系统时间与mysql时间不在一个时区,而坑了自己,一般修改了系统时区之后,MySQL必须重启,不然MySQ...

    py3study
  • 视频流媒体平台内JAVA8的流式编程——常用流操作

    通俗地讲,流是支持类似数据库操作的“花哨的迭代器”。技术上讲,它是从某个数据源获得的支持聚合操作的元素序列。我们的视频流媒体服务器EasyNVR、EasyDSS...

    EasyNVR
  • 使用Angular reactive form发送HTTP请求的一个简单例子

    每当form内input field值发生变化时,通过this.formcontrol.valueChanges发送事件,valueChanges类型为Even...

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券