如何使用c++做一个可视化游戏引擎(2D)?

百度知道 - 信息提示
知道宝贝找不到问题了&_&!!
该问题可能已经失效。
秒以后自动返回关于c++可视化界面编程_c++吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:259,529贴子:
关于c++可视化界面编程收藏
我用vs2010, c++很熟. 但是完全不会可视化. 有时候想对已有的程序做个界面作几个按钮.我知道vc里面可以建立MFC程序. 今天学习了一点.在网上搜了一下,都说MFC很老,不建议学.那应该学什么呢?
qt ,要不直接api
QT。MFC看得头都大了,况且QT还可以跨平台
Mvc看几眼也不错,当然qt是最好的
① MFC只是一个框架,全称“MicrosoftFoundationClasses“是微软基础类库的简称;② mfc 跟可不可视化没有必然的关系,vc(visual 上面的c语言)依然可以通过新建一个控制台应用程序,后添加 .rc 文件实现可视化编程;如:③ mfc依然可以调出控制台的,很多的项目是在mfc上做的,添加控制台后可以方便的打印日志,如下图所示,控制台主要控制日志(这里主要是网络部分),界面做显示效果,方便用户操作,当然软件发布的时候会把控制台隐藏的;
dev c++可以
直接api……添加个资源文件然后加载就行
你用VS本来就是可视化(Visual),C++有很多,选择哪一种看自己
SDK或者Qt,MFC确实太老了,能别学就别学
先撸WIN32API(反正最后你还是得撸),但是,如果你想直接跨平台的话你就撸QT吧,MFC也可以撸的,写一些小工具什么还是可以直接用用,拖拖拖
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或恩没错其实是这样的。我是大一的学生,这学期计算概论的课期末的大作业就是自己做一个黑白棋的游戏。由于我实在是不知道怎么从我们这样一开始学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,我觉得吧,做游戏最主要是游戏引擎要玩的好,其他的都是浮云。希望你按照顺序学东西,不要嫌弃黑窗口,先打好黑窗口的基础。学东西一定要踏实,稳扎稳打。学东西一定要踏实,稳扎稳打。学东西一定要踏实,稳扎稳打。我的答案,其实也就是一条路线了吧。详细术语的描述,等我下次再来改一下,码字多了,累了。希望对你有帮助。
我们平时玩的游戏需要图形接口在显示器上绘制&br&&br&3D游戏一般使用Direct3D或者OpenGL,2D游戏也有貌似有SDL、Direct2D等。&br&一般你需要通过所在平台(比如Windows)的桌面接口创建窗口,然后用这些图形接口提供的函数去画窗口里的内容。(有一些也提供简化快速的方法,比如GLUT就有创建窗口的函数,而且是跨平台的)&br&&br&至于黑白棋,在命令行里一行行画字符图也可以显示,通过输入命令下棋,每一步之后刷新显示;或者用GUI库在窗口里摆放按钮,按钮上放上不同的颜色也可以了;或者用图形库去画棋盘、棋子。&br&&br&上述的东西都可以用C++去实现,但是具体怎么使用这些库,以及怎么实现游戏的逻辑,就得题主自己去钻研了~
我们平时玩的游戏需要图形接口在显示器上绘制 3D游戏一般使用Direct3D或者OpenGL,2D游戏也有貌似有SDL、Direct2D等。 一般你需要通过所在平台(比如Windows)的桌面接口创建窗口,然后用这些图形接口提供的函数去画窗口里的内容。(有一些也提供简化快速的…
已有帐号?
无法登录?
社交帐号登录
做一个普通人,just for fun题主有一些基本的编程技能(.c# ),但是对内存和底层的知识并不熟悉,其余还有一些基本的图形学知识,也远远没有到GPU架构的那一层次,所以想利用业余时间用C++做一个光栅渲染器,可能会花很多时间,但愿意一点一点来,所以提问一下各位大神1 在OSX 玩的不是很熟的情况下,是不是只能在windows的编程环境下去做这个事情?2 有哪些必看的书籍推荐?3 从哪里开始着手?
开发过高大上的SALVIA, 则提到了Larrabee。我来提供另一些观点。首先,如果从学习角度出发,不必一开始完全根据现时GPU的架构及概念,来用软件复制一遍。现时的GPU主要是基于三角形光栅化及z-buffer。如果我们从图形学的历史进程来学习,可以这样做练习:2D部分:光栅化2D点(就是在二维数组上画点,了解色彩基本原理,并解决影像输出问题)光栅化2D直线(、等)2D直线的剪切算法(见)光栅化2D三角形(scan conversion)。避免重复光栅化相邻三角形边界的像素(edge equation)。光栅化简单/复杂多边形3D部分:把顶点从三维世界空间变换至二维屏幕空间,绘画顶点(如银河星系数据),操控摄像机旋转模型。在剪切空间进行3D直线的剪切算法,把顶点连线(如各种三维正多面体)光栅化成wire frame模型以多边形来定义三维模型。使用来光栅化那些多边形。改为使用。实现简单的纹理映射,先做屏幕空间的插值,然后实现简单的perspective-correct texture mapping。实现简单的顶点光照,使用顶点颜色插值实现Gouraud shading。通过顶点法线插值,实现Phong shading。实现其他贴图技术,如mipmapping(也可试)、bilinear/trilinear filtering、bump mapping、normal mapping、environment mapping等。我们还可以光栅化一些GPU不支持的primitive,例如Blinn大神在1979年就直接光栅化透示正确的球体来渲染太空CG:可以参考[1]的1-3章。可以参考[1]的1-3章。话说,我想过写一本关于这些的"科普读物",不过总觉得受众太少……[1] Blinn, Jim. Jim Blinn's corner: notation, notation, notation. Morgan Kaufmann, 2003.
泻药。我是 &a data-hash=&744f33e9e597ca0759251& href=&///people/744f33e9e597ca0759251& class=&member_mention& data-editable=&true& data-title=&@伟大的春春& data-tip=&p$b$744f33e9e597ca0759251& data-hovercard=&p$b$744f33e9e597ca0759251&&@伟大的春春&/a& 中提到的光栅化软件渲染器SALVIA的作者。&br&&br&下面是小广告时间:&br&SALVIA的主页: &a href=&///?target=https%3A///p/softart/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/p/softa&/span&&span class=&invisible&&rt/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&这篇文章大概可以算是SALVIA从07年开始做到12年的一个整体回顾&br&&a href=&///?target=http%3A///lingjingqiu/archive//2858177.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&开源光栅化渲染器SALVIA的漫长五年(准·干货)&i class=&icon-external&&&/i&&/a&&br&&br&下面是针对你的情况做的一些补充:&br&&br&&ul&&li&首先你说你只有C#的基础,对C++这种需要手工管理资源的方式不是很适应。所以首先你需要阅读C++方面的书籍,尤其是C++11方面的内容,这会对你的开发大有助益。&br&&/li&&li&&b&掌握OpenGL或者D3D API的用法。&/b&你必须要知道你做的东西是用来干什么的,是怎么用的。&/li&&li&“光栅化渲染器”的关键,其实并不完全在于“光栅化”算法本身,更重要的是围绕着光栅化而做出来的一系列结构。&a href=&///?target=http%3A///en-us/library/windows/desktop/ffv%3Dvs.85%29.aspx& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&此篇内容&i class=&icon-external&&&/i&&/a&会给你一个很好的概念。当然出于简单起见,DX9级别的管线要更加简单。&/li&&li&在这整个结构中,实际上光栅化、插值以及Pixel的处理都相对简单,难点反倒是在Primitive的生成(也就是三角形的生成、变换、裁切)。光栅化算法可以使用教科书上的经典算法,就是先把三角形按照水平线切割成上下两个部分,再来按照斜率来计算水平像素的范围。比如说下图这样。这是我当时在ADSK做Team sharing的时候所讲的内容。&img src=&/ef317abd755e34b1da2ca39_b.jpg& data-rawwidth=&781& data-rawheight=&694& class=&origin_image zh-lightbox-thumb& width=&781& data-original=&/ef317abd755e34b1da2ca39_r.jpg&&&/li&&li&我当年的用的唯一“图书”,是&b&OpenGL 2.0 Specification&/b&。这一版的复杂度和DX9对应,既有提纲挈领的架构描述,也会精细到每个算法,&b&非常适合拿来开发&/b&。比OpenGL 2.0 Specification更好的材料当然也有,比如Direct3D 10 Functional Specification和D3D Reference Rast,但是这些都是在微软的NDA协议保护下,是很难见到的。&/li&&li&关于平台,你可以考虑先&b&把场景渲染成图片&/b&。&/li&&li&如果说着手的话,&b&顶点变换,基本的光栅化算法,再加上把覆盖到的像素以黑色,覆盖不到的像素以白色的方式,绘制成一个图片,这应该是最最基本的功能。&/b&在你的程序能将空间三角形能变成2D的图像后,你就可以慢慢往里面增加光照纹理等功能了。&/li&&/ul&&a data-hash=&1e2cccc3ce33& href=&///people/1e2cccc3ce33& class=&member_mention& data-tip=&p$b$1e2cccc3ce33& data-hovercard=&p$b$1e2cccc3ce33&&@Milo Yip&/a&
泻药。我是
中提到的光栅化软件渲染器SALVIA的作者。 下面是小广告时间: SALVIA的主页:
这篇文章大概可以算是SALVIA从07年开始做到12年的一个整体回顾
下面是针对你的情…
感谢邀请,这个问题还是要回答一下。我假设你已经知道了图形学的一些基本原理。&br&&br&首先,看&strong& Michael Abrash&/strong& 的经典文章&a href=&///?target=https%3A///en-us/articles/rasterization-on-larrabee& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Rasterization on Larrabee&i class=&icon-external&&&/i&&/a&&br&这里讲解了如何实现robust和高效的软件光栅化。&br&&br&但光栅化渲染器除了光栅化,还有很多东西。首先需要熟悉Direct3D或者OpenGL API, 这样你就大致知道要实现哪些功能了。如果不追求性能,总体上还是容易的:按照渲染管线一步一步实现即可。首先拿到场景输入(格式参见OpenGL,也即一个vertex buffer, index buffer),设定好FrameBuffer,然后按照index buffer读三角形,查找顶点,运行Vertex Shader,Vertex Shading的结果可以用一个cache缓存起来以复用。运行完Vertex Shader就有了投影后的三角形坐标,这个时候进行裁剪(裁剪是为了让光栅化过程能高效地进行),然后进行光栅化。&br&&br&光栅化后,对每个三角形所覆盖的所有2x2 pixel block,你可以计算出这个像素中心对应的三角形的重心坐标,用重心坐标插值得到pixel shader的输入,然后运行pixel shader。同时对2x2的pixel block进行pixel shading可以保证你能够得到屏幕空间的导数,这样就能用来做纹理过滤了。最后就是进行z-test并且把像素颜色写进FrameBuffer。对所有三角形执行上述步骤就完成了基本的渲染流程。&br&&br&值得一提的是rasterization renderer有很多的优化。例如hi-Z, pre-Z, tiled rendering等。在把基本的流程打通一遍之后,可以再写一遍然后试图实现所有的这些优化。&br&&br&另,实现渲染器跟操作系统没太大关系,不过为了成就感,还是建议在熟悉的系统下搞个窗口应用程序吧。因为你实现的好的话,渲染器是可以实时渲染一些场景的,会更有乐趣。
感谢邀请,这个问题还是要回答一下。我假设你已经知道了图形学的一些基本原理。 首先,看 Michael Abrash 的经典文章 这里讲解了如何实现robust和高效的软件光栅化。 但光栅化渲染器除了光栅化,还有很多东西。首先需要熟悉Direct…
已有帐号?
无法登录?
社交帐号登录
游戏程序员、《游戏引擎架构》译者}

我要回帖

更多关于 可视化游戏开发工具 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信