现下游戏开发还win10需要directx直接用directx吗

游戏开发是用OpenGL还是DirectX_百度知道
游戏开发是用OpenGL还是DirectX
本人准备学习游戏开发,搜索的很多书籍,却发现opengl的书籍比较少,大部分是用DX来开发游戏的,那我该学哪个,我觉得opengl比DX强大,但是学Opengl可能会有点难,只是书籍比较少
我有更好的答案
1,除了windows游戏,其他都是OpenGL游戏,包括各种网页小游戏。当然也有OpenGL的windows游戏哦,甚至是大作,少点而已。2,在游戏之外的使用,都是OpenGL,而基本无DX。3,学术上基本是OpenGL。
采纳率:80%
opengl只是图形引擎dx除了图形外还有音频等其他的我目前就是在用opengl 感觉基础的不难
为您推荐:
其他类似问题
您可能关注的内容
directx的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。基于DirectX的小游戏的设计与实现_图文_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于DirectX的小游戏的设计与实现
总评分4.0|
用知识赚钱
&&基于DirectX的小游戏的设计与实现
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩36页未读,
定制HR最喜欢的简历
你可能喜欢&>&DirectX游戏编程+源代码
DirectX游戏编程+源代码
上传大小:8.4MB
DirectX游戏编程+源代码
作者 陈洪 周国庆 冯人果
必备的数学知识
基本的数学概念 3
三维空间中的向量 3
向量的相等 6
向量模的计算 7
向量归一化 8
向量加法 8
向量减法 9
矩阵的相等、矩阵数乘和
矩阵加法 13
矩阵乘法 13
单位矩阵 15
矩阵的转置 16
D3DX中的矩阵 16
基本变换 19
平移变换 20
旋转矩阵 21
缩放矩阵 23
组合变换 23
一些用于向量变换的
D3DX中的平面 26
点和平面之间的关系 27
构建平面 27
标准化一个平面 28
对平面进行变换操作 29
求到一个指定点距
平面上的点 29
射线的表达式 30
射线与平面的相交 31
Direct3D基础知识
Direct3D初始化 35
Direct3D体系结构 35
REF设备 36
D3D设备类型 36
组件对象模型 37
预备知识 37
表面缓冲区(Surface) 37
像素格式 40
交换链和页面翻转 41
深度缓冲区 42
顶点处理 43
设备性能 43
初始化Direct3D 44
获得IDirect3D9接口 45
确认硬件顶点处理能力 45
填充D3DPRESENT_
PARAMETERS结构 46
创建一个IDirect3DDevice9
示例:初始化Direct3D 49
d3dUtility.h/cpp文件 50
程序框架 52
D3D初始化示例 52
渲染管道 57
描述的模型 57
顶点格式 58
虚拟摄像机 60
渲染管道 61
本地空间 62
世界空间 62
视图空间 63
背面裁剪 65
视口变换 69
在Direct3D中绘制图形 71
顶点/索引缓冲区 71
创建顶点缓冲区和
索引缓冲区 71
访问缓冲区内存 74
获得顶点缓冲区以及索引
缓冲区的相关信息 75
渲染状态 76
渲染前的准备工作 77
使用顶点/索引缓冲区进行渲染 78
IDirect3DDevice9::
DrawPrimitive 78
IDirect3DDevice9::
DrawIndexedPrimitive 78
Begin/End Scene 80
D3DX自带的几何物体 80
示例:三角形、立方体、
茶壶、D3DXCreate* 81
颜色的描述方法 87
顶点颜色 90
着色处理 90
示例:带颜色的三角形 91
光的组成 95
顶点法线 98
示例:光照 104
其他例子 106
纹理坐标 109
创建并应用纹理 111
纹理过滤 112
多纹理映射 113
多纹理映射过滤 113
在Direct3D中使用多纹理
纹理坐标寻址模式 114
程序示例:带纹理的四边形 116
混合技术 119
混合方程 119
混合因子 121
Alpha通道 122
指定源像素的Alpha值 122
用DirectX的纹理工具创建Alpha
示例:透明效果 124
模板缓冲区 129
使用模板缓冲区 130
获取模板缓冲区 131
模板测试 131
模板测试的控制 131
更新模板缓冲区 133
模板写入掩码 134
示例:镜子 134
镜面反射的相关数学知识 134
镜面效果的实现概述 136
代码和解释 137
示例:平面阴影 140
平行光阴影 141
点光源阴影 142
阴影矩阵 142
用模板缓冲区来防止
二次混合 143
代码和解释 144
Direct3D的应用
文字处理 149
ID3DXFont、ID3DXFont接口 149
创建一个ID3DXFont
文字输出 150
计算帧速(FPS) 151
CD3DFont、CD3DFont类 152
构造CD3DFont对象 152
DrawText输出文字 153
销毁CD3DFont对象 153
三维网格(3D Mesh)在文字显示中的
D3DXCreateText方法 154
网格(1) 157
几何信息 157
网格子集(Subset)和属性缓冲区 158
网格的渲染 160
网格优化 160
网格属性表 162
邻接信息 164
网格的克隆(Cloning) 165
网格的创建
(D3DXCreateMeshFVF) 166
示例:创建并渲染一个网格 168
网格(2) 175
ID3DXBuffer接口 175
.X文件 176
读取.X文件 177
X文件中的材质 178
X文件实例 178
生成顶点法线 181
渐进式网格 182
生成渐进式网格 183
顶点属性权重 184
ID3DXPMesh接口的
相关方法 185
示例:渐进式网格 186
包围体 189
新的常量 191
各种不同的包围体 191
包围体示例 192
构建一个灵活的摄像机类 195
设计摄像机 195
摄像机类的实现细节 197
计算视图矩阵 197
绕任意轴的旋转 200
俯仰、偏转和翻滚 200
行走、平移和飞行 203
示例:摄像机 204
基本地形渲染 207
高度图 208
高度图的创建 208
读取RAW文件 209
高度图的访问和修改 210
生成地形几何数据 210
计算顶点 212
计算索引——
定义三角形 214
用程序生成纹理数据 216
计算方格的阴影 219
计算地形阴影 221
在地形上“行走” 221
Terrain示例程序 225
一些改进措施 226
粒子系统 229
粒子和点精灵 229
结构格式 230
Point Sprite渲染状态 230
粒子及其属性 232
粒子系统组件 233
粒子系统的渲染 238
粒子的随机性 241
实现三个具体的粒子系统:雪景、
焰火和粒子枪 242
示例:雪景 242
示例:焰火 244
示例:粒子枪 246
屏幕到投影窗口的变换 251
计算Picking射线 252
变换射线 253
射线与物体的相交检测 254
示例:Picking 256
Shader和特效
高级Shader语言的介绍 261
使用HLSL编写Shader程序 262
全局变量 263
输入输出结构 264
入口点函数 265
编译一个HLSL Shader程序 266
常量表 266
编译HLSL Shader程序 270
变量类型 272
标量类型 272
向量类型 272
矩阵类型 273
typedef关键字 276
变量前缀 276
关键字、语句和类型转换 277
关键字 277
基本的程序流程 277
类型转换 278
运算符 279
用户自定义函数 280
内建函数 282
Vertex Shader的介绍 285
顶点声明(Vertex Declaration) 286
顶点声明的描述 286
创建顶点声明 289
启用一个顶点声明 289
顶点数据的用途 290
使用Vertex Shader的步骤 292
编写与编译
Vertex Shader 292
创建Vertex Shader 292
设置Vertex Shader 293
销毁Vertex Shader 293
示例:散射光 293
示例:卡通渲染
(Cartoon Rendering) 299
(Cartoon Shading) 300
卡通着色的Vertex Shader
勾画出物体的轮廓 303
Pixel Shader入门 309
多重纹理概述 309
启用多重纹理 311
多重纹理坐标 312
Pixel Shader的输入和输出 313
使用Pixel Shader的步骤 314
编写并编译Pixel Shader
创建一个Pixel Shader 314
设置一个Pixel Shader 315
销毁一个Pixel Shader 315
HLSL取样对象 315
示例:通过Pixel Shader实现
多重纹理 317
(Effects Framework) 325
Technique与Pass 326
更多的HLSL内建对象 327
texture对象 327
取样器(sampler)对象和
取样器状态 328
Vertex Shader对象和
Pixel Shader对象 328
字符串(string) 329
注解(Annotations) 330
特效文件中的设备状态 330
创建一个特效 331
设置常量 333
使用特效 335
获得特效句柄 335
激活特效 336
启用特效 336
设置当前的渲染Pass 337
关闭特效 337
示例:通过特效文件实现光照效果
和纹理贴图 338
示例:雾化效果 343
示例:卡通效果 345
特效编辑器(EffectEdit) 347
Windows程序设计简介 349
事件、消息队列、消息和
消息循环 350
图形用户接口(GUI) 351
简单的Windows应用程序 352
一个更好的消息循环 364
参考文献 366
...展开收缩
综合评分:4
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有87条
这个资源可以用
还是不会用d3d啊
资料不错,正是我想要的,谢谢
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
DirectX游戏编程+源代码
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
举报的资源分:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*详细原因:
DirectX游戏编程+源代码《游戏开发经典丛书:DirectX游戏开发终极指南》([美]谢里德(Sherrod,A.))【摘要 书评 试读】- 京东图书
游戏开发经典丛书:DirectX游戏开发终极指南
京 东 价 &
[定价 &¥]
PLUS会员专享价
您购买此商品可享受专属价
增值业务 &
重  量 &
搭配赠品 &
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
商品介绍加载中...
下载客户端,开始阅读之旅
权利声明:京东上的所有商品信息、客户评价、商品咨询、网友讨论等内容,是京东重要的经营资源,未经许可,禁止非法转载使用。
注:本站商品信息均来自于合作方,其真实性、准确性和合法性由信息拥有者(合作方)负责。本站不提供任何保证,并不承担任何法律责任。
印刷版次不同,印刷时间和版次以实物为准。
价格说明:
京东价:京东价为商品的销售价,是您最终决定是否购买商品的依据。
划线价:商品展示的划横线价格为参考价,该价格可能是品牌专柜标价、商品吊牌价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品在京东平台上曾经展示过的销售价;由于地区、时间的差异性和市场行情波动,品牌专柜标价、商品吊牌价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:如无特殊说明,折扣指销售商在原价、或划线价(如品牌专柜标价、商品吊牌价、厂商指导价、厂商建议零售价)等某一价格基础上计算出的优惠比例或优惠金额;如有疑问,您可在购买前联系销售商进行咨询。
异常问题:商品促销信息以商品详情页“促销”栏中的信息为准;商品的具体售价以订单结算页价格为准;如您发现活动商品售价或促销信息有异常,建议购买前先联系销售商咨询。
iframe(src='//www.googletagmanager.com/ns.html?id=GTM-T947SH', height='0', width='0', style='display: visibility:')游戏开发新手入门之DirectX入门_网易科技
游戏开发新手入门之DirectX入门
用微信扫码二维码
分享至好友和朋友圈
今天我们要接触到令人敬畏的DirectX。它比Windows GDI要快好几倍,可用于不同的语言和多种平台,支持从绘制象素到高级3D图象,从播放简单声音到数字音乐,从键盘控制到反震手柄……它给你游戏编程所需的一切(有点夸张)。当然了,它是巨大的,需要好几本书才能含盖它的全部。先不要去担心我在这里所教给你之外的数不清的知识,毕竟我把你推到了起跑线上。
阅读本章,你需要前几章的知识和C语言的知识,由于我们还要谈到组件对象模型(COM),它是面向对象系统的基础,你最好还要有一点儿C++的知识。没有也不太要紧,我在讲到这处时会照顾你的。反正你记住,使用DirectX并不需要多少C++的知识。开始吧!
☆ 什么是DirectX?
DirectX是游戏制作者的API(Application Development Interface)。它是一组允许你直接控制计算机硬件设备的软件。如果你的硬件支持DirectX,并且你用硬件加速你的程序,这就意味着一个字——快。不用担心你的硬件知识,你不会真正的接触到它们。我们是通过硬件抽象层(HAL)和硬件仿真层(HEL)来保证设备无关性和让你的程序正常运行。
DirectX由很多组件构成,每一个都有特定的用途。组件DirectDraw是最为重要的一个,因为所有的图形都要用到它,它是2D图形的引擎,3D图形也同样离不开它。DirectDraw是我们今天就要说的。其它的组件是:
▲ DirectSound:提供硬件和软件的声音混合与回放。
▲ DirectMusic:处理基于消息的音乐数据。它支持乐器数字接口(MIDI)并为创建交互式音乐提供创作工具。
▲ DirectPlay:使得通过调制解调器链接或通过网络来与应用程序相连成为可能。
▲ Direct3D:是一个三维图形包,它提供一个高级的保留模式(Retained Mode)接口,这使得你能够实现一个完整的三维图形系统。它还包含一个低级的即时模式(Immediate Mode)接口,使得应用程序获得对渲染管线的完全控制。
▲ DirectInput:为包括游戏杆、鼠标、键盘和游戏控制器在内的输入设备提供支持。它还为反馈游戏设备提供支持。
▲ DirectSetup:为DirectX提供了一个简单的安装过程。它简化了更新显示和音频驱动程序的过程,并且确保没有硬件或软件冲突的存在。
▲ AutoPlay:让你能够制作一张一旦插入驱动器就能自动安装的光盘。AutoPlay并非DirectX所独有,因为它是Microsoft Win32 API的一部分。
组件对象模型(COM)是DirectX的基础,有一些技巧建立COM对象——别问我怎么做——但你知道一点点还是有好处的。我只是简单说一下,如果你有兴趣,具体的细节就自己查资料吧!可能下一节你有些困惑,但不要紧,我所说的你不用太明白,毕竟我们的目的是使用COM对象,这可比创建容易多了。
☆ 组件对象模型(COM)
COM接口是DirectX技术的基础,没有COM就没有DirectX。(不用担心,你只需要对COM技术有一个粗浅的了解就可以使用DirectX——只要你在编写DirectX应用程序时遵循一定的步骤,甚至都可以在不了解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。但这还不够,因为在COM层上直接使用DirectX是令人沮丧的和乏味的。我们希望有更容易的办法解决它。利用静态库(.LIB文件)是个好办法,它是DirectX软件包的一部分,你可以从Microsoft免费获得。它有一个“打包”函数使你工作更轻松。使用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 7.0。
☆ DirectX版本号
你可能认为版本号没有什么好讲的,但我们确实要说一说。Microsoft在DirectX里创建了令人难以置信的科技,但它并不代表不使人迷惑。对于每一个DirectX版本,并不是所有的接口都一次次的升级。因此,尽管DirectX有了7个版本(我写文章时DirectX8.0正准备发布),但DirectDraw并没有7个版本。当DirectX6是最新版本时,DirectDraw的最新接口版本是IDirectDraw4,不是IDirectDraw6。现在最新的版本是DirectX7,所以我们要用IDrectDraw7。很奇怪,是不是?我想你已经明白了我的意思,请不用因为以后看到的感到困惑了。
最后一件事。当我写这篇文章时,DirectX7是最新的可用版本,但或许现在你已经有了DirectX8,并且或许你还听说了,DirectDraw将不再升级了,取代它的是DirectX Graphics,这是一个功能强大的图形API。但DirectDraw不升级就意味着我们不学习它了,毕竟都离不开COM。如果你想用DirectX8的接口写2D的游戏,你需要用3D方法去创建2D观点。听起来很棒,是的,的确如此,因为使用3D接口将给你更多的硬件支持,例如阿尔发混合。但这也恰恰是个问题,如果机器没有相应的硬件设备,程序会以更慢的速度运行。
DirectDraw是很容易学的。由于DirectX中的3D图形是基于DirectDraw的,3D应用程序在DirectDraw环境中执行;极少有应用程序专门使用3D。大多数程序使用3D函数对一些对象建模,而另一些对象,诸如背景和精灵,是以2D图形渲染的。所以本系列将使用DirectDraw。关于DirectX8,我还没有太多的了解,因此我只能对DirecX7做详细介绍。总的来说,你使用DirectX,还是离不开DirectDraw的。
本文来源:天极网
责任编辑:王晓易_NE0011
用微信扫码二维码
分享至好友和朋友圈
加载更多新闻
热门产品:   
:        
:         
热门影院:
阅读下一篇
用微信扫描二维码
分享至好友和朋友圈

我要回帖

更多关于 directx游戏开发 的文章

 

随机推荐