direct3d中的2d编程 2D游戏问题

恩没错其实是这样的。我是大一的学生,这学期计算概论的课期末的大作业就是自己做一个黑白棋的游戏。由于我实在是不知道怎么从我们这样一开始学C++到能做一个像平时玩的一个简单的游戏。希望能知道我如果要做这么一个事要自己去学什么东西。要怎么入手?
我们平时玩的游戏需要图形接口在显示器上绘制3D游戏一般使用Direct3D或者OpenGL,2D游戏也有貌似有SDL、Direct2D等。一般你需要通过所在平台(比如Windows)的桌面接口创建窗口,然后用这些图形接口提供的函数去画窗口里的内容。(有一些也提供简化快速的方法,比如GLUT就有创建窗口的函数,而且是跨平台的)至于黑白棋,在命令行里一行行画字符图也可以显示,通过输入命令下棋,每一步之后刷新显示;或者用GUI库在窗口里摆放按钮,按钮上放上不同的颜色也可以了;或者用图形库去画棋盘、棋子。上述的东西都可以用C++去实现,但是具体怎么使用这些库,以及怎么实现游戏的逻辑,就得题主自己去钻研了~
&b&首先我分析下你的问题:&/b&&br&“怎么从我们这样一开始学C++到能做一个像平时玩的一个简单的游戏”&br&&br&&b&“从我们这样一开始学C++” &/b&&br&这是你的现在状态,那么我假定:你还没有C++入门咯,或者C++刚完成“理论部分”&br&其实第一个答主,&br&&a href=&/people/clones1201& class=&internal&&Clones&/a&&br&这位同学说的是调用游戏引擎和图形库去开发游戏,我觉得题主还没有达到这个水平,所以我暂时不和你说一些图形库和游戏引擎。&br&我认为你是刚入门。(如果我理解错了,请纠正O(∩_∩)O哈!)&br&&br&&b&“能做一个像平时玩的一个简单的游戏”&/b&&br&我不知道咯租户对于这个“简单的游戏”是怎么定义的?&br&&br&&u&1.&/u&&br&黑窗口的贪吃蛇你玩过没?&br&(你懂黑窗口吧,就是cmd菜单,就是你第一次输入&hello world&那个黑黑的窗口,学术名:控制台程序)&br&听懂了吗?&br&&br&&u&2.&/u&&br&
或者说,你所谓“简单游戏”,是电脑上的“拳皇“,”合金弹头“,这些单机,&br&
或者一些更炫的桌游或者,现在很流行的撸啊撸这类网游。&br&&br&&u&3.&/u&&br&或者说,你想要的是安卓手机上,社么”2048“
&天天酷跑 &
&3D飙车&&br&&br&&br&*********************************************************************************************************&br&&br&这三类都是游戏,所谓&简单&,我觉得不好理解。&br&我建议楼主以后问问题的时候,可以打个比方,举个详细的例子,否则他人无法理解,你到底想要什么?&br&&br&*********************************************************************************************************&br&&br&言归正传,我上面标记为1的是楼主必须要会的,就是你如果想做2,3,这种类型的游戏,第一步&br&1代表的&b&控制台程序&/b&必须要会。&br&&br&这些游戏,比如 &贪吃蛇& ”俄罗斯方块“ ”飞行器“ &br&这类控制台的游戏,虽然无趣,但是如果你想做一些看起来很炫很艳丽的2,3类游戏,相信我,你控制台这关,最好是认真做完。&br&这类游戏,你可以去图书馆借一本 ”C语言课程设计”&br&这本书真的认认真真学完,敲出每一行代码,你的面向过程编程能力,基本可以放心了。&br&有什么代码细节搞不定,上 &b&CSDN, 博客园,overflow&/b& 去问,去发帖问。&br&问百度。&br&翻墙问谷歌。&br&但如果是架构上的问题,问老师吧或者一些 &真的很& 牛逼的学长。&br&&br&&b&不要急躁,打基础这一步,千万不要跳&/b&&br&完成这一步,第&u&&b&1&/b&&/u&类游戏相信,对你来说不在话下,更重要的是,你的C语言功底绝对会有一个很大提升。&br&&br&****************************************************************************************************************&br&&br&第二,当你第一步完成了,1类游戏搞定了,那我就可以告诉你,第二类游戏,会接触4个概念:&b&面向对象编程OOP&/b&,&b&游戏引擎&/b&,&b&可视化编程&/b&,&b&GUI&/b&(图形界面)&br&这个时候C++的确可以做,一些简单的带图形的游戏。&br&&br&至于用了啥技术,你把我说的下面这本书看一下,就都知道了,码字好累。。。&br&&br&比如,你能力够,完全可以把 &b&合金弹头&/b& 那种游戏,或者 手机上&b& 天天酷跑 &/b&这些游戏移植到windows上来,只是你至少要去图书馆借一本书:&br&&img src=&/820b345af20bd9e17e7a83a1c729c4df_b.jpg& data-rawwidth=&537& data-rawheight=&643& class=&origin_image zh-lightbox-thumb& width=&537& data-original=&/820b345af20bd9e17e7a83a1c729c4df_r.jpg&&&br&当初我倒是做过一个 坦克大战的windows版。可惜源码已不知所踪。&br&你可以百度试试有没有写好的源码。&br&&br&这本书当时我是下的pdf版,如果嫌弃太老了,你去图书馆借一本和这本书类似的吧,推荐我就不了,其实我也就完整看了这一本,我觉得对于初学者,够了。&br&&br&&br&&br&至于第3类,那是安卓程序,所以,&b&你至少需要再学一门java&/b&,它不是C++能搞定的,&br&&b&然后再百度 “安卓开发入门”&/b&&br&&b&然后再百度安卓游戏开发&/b&&br&&br&&br&之后,等你搞清楚什么是安卓开发的,搞定java基础,对OOP有一点实战经验,&br&而且决心做安卓,再去做 社么 “天天酷跑”子类的游戏吧、&br&&br&*********************************************************************************************************&br&&br&我也不是专业做游戏的,也就大一做过一段时间,玩过MFC,我觉得吧,做游戏最主要是游戏引擎要玩的好,其他的都是浮云。&br&&br&希望你按照顺序学东西,不要嫌弃黑窗口,先打好黑窗口的基础。&br&&br&&b&学东西一定要踏实,稳扎稳打。&/b&&br&&b&学东西一定要踏实,稳扎稳打。&/b&&br&&br&&b&学东西一定要踏实,稳扎稳打。&/b&&br&&br&&br&我的***,其实也就是一条路线了吧。&br&详细术语的描述,等我下次再来改一下,码字多了,累了。&br&&br&希望对你有帮助。
首先我分析下你的问题: “怎么从我们这样一开始学C++到能做一个像平时玩的一个简单的游戏” “从我们这样一开始学C++”
这是你的现在状态,那么我假定:你还没有C++入门咯,或者C++刚完成“理论部分” 其实第一个答主,
这位同学说的是调用游戏引…
已有帐号?
无法登录?
社交帐号登录对一个2D的游戏,DirectX和GDI+的性能差别大吗?
我正在不借助游戏引擎制作一款类似于泡泡堂的游戏,由于将来可能会加入大厅之类的东西,需要用文本框之类的控件,所以没有用Windows API,使用了MFC框架(去掉了文档/视图支持),更新机制是用一个Timer每隔一段时间发一个WM_TIMER消息,在消息处理中更新并重绘;目前在绘图中主要采用的是GDI+,就是用CImage::Draw函数绘图的,然后我发现在把WM_TIMER的间隔设置到非常短(1ms),并且现在还没加什么复杂功能(基本也就是人物走一走)的情况下,游戏只能跑到30帧出头(我将两次重绘之间的时间差输出了出来,显示为32ms),我觉得这是不是有点不太正常?(我能确定不是更新游戏数据的时候占了特别长的时间)对于这个纯2D的游戏,如果把绘图部分改用DirectX(DirectX似乎有一个ID3DXSprite类)实现的话,对性能的提升大吗?谢谢~如果需要看代码、输出以及VS的性能分析(VS对于MFC的性能分析我有点看不懂)什么的话,我可以贴上来,有可能也有程序上我写错的地方或者输出上我理解错的地方,请各位巨巨多指教!
当你已考虑到性能,不用犹疑不决,直上Direct3D。
大,特别大。用GDI做游戏,不管多简单的游戏,都是在浪费人类资源。另外WM_TIMER的可靠性无比之低,凡用者死。
windows runtime 也成
可以玩玩 win8的游戏大亨 完全的xaml
基于 Direct3D 的简单的 2D 游戏引擎,推荐 HGE非常简单友好
请使用Direct2D,功能跟GDI+一样强大,操作跟GDI+一样方便,速度比GDI和GDI+高几个数量及,而且不支持Windows XP,特别爽。2D游戏用Direct3D来写比较恶心。
请使用 Direct2D, 功能强大, 性能强大.不过对于想做游戏而不是做引擎的人, 我建议直接选择现成的引擎, 比如 Unity 或 Unreal.
DX和GDI性能最大的差别在于使用GPU还是CPU来计算数据并输出绘制。当你是用GDI时,如果所有数据都通过GPU来计算,可以极大提高GDI效率。但是,即使如此,仍然不如DX效率高。如果想用相对底层的技术做2D游戏,推荐Directx2D。当然,如果只是做游戏的话,选一个合适游戏引擎比纠结DX和GDI的效率要有意义的多。
你自己想想,你的游戏画一帧的时间比多数人PING服务器的时间还长。
顶轮子哥的回答。我最近用GDI以bmp贴图的方式写了几个小demo,启动之后一定会吃满cpu的一个线程,毫无效率可言。另外不建议使用消息机制来驱动画面刷新,时间精度是个严重的问题,精确控制画面刷新率还是要用时间机制,也就是使用系统时钟。
我只来提醒你,用这timer机制刷新是胡搞。
已有帐号?
无法登录?
社交帐号登录如何用C++写一个简单的小游戏?
恩没错其实是这样的。我是大一的学生,这学期计算概论的课期末的大作业就是自己做一个黑白棋的游戏。由于我实在是不知道怎么从我们这样一开始学C++到能做一个像平时玩的一个简单的游戏。希望能知道我如果要做这么一个事要自己去学什么东西。要怎么入手?
我们平时玩的游戏需要图形接口在显示器上绘制3D游戏一般使用Direct3D或者OpenGL,2D游戏也有貌似有SDL、Direct2D等。一般你需要通过所在平台(比如Windows)的桌面接口创建窗口,然后用这些图形接口提供的函数去画窗口里的内容。(有一些也提供简化快速的方法,比如GLUT就有创建窗口的函数,而且是跨平台的)至于黑白棋,在命令行里一行行画字符图也可以显示,通过输入命令下棋,每一步之后刷新显示;或者用GUI库在窗口里摆放按钮,按钮上放上不同的颜色也可以了;或者用图形库去画棋盘、棋子。上述的东西都可以用C++去实现,但是具体怎么使用这些库,以及怎么实现游戏的逻辑,就得题主自己去钻研了~
首先我分析下你的问题:“怎么从我们这样一开始学C++到能做一个像平时玩的一个简单的游戏”“从我们这样一开始学C++” 这是你的现在状态,那么我假定:你还没有C++入门咯,或者C++刚完成“理论部分”其实第一个答主,这位同学说的是调用游戏引擎和图形库去开发游戏,我觉得题主还没有达到这个水平,所以我暂时不和你说一些图形库和游戏引擎。我认为你是刚入门。(如果我理解错了,请纠正O(∩_∩)O哈!)“能做一个像平时玩的一个简单的游戏”我不知道咯租户对于这个“简单的游戏”是怎么定义的?1.黑窗口的贪吃蛇你玩过没?(你懂黑窗口吧,就是cmd菜单,就是你第一次输入"hello world"那个黑黑的窗口,学术名:控制台程序)听懂了吗?2.
或者说,你所谓“简单游戏”,是电脑上的“拳皇“,”合金弹头“,这些单机,
或者一些更炫的桌游或者,现在很流行的撸啊撸这类网游。3.或者说,你想要的是安卓手机上,社么”2048“
"天天酷跑 "
"3D飙车"*********************************************************************************************************这三类都是游戏,所谓"简单",我觉得不好理解。我建议楼主以后问问题的时候,可以打个比方,举个详细的例子,否则他人无法理解,你到底想要什么?*********************************************************************************************************言归正传,我上面标记为1的是楼主必须要会的,就是你如果想做2,3,这种类型的游戏,第一步1代表的控制台程序必须要会。这些游戏,比如 "贪吃蛇" ”俄罗斯方块“ ”飞行器“ 这类控制台的游戏,虽然无趣,但是如果你想做一些看起来很炫很艳丽的2,3类游戏,相信我,你控制台这关,最好是认真做完。这类游戏,你可以去图书馆借一本 ”C语言课程设计”这本书真的认认真真学完,敲出每一行代码,你的面向过程编程能力,基本可以放心了。有什么代码细节搞不定,上 CSDN, 博客园,overflow 去问,去发帖问。问百度。翻墙问谷歌。但如果是架构上的问题,问老师吧或者一些 "真的很" 牛逼的学长。不要急躁,打基础这一步,千万不要跳完成这一步,第1类游戏相信,对你来说不在话下,更重要的是,你的C语言功底绝对会有一个很大提升。****************************************************************************************************************第二,当你第一步完成了,1类游戏搞定了,那我就可以告诉你,第二类游戏,会接触4个概念:面向对象编程OOP,游戏引擎,可视化编程,GUI(图形界面)这个时候C++的确可以做,一些简单的带图形的游戏。至于用了啥技术,你把我说的下面这本书看一下,就都知道了,码字好累。。。比如,你能力够,完全可以把 合金弹头 那种游戏,或者 手机上 天天酷跑 这些游戏移植到windows上来,只是你至少要去图书馆借一本书:当初我倒是做过一个 坦克大战的windows版。可惜源码已不知所踪。你可以百度试试有没有写好的源码。这本书当时我是下的pdf版,如果嫌弃太老了,你去图书馆借一本和这本书类似的吧,推荐我就不了,其实我也就完整看了这一本,我觉得对于初学者,够了。至于第3类,那是安卓程序,所以,你至少需要再学一门java,它不是C++能搞定的,然后再百度 “安卓开发入门”然后再百度安卓游戏开发之后,等你搞清楚什么是安卓开发的,搞定java基础,对OOP有一点实战经验,而且决心做安卓,再去做 社么 “天天酷跑”子类的游戏吧、*********************************************************************************************************我也不是专业做游戏的,也就大一做过一段时间,玩过MFC,我觉得吧,做游戏最主要是游戏引擎要玩的好,其他的都是浮云。希望你按照顺序学东西,不要嫌弃黑窗口,先打好黑窗口的基础。学东西一定要踏实,稳扎稳打。学东西一定要踏实,稳扎稳打。学东西一定要踏实,稳扎稳打。我的***,其实也就是一条路线了吧。详细术语的描述,等我下次再来改一下,码字多了,累了。希望对你有帮助。
既然是要能玩的,那至少要有个界面,有按钮,有开始、暂停、设置、声音、退出等选项,这个有很多库或方法可以实现,如QT,OPENGL等,最简单的是WIN32 SDK或者MFC。有C++基础的话去学MFC吧有了界面后就剩下逻辑了,做一个标准的游戏还是有很多专业的术语(技术)的,如帧、脚本等,涉及的技术很多很多,这个要学起来不容易,最好是去公司边做边学。但是,要做一个像俄罗斯方块、贪吃蛇什么的,还是很easy的,用一个定时器就全部搞定。等学了界面开发,随便搜一下教程都一大堆
想当年文计几乎没什么基础去学了JS,前面觉得写写html也就算了。后来作业竟然是做个五子棋的游戏,都不知道后来怎么过来的。
已有帐号?
无法登录?
社交帐号登录&&&&基于Direct3D的2D游戏开发与实现.pdf
基于Direct3D的2D游戏开发与实现.pdf
是一篇论文, 写2D游戏很有用的!
还介绍了集中D3D模式下编写2D游戏的方法!
如果打开后看不到内容请下载福昕阅读器
嵌到我的页面

若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动***等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
课程资源下载排行游戏编程指南_4-41_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
游戏编程指南_4-41
上传于||暂无简介
大小:231.08KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

参考资料

 

随机推荐