OpenGLES是什么意思,opengl是做什么的

http://www.itjxue.com  2023-01-16 23:06  来源:未知  点击次数: 

游戏开发具体学什么,好入门吗?

Hello大家好,我是小帅,很高兴,回答您的问题, 游戏 开发具体学什么?好入门吗?根据 游戏 类型的不同,所学的软件也不一样。

中小型 游戏 大致可分为网页 游戏 ,flash 游戏 ,小 游戏 等,基本上都是一些休闲类的傻呆萌的情节和操作。

这类 游戏 开发相对比较简单,会 Javascript、HTML、flashcs、Java 就可以进行开发了,语言类主要有 C / C++,汇编语言,着色器语言,脚本语言,高效的开发语言 C# 或 Java 。

现在的 游戏 主要分为三种:

1、PC 类端游(就是电脑上面运行的 游戏 )

这类 游戏 在线人数多, 游戏 中要处理的数据庞大。所以对服务器性能要求非常高,一般都是采用C++ 做为开发语言,C++ 可以直接操作内存数据,与操作系统直接交互,减少数据之间的复制,它运行效率高,处理速度快,是很适合这里 游戏 开发语言。

学习这种 游戏 的开发,学习的有 C++ 编程,Linux 网络编程、TCP/IP 通讯协议、多线程编程再加数据库。

PC 类端 游戏 开发周期较长。大概需要三年左右的时间。

2、网页 游戏 (比如现在经常说的 1 刀 999 级)

因为是网页 游戏 , 游戏 的界面展示依赖于网络传输,所在在画面和特效上会次于客户端 游戏 很多。和端游类是差不多是一样的,有些公司之前是做端游的,他们就直接把端游的服务器架构拿来就可以使用,以完成快速开发。

需要学习内容和端游差不多。

3、手机 游戏 (主要区分为安卓和 IOS)

手机类 游戏 目前是最热门的 游戏 ,很多热播的电视剧或者电影之后,都会有相同情节的手游上线。

服务器主流的开发语言是 C++ 和 Java,但是 C++ 学习难度大,开发速度慢。一般来说我们都是使用Java语言来开发服务器。

扩展资料:

学习的先后顺序

1、首先是C++语言。

2、只是做windows方面的 游戏 学习,可以学习下DirectX,这个很方便在windows下做 游戏 开发。

3、如果想制作跨平台 游戏 ,建议学习下opengl/opengles,这是个很强大很专业的图形接口,因为很多平台支持所以适合跨平台 游戏 制作使用。

4、想学习 3d 游戏 并迅速工作,建议学习 u3d 引擎、ue 引擎这些 游戏 引擎,有了以上的基础学习这些引擎也可以理解的更深入,u3d 还会用到 c# 与 js 语言。

5、做2d 游戏 ,可以使用 cocos2dx 等一些引擎,当然你也可以使用上面的 3d 引擎制作 2d 游戏 。

6、然后就是可以深入的研究一些开源的 游戏 引擎,终极目标是可以自己做出一款比较棒的 游戏 引擎。感谢您的观看。

1.首先,一开始可能对 游戏 引擎没什么概念,建议先入门一两个 游戏 引擎(我推荐可以先去学习Cocos2d-x和Unity3D两个引擎,市面上大多数 游戏 是利用这两个引擎开发的)。入门阶段要做的就是看该引擎的教程(书籍、视频、网上博客、网上教程、官方帮助文档等),并且熟练该引擎所使用的编程语言。

推荐课程:C#教程。

因为不同平台下的性能不同,支持的编程语言也不尽相同,所以针对不同平台下的流行的 游戏 引擎也是不同的。下面列举一些现在流行的 游戏 引擎。

windows或 游戏 主机:【Unreal】、寒霜、CE3

苹果IOS:【unity3D】、【cocos2d-x】、【Unreal】、sparrow、sprite kit。

安卓:【unity3D】、【cocos2d-x】、【Unreal】、AndEngine、libgdx。

