開發遊戲時,一定被時時提醒要減少 Draw Call,當然UNITY也不例外,打開Game Window裡的 Stats,可以看到 Draw Call 與 Batched 的數字.但到底甚麼是 Draw Call?影響的效能是來自 CPU?還是 GPU?讓 UnityIN 一次告訴你.   首先,讓我們定義何為 “Draw Call”: “一個 Draw Call,等於呼叫一次 DrawIndexedPrimitive (DX) or glDrawElements (OGL),等於一個 Batc…
在游戏中,有时需要对一张矩形图片进行切割,绘制成圆角矩形. circelrect.vert attribute vec4 a_position; attribute vec4 a_normal; attribute vec4 a_color; attribute vec2 a_texCoord0; uniform mat4 u_projTrans; varying vec4 v_color; varying vec2 v_texCoords; void main() { v_color = ve…
libgdx中,opengl 1.x要求图片长宽必须为2的整次幂,一般有如下解决方法 1. 将opengl 1.x改为opengl 2.0.(libgdx 1.0版本后不支持1.x,当然不存在这个问题,这里针对的是0.9.9版本) 2. 使用TexturePacker将图片打包好然后作成一张大图添加进来. 第二种方法是常用方法,但是不太灵活,添加.删除某些图片不太方便,改动较大.这里可以考虑使用PixmapPacker将图片进行动态打包. 主要方法: pack(String name, Pixm…
照相机在libgdx中的地位举足轻重,贯穿于整个游戏开发过程的始终.一般我们都通过Stage封装而间接使用Camera,同时我们也可以单独使用Camera以完成背景的移动.元素的放大.旋转等操作. Camera分为PerspectiveCamera(远景照相机)和OrthographicCamera(正交照相机). PerspectiveCamera为正常的照相机,当距离物体越远,则物体越小,一般在3D空间中使用. OrthographicCamera忽略了其Z轴,不管距离物体多远,其大小始终不…
libgdx底层采用opengl渲染,对图片进行了优化处理,与android原生态的bitmap不太一样. 相比而言,效率要高一些,不过只支持png,jpg,bmp三种格式. 显示中,一般将图片放在assets文件下,表示是Gdx的内部文件. gl1.x使用的图片的宽高必须是2的整次幂,而在gl2.0以后的版本则没有此限制. 使用的版本为libgx 0.9.9. 代码如下: package com.fxb.bird; import com.badlogic.gdx.ApplicationAdap…
1:环境搭建: (1)首先进入官网,http://libgdx.badlogicgames.com/download.html  点击下方的Releases.进行下载最新的版本号就可以. 这个为我们开发使用的jar和so库.我们假设纯粹开发.不想去看源代码,则下载这一个就能够了. (2)源代码下载: 点击上方主页的Source,进入github libgdx的主页,https://github.com/libgdx/libgdx 找到右边的Download ZIP进行下载下来. 源代码阅读,使用…
现象: Stage中包括一个Window,一个Actor,Window中加入alpha action后,Actor也随之消失:Actor加入alpha action后,不起作用. 解决: 重写draw方法,加入batch.setColor(getColor().r, getColor().g, getColor().b, getColor().a); import com.badlogic.gdx.graphics.g2d.Batch; import com.badlogic.gdx.scene…
高级编程技巧只是相对的,其实主要是讲物理模拟和着色器程序的使用. 本章主要讲解利用Box2D并用它来实现萝卜雨,然后是使用单色着色器shader让画面呈现单色状态:http://files.cnblogs.com/mignet/shaders.zip 如果你不知道Box2D,那你肯定玩过用它做的游戏:Angry Birds, Limbo, Tiny Wings, Crayon Physics Deluxe Libgdx集成了Box2D,类似于其他框架,用了很薄的一层java API进行了封装,等…
如前所述,我们的主角是兔子头.接下来我们实现它. 首先对AbstractGameObject添加变量并初始化: public Vector2 velocity; public Vector2 terminalVelocity; public Vector2 friction; public Vector2 acceleration; public Rectangle bounds; 分别是速度,极限速度,摩擦力,加速度和边界. 然后我们需要加点物理仿真: protected void updat…
在上一章我们介绍了如何管理和利用素材,但是我们注意到,这些素材都是零散的,比如岩石的左部等,这一章,我们将利用这些零件拼合成完整的游戏对象. 回顾最开始的设计类图,注意Level类和所有Level中的Object,看看它们的继承关系. 首先第一步就是创建所有对象的基类AbstractGameObject. 它应该包含所有公共的属性和功能. package com.packtpub.libgdx.canyonbunny.game.objects; import com.badlogic.gdx.g…