Texture
1.紋理(Texture):圖片從原始格式牧抵,解碼并上傳到GPU的過程,被稱之為紋理运嗜。
2.用途:其實(shí)就是承裝獲取到目的圖片的容器
3.使用:Gdx.files.* 文件模塊
Gdx.files.*文件模塊主要有以下功能
1.Gdx.files.classpath("") 路徑相對(duì)于classpath,文件通常只讀
2.Gdx.files.internal("") 內(nèi)部文件路徑,JAVA項(xiàng)目對(duì)應(yīng) resources 目錄叠纷,Android項(xiàng)目對(duì)應(yīng)assets 文件夾
3.Gdx.files.external("") 從外部存儲(chǔ)獲取
4.Gdx.files.absolute("") 絕對(duì)路徑
SpriteBatch 類(相當(dāng)于畫筆)
1.用于繪制二維矩形參考紋理,可用于批量繪圖命令潦嘶,和優(yōu)化GPU處理涩嚣、
2.把許多相同紋理一起描述,并一起送入GPU繪制掂僵,同時(shí)賦予紋理和坐標(biāo)航厚,以便每個(gè)圖形的繪制。
3.圖片資源分辨率锰蓬,必須為2的N次方阶淘。譬如:
2^10 = 1024
2^9 = 512
2^8 = 256
2^7 = 128
2^6 = 64
2^5 = 32
2^4 = 16
2^3 = 8
2^2 = 4
2^1 = 2
為什么要2的N次方?
libGDX使用OpenGL ES 互妓,分為兩個(gè)版本 OpenGL ES 1.x 和 OpenGL ES 2.0溪窒,1.x 的圖片大小必須是2的整次數(shù)冪,而 2.0 無此要求冯勉。
libgdx 早期使用OpenGL ES 1.x , 用高版本libgdx就不用管圖片分辨率問題了澈蚌。
畫出圖片:
private val texture = Texture(Gdx.files.internal("aiweier.jpg"))
private val batch = SpriteBatch()
override fun render()
{
clear()
batch.begin()
batch.draw(texture , 0f, 0f, Gdx.graphics.floatWidth, Gdx.graphics.floatHeight)
batch.end()
}
TextureRegion 可用于圖片截取。
private val texture = Texture(Gdx.files.internal("aiweier.jpg"))
private val leftRegion = TextureRegion(texture, 0, 0, 512, 512)
override fun render()
{
clear()
batch.begin()
batch.draw(leftRegion, 0f, 0f, Gdx.graphics.floatWidth, Gdx.graphics.floatHeight)
batch.end()
}
Sprite類
1.定義:持有幾何形狀灼狰,顏色宛瞄,和紋理信息使用加載繪制2D精靈
2.用途:TextureRegion的加強(qiáng)版,SpriteBatch的加強(qiáng)版交胚,比TextureRegion多了一些功能:指定位置份汗,顏色盈电,旋轉(zhuǎn),等……
3.特點(diǎn):可以處理Texture杯活,TextureRegion等紋理
方法:
1.大写抑恪:sprite.setSize(120,120)
2.旋轉(zhuǎn)中心:sprite.setOrigin(50,50)
3.旋轉(zhuǎn)角度:sprite.setRotation(50)
4.繪制位置:sprite.setPosition(150,150)
5.繪制顏色:sprite.setColor(1,0,1,1)
6.繪制函數(shù):sprite.draw(SpriteBatch)
清屏
// 設(shè)置背景顏色
Gdx.gl.glClearColor(1F, 1F, 1F, 1F)
// 清屏
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT)
OpenGL 中,是將紋理貼上去旁钧,但是如果繪制動(dòng)畫吸重,或者繪制領(lǐng)蛙圖形,就會(huì)殘留上一張的痕跡歪今,所以需要清屏嚎幸,展示新的圖像。
DEMO地址:https://gitee.com/xcode_xiao/LibGdxDemos2/tree/master/ImageRender2