网页:【Egret】、【cocos2d-js】、Fancy3D、unity3D。

当然并不是不同平台的 游戏 开发,就毫无共通之处,学了这个到了另一个平台就无用了。不是这样的,编程的世界里你走得越远你会发现很多东西的本质都是相似的,例如你如果扎实地理解了C++的基本语法,日后再转Java语言也不是很难的事情,因为它们本质的面向对象特性还有各种编程语言特性都是相通的。

2. 因为 游戏 开发就是一门实时渲染的艺术,所以离不开图形库的学习。现在主流的图形库是Windows平台专用的DirectX 11和通用平台的Opengl。这两个图形库,至少需要入门其中一个。

3.然后,你就可以开始看计算机图形学的书籍了。如果你发现你的理论底子不足,这个时候就需要补一下线性代数、基本的微积分、还有3D数学的知识。

4. 游戏 引擎中包含了各个部分,上面的渲染只是 游戏 引擎的一部分。还有其它诸如着色器编写、地形编写、物理引擎编写、模型和动画、人工智能体设计、网络编程等等,完成渲染部分的基本学习后,你可以选择自己感兴趣的部分进行专攻,毕竟我们实际工作大多数时候是团队开发,而不是单打独斗,每个人都应该精通自己所擅长的那部分。

5.至此,独自开发一款小型 游戏 已经完全不在话下了。也具备了加入公司合力开发一款大型 游戏 的能力。[机智][机智][机智][机智][机智][机智][机智][机智]

一个即将实习的人给你说一下吧

我是 游戏 开发专业的,在一个很普通的本科大学就读。

建议你先了解一下学习的过程基本

一、编程语言C++,这个务必学精学通,特别是C++的后八章的内容,继承,多态和重载的思想要领会,不然以后的软件工程课程中的设计模式什么的你就会是个渣渣辉,这个事关写代码的质量和工程的复杂程度,我本人已经在吃这个亏了。另外,C++ 学好了,以后的类C语言的C#配合Unity就不用太担心了。

二、数据结构和基础算法,最好学通,本人的基本状态是基本看得懂,就是写不出来或者写不好,要用了基本就是翻课本的情况了,这样很麻烦。这个的最后是让你理解 游戏 人工智能和他的算法的。

三、图形学,这个我本人一直都在偷懒,因为想着有引擎的使用,图形学显得不那么重要,其实不是的,图形学学得好头发掉得快也快,用起引擎也会很快很顺手。GDI过时的玩意,Direct 2DX和Direct 3DX被迫认真学过,OpenGL听闻也是一大魔鬼我没学过,如果想用Unity顺手Direct 3DX的认真学习是必不可少的。

四、 游戏 的各种理论知识,包括了 游戏 历史 ,策划,测试, 游戏 原型等等,好好了解一下都是些增长知识的课程。

五、各种 游戏 引擎比如cocos2dx,Unity,UE4等等,你也可以尝试更多的,但是没必要,因为类通。

六、美术,在校期间基本学过3DMAX PS AI基础的基本会。但是艺术的东西,唉说多了是泪,实在没办法,艺术细胞几乎不存在,我在校期间的学生 游戏 项目中在没美工的存在时我做的每一个UI没一个不被吐槽是直男的审美。如何想独立开发 游戏 这个美术的技术和艺术是必不可少的,不然你不配去碰这个。

最后有个叫做创意的东西你学不来的,靠灵感,靠日常的积累总结。

祝你的学习好运。

大家一直在说一些属于 游戏 制作人这个职业的东西,我就补充一下题主问的关于语言和入门教程的东西吧。

关于语言,那只是个做 游戏 的工具,而掌握工具是整个流程中最简单不过的事。如果是普通的rpg走个流程/卖剧情的话,rpgmaker,如果要做3d 游戏 ,unity;2d手游,cocos2D;gal,吉里吉里;页游请搜索关键词socket服务器,flash,html5;请注意不是选择某个引擎来做 游戏 ,而是说要做某个 游戏 的话,就去选个适合的引擎现学现用!计算机专业本身就会教给你如何快速地学会一个工具,在课堂上认真体会吧。

