libgdx学习
引用原文
http://blog.sina.com.cn/s/blog_940dd50a0101c0l0.html
1.Texture类:
功能用途:其实就是承装获取到的目的图片的容器。
Gdx.files.internal("data/Potato.jpg")
batch.draw(texture,x,y,height,width)
数学坐标系-非电脑坐标系
原文的有一句话很经典,比较有道理:
比如你盛一碗粥,从锅里盛出来需要用到汤勺,这个汤勺就相当于Texture,他们都是用来获取东西的一个容器,是中间者。
2.SpriteBatch类
功能用途:priteBatch可以把许多相同纹理一起描述并一起送入GPU,同时赋予纹理和坐标以便每个图形的绘制。-------------原文的理解是:SpriteBatch就是一个画笔,没有画笔是画不了图片的
它的用法,首先声明类名,实例化、在绘制的的时候分三步,
必须先调用begin()方法,
然后再调用draw()方法,
最后画完了调用end()结束
watchout:libgdx绘制的图片必须是2的n次方分辨率--为了兼容openGL es1.0
PS:如果想使用不是2的N次方分辨率的图片:
-设定为openGL es 2.0
(1)将desktop和项目中 main.java 中的 useGL20 = false 改为 useGL20 = true 就可以随便任何分辨率图片不必是2的N次方了。
(2)将android和项目中 mainactivity 中的 useGL20 = false 改为 useGL20 = true 就可以随便任何分辨率图片不必是2的N次方了。
3.TextureRegion 类
功能用途:实际操作中我们也经常使用图片的一部分,或者将多个图片资源集合在一个图片文件中。而要显示图片的一部分就可以使用TextureRegion类。----------原文作者理解为就是截图工具,从左上角开始截图,然后可以定义截图的大小(个人理解)。
---电脑坐标系
textureRegion = new(texture,0 ,0 ,48,48)和 textureRegion = new(texture,48 ,48 ,-48,-48)的区别为:互为180旋转图----比较尴尬
4.Sprite 类
可以理解为画布
功能用途:TextureRegion的加强版,比TextureRegion多了一些功能,如:可以指定位置、颜色、旋转等。
其实Sprite的功能就是以上的集合。
但是Sprite更方便,它用一个对象描述了一切,
但是同时加入了很多TextureRegion和Texture没有的东西,如位置、颜色、旋转.
测试:
package com.potato; import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL10; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture.TextureFilter; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureRegion; public class HelloWorld implements ApplicationListener { public SpriteBatch batch; // 声明纹理 public Texture texture; public Sprite sprite; @Override public void create() { batch = new SpriteBatch(); // 实例化texture texture = new Texture(Gdx.files.internal("data/Potato.jpg")); TextureRegion region = new TextureRegion(texture, 512, 0, 512, 512); sprite = new Sprite(region); sprite.setSize(120, 120);// 设置绘制的大小,为了方便我们设置的120,120,小一点方便查看 sprite.setOrigin(sprite.getWidth() / 2, sprite.getHeight() / 2);// 设置旋转的中心点,咱们就设置为屏幕的中心点 sprite.setRotation(50);// 这个是以上面设置的中心点为中心,旋转一定角度的设置 sprite.setPosition(150, 110);// 起始位置设置为中心区域附近(150,110) sprite.setColor(1, 0, 1, 1);// 颜色就设置为粉色吧 } @Override public void dispose() { batch.dispose(); texture.dispose(); } @Override public void render() { Gdx.gl.glClearColor(1, 1, 1, 1);// 设置背景颜色为白色 Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);// 清屏 batch.begin(); sprite.draw(batch); batch.end(); } @Override public void resize(int width, int height) { } @Override public void pause() { } @Override public void resume() { } }
openGL为贴图模式,绘制下一张图片是应该清除上一张的痕迹
@Override public void render() { Gdx.gl.glClearColor(1, 1, 1, 1);// 设置背景颜色为白色 Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);// 清屏 batch.begin(); sprite.draw(batch); batch.end(); }

浙公网安备 33010602011771号