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();
   }

 


 

posted @ 2014-07-01 01:13  langren123456789  阅读(452)  评论(0)    收藏  举报