然后就是入门教程,语言、引擎的无师自通是计算机专业学生的自带技能不啰嗦了,要看的书主要集中在 游戏 策划这个角色上,主要研究 游戏 制作流程,日程安排, 游戏 性设计,关卡设计,数据平衡等等。这些项目不像编程,美工音乐那样有现成的教育框架,我也实在没找到一本集大成,对得起它价钱的教科书。目前比较接近这个需求的有 游戏 制作工厂系列,全彩还挺贵的建议去图书馆借阅,另一本第九艺术学院? 游戏 开发系列教材? 游戏 架构设计与策划基础 倒是不贵,不过讲得也并没有多好。另外像unity的关卡系统,本身就蕴含了以关卡为结构的 游戏 设计思维,所以unity引擎的教科书也通常会讲授一些,别的引擎同理;这些都可以博览而加入你自己的知识库中。

最后ps.一下,楼上诸君之所以强调那么多跟引擎平台,跟画画,写歌,编故事,码代码无关的事,就是想要强调告诉你 游戏 策划这个职位是有意义的,是整个 游戏 创作中最重要的那个角色。把画跟音乐跟故事用代码揉到一起的过程才是 游戏 创作的本质,这点请务必注意

一时兴起,就再补充一下关于绘画、音乐和剧本创作的学习规划。首先记住这三样是无底洞,希望以一己之力能做到多好很难很难,千万不要贪多务得。然后,

音乐,用FLstudio做midi音乐很轻松方便,音源是无底洞不要乱玩够用就好,斯宾索夫的《和声学教程》等一些classical的教程是必修课;至于实录,我认为唯一有实录价值的是vocal,其他任何音轨用hypersonic2等级的音源midi掉都够了,短板在你的编配而不是音源。

画画有学长教那是极好的,但是提醒一点,学画画主要是为了学习美术最基本的原则,不要让你的角色建模头重脚轻,配色配得跟神经病似的...简单的方式例如用flash拖一个圆圈当脑袋,弄成南方公园那样,用C4D,3Ds MAX做简单的3D建模都可以,只要你美术素养够了,就不会因为简单而难看,陈星汉的 游戏 角色建模也不复杂但就是美。切记不要一时兴起用数位板在sai/ps画画,那是可以吞掉你无数时间和信心的无底洞,等你做多几个 游戏 ,知道要怎么规划时间和资源之后再尝试吧。

剧本,粘粘世界的那种不叫剧本叫文案,创作不难,只要你心理 健康 随性发挥就能写好;至于adv,需要剧情的rpg,推荐你去学习一下电影剧本写作,来自好莱坞的教程目前市面上多得数不清,谦虚学习就能写出好看的作品。然后,一部文学作品没有被改过5次是不足以拿出手的,改了5次还有错别字则是不可能的,所以如果看到一个 游戏 成品里面还出现了错别字,这就明摆着这剧本写作没用心。

如果题主是在校学生并且专业是计算机相关的,那么学校教授的知识基本涵盖了以上所有职位的基础。不夸张的说,这些课程学到的知识在 游戏 开发领域几乎都能用到,是决定未来上限的基础。但也正因为太基础,可能现在感觉不到与 游戏 开发之间的联系,并且学起来很枯燥。

所以在业余空闲的时间可以尝试着学习一下用Unity3D和C#开发一些简单的小 游戏 ,拥有其他编程语言的基础上手会很轻松。这一步的目的是把理论知识与实践结合起来,而且实现自己的小 游戏 会有一种别样的成就感,有效提高学习时的动力,同时也能思考一下对哪方面比较感兴趣,对未来的学习路线有一个规划

可以先去网站上找一些基础性的视频了解一下

还是选择去找个班学一下吧

Android OpenGLES3绘图 - 鱼群模拟

在B站上偶然看到一个这样的 鱼群模拟的视频 ,很有意思。大自然很多东西都是类似分形、群体涌现的模式。我们可以用OpenGL简单地模拟一下,先实现一个二维模型,再尝试扩展到三维。

相关资料:

介绍了简单的集群算法原理

用计算着色器实现的集群算法,非常强大

原理分析:每条鱼可以先用点代替,在二维平面上生成一些随机点,它们有坐标和速度,每个点会寻找周围的点,跟随群体移动。关键在于寻找周围的点,每个点不能去遍历所有点的位置,那样时间复杂度是O(N2)。需要对空间进行划分,有四叉树、希尔伯特曲线等方法。感觉在这个问题上将空间均匀划分更好搜索相邻的点,可以划分成8x8或16x16的矩形块,每次搜索3x3的区块,这样时间复杂度就下降到了O(N)。当然极端情况下如果所有点都集中到了3x3的空间里,时间复杂度就会回到O(N2),这是需要优化的地方。

用一个数组保存所有点的位置,数组按[x0,y0,x1,y1...]方式保存;另一个数组保存所有点的速度,数组按[vx0,vy0,vx1,vy1...]方式保存;再用一个数组保存所有点的临时新位置,因为要先用老位置计算,全部计算完才能刷新位置,不能用新老位置夹杂计算。点的速度控制在一定范围内。

划分成16x16个空间区块。用Part表示区块,实际上里面是一个HashSet,保存了区块里面的点;再用一个HashMap保存所有的区块,key是区块的索引,也就是从0~16x16-1顺序排列。每个区块第一次用到时才创建,防止初始化太慢。

查找一个点所在区块

查找3x3相邻区块

遍历一遍所有点,寻找每个点在相邻区块内的相邻点,保存到neighbors数组里,计算出它们的平均速度,应用到当前点,用该速度计算出新位置,保存到临时列表中。

再次遍历所有点,应用新位置。并比较新老位置,如果新老位置在不同区块中,那么更新这两个区块。

顶点数组ByteBuffer posBuffer大小跟位置数组相同,

计算完位置后将位置数组传给posBuffer,再将posBuffer传给vbo,用glDrawArrays(GL_POINTS, 0, MAX_COUNT)方式绘制点精灵。

顶点着色器将传入的位置转换一下,设置点的大小

shader_group_v.glsl

片段着色器根据位置选择不同颜色

这样就完成了!

在二维的基础上修改,主要是位置和速度都增加了z方向,空间划分的区块成了16x16x16个,每个点需要寻找周围3x3x3=27个区块。其实算法的主要时间和空间的复杂度基本上是线性增长,变成原来的1.5倍,是完全没问题的。

OpenGL绘制上有一些增加,变成三维后需要一些空间矩阵变换

顶点着色器

shader_group3d_v.glsl

Android OpenGLES2.0(十八)——轻松搞定Blend颜色混合

Blend是OpenGL中的一个非常重要的部分,它可以让每个输出的源和目的颜色以多种方式组合在一起,以呈现出不同的效果,满足不同的需求。

在OpenGLES1.0中,Blend在OpenGLES固定的管线中,OpenGLES2.0相对1.0来说,更为灵活。在OpenGLES2.0中,与Blend相关的函数及功能主要有:

Blend的使用比较简单,但是如果不理解Blend的这些函数及参数的意义,使用了错误的参数,就难以获得我们所期望的混合结果了。

想要使用Blend, glEnable(GL_BLEND) 当然是必须的。与之对应的,不需要Blend的时候,我们需要调用 glDisable(GL_BLEND) 来关闭混合。

另外的四个方法,看名字差不多就能知道他们的意义了。

glBlendFunc 和 glBlendFuncSeparate 都是设置混合因子,反正就是这么个意思了。区别在于glBlendFunc是设置RGBA的混合因子,而glBlendFuncSeparate是分别设置RGB和Alpha的混合因子。设置混合因子是做什么的呢?继续看。

glBlendEquation 和 glBlendEquationSeparate 都是设置Blend的方程式,也就是设置混合的计算方式了,具体参数后面说。他们的区别在同 glBlendFunc 和 glBlendFuncSeparate 的区别一样。

颜色、因子、方程式,组合起来就是:最终颜色=(目标颜色 目标因子)@(源颜色 源因子),其中@表示一种运算符。

至于glBlendColor则是在glBlendFunc和glBlendFuncSeparate的设置中,因子可以设置和常量相关的,这个常量就是由glBlendColor设置进去的。

glBlendFuncSeparate设置混合因子,参数及它们表示的主要如下,而glBlendFunc的参数也是这些,表示的意义就是RGB和A合并为RGBA就是了。在下表中,s0表示源,d表示目的,c表示有glBlendColor设置进来的常量。

glBlendEquationSeparate的设置混合操作,参数及其意义如下表所示。通过glBlendEquationSeparate或者glBlendEquation设置的方程中,源和目的颜色分别为(Rs,Gs,Bs,As)

和(Rd,Gd,Bd,Ad)。最终混合的颜色结果为(Rr,Gr,Br,Ar)。源和目的的混合因子分别为(sR,sG,sB,sA)和(dR,dG,dB,dA)

。其中,所有的颜色分量的取值范围都为[ 0, 1 ]。 GL_MIN和GL_MAX是在OpenGLES3.0才有的 。

Mode RGB Components Alpha Component

GL_FUNC_ADD RrGrBr=sRRs+dRRd=sGGs+dGGd=sBBs+dBBd

Ar=sAAs+dAAd

GL_FUNC_SUBTRACT RrGrBr=sRRs?dRRd=sGGs?dGGd=sBBs?dBBd

Ar=sAAs?dAAd

GL_FUNC_REVERSE_SUBTRACT RrGrBr=dRRd?sRRs=dGGd?sGGs=dBBd?sBBs

Ar=dAAd?sAAs

GL_MIN RrGrBr=min(Rs,Rd)=min(Gs,Gd)=min(Bs,Bd)

Ar=min(As,Ad)

GL_MAX RrGrBr=max(Rs,Rd)=max(Gs,Gd)=max(Bs,Bd)

Ar=max(As,Ad)

目的纹理和源纹理使用的图片分别如下所示(作为源的图片为了表现混合效果,上中下三部分用了不一样的透明度,最下面部分不透明):

根据公式推敲下渲染的结果:

开发游戏需要学什么专业?

游戏开发现在主要分为PC端游戏开发和移动端游戏开发,无论是PC端还是移动端,目前用到比较多得无非是c++、jcocos2d-x,objective-c等。首先建议先学习下出C++语言。

C++语言作为一种简单灵活的高级编程语言,它是一个面向过程的语言,一般是作为计算机专业的基础入门语言课程。如果想只是做windows方面的游戏学习,可以学习下DirectX,这个很方便在windows下做游戏开发。如果要制作跨平台游戏,建议学习下opengl/opengles,这是个很强大很专业的图形接口,因为很多平台支持所以适合跨平台游戏制作使用。然后接着要是想学习3d游戏并迅速工作,建议学习u3d引擎、ue引擎这些游戏引擎,有了以上的基础学习这些引擎也可以理解的更深入,u3d还会用到c#与js语言。

做2d游戏,可以使用cocos2dx等一些引擎,当然你也可以使用上面的3d引擎制作2d游戏。然后就是可以深入的研究一些开源的游戏引擎,终极目标是可以自己做出一款比较棒的游戏引擎。

想了解更多有关游戏开发的详情,推荐选择【达内教育】。该机构具有丰厚的师资力量,优秀的教学体系,教学质量突出,实战讲师,经验丰富,理论知识+学习思维+实战操作,打造完整学习闭环。达内教育独创TTS8.0教学系统,并设有企业双选会。达内的OMO教学模式,全新升级,线上线下交互学习,直播学,随时学,随时问,反复学,学习安排更便捷。→感兴趣的话点击此处,免费学习一下

(责任编辑:IT教学网)

更多

推荐CorelDraw教程文章