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, Pixmap pixmap) 打包某个图片,并制定名称

generateAtlas( TextureFilter minFilter, TextureFilter magFilter, boolean useMipMap ) 生成图片资源包

示例代码:

 package com.fxb.newtest;

 import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Pixmap.Format;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.g2d.PixmapPacker;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.g2d.TextureRegion; public class Lib019_TexturePack extends ApplicationAdapter{ TextureAtlas atlas;
TextureRegion region1, region2;
SpriteBatch batch; @Override
public void create() {
// TODO Auto-generated method stub
super.create(); PixmapPacker packer = new PixmapPacker( 512, 512, Format.RGB565, 2, true );
//packer.pack( "first", pixmap1 );
Pixmap pixmap1 = new Pixmap( Gdx.files.internal( "data/badlogic.jpg" ) );
Pixmap pixmap2 = new Pixmap( Gdx.files.internal( "data/pal4_1.jpg" ) );
packer.pack( "first", pixmap1 );
packer.pack( "second", pixmap2 ); atlas = packer.generateTextureAtlas( TextureFilter.Nearest, TextureFilter.Nearest, false );
region1 = atlas.findRegion( "first" );
region2 = atlas.findRegion( "second" ); pixmap1.dispose();
pixmap2.dispose(); batch = new SpriteBatch();
} @Override
public void render() {
// TODO Auto-generated method stub
super.render();
Gdx.gl.glClearColor( 0, 1, 1, 1 );
Gdx.gl.glClear( GL10.GL_COLOR_BUFFER_BIT ); batch.begin();
batch.draw( region1, 10, 10 );
batch.draw( region2, 20+region1.getRegionWidth(), 10 );
batch.end(); } @Override
public void dispose() {
// TODO Auto-generated method stub
atlas.dispose();
super.dispose();
} }

运行结果:

libgdx学习记录19——图片动态打包PixmapPacker的更多相关文章

  1. libgdx学习记录1——图片显示Texture

    libgdx底层采用opengl渲染,对图片进行了优化处理,与android原生态的bitmap不太一样. 相比而言,效率要高一些,不过只支持png,jpg,bmp三种格式. 显示中,一般将图片放在a ...

  2. libgdx学习记录23——图片移动选择

    模拟移动选择图片,采用相机实现. package com.fxb.newtest; import com.badlogic.gdx.ApplicationAdapter; import com.bad ...

  3. libgdx学习记录21——Box2d物理引擎之碰撞Contact、冲量Impulse、关节Joint

    Box2d中,物体可以接受力(Force).冲量(Impulse)和扭矩(Torque).这些物理元素都能改变物体的运动形式,并且默认都会唤醒物体,当然只是针对动态物体. 力是一个持久的效果,通过Bo ...

  4. libgdx学习记录20——多线程MultiThread资源处理

    在libgdx中,一般的逻辑流程都在rende()函数中执行,这个函数是由opengl的渲染线程调用的,一般的图形显示和逻辑处理都在这个线程中. 一般情形下,在这个线程中处理就行了.但是当某些逻辑处理 ...

  5. libgdx学习记录18——Box2d物理引擎

    libgdx封装了Box2D物理引擎,通过这个引擎能够模拟物理现实,使设计出的游戏更具有真实感. libgdx中,Box2d程序的大概过程: 1. 创建物理世界world,并设置重力加速度. 2. 创 ...

  6. libgdx学习记录17——照相机Camera

    照相机在libgdx中的地位举足轻重,贯穿于整个游戏开发过程的始终.一般我们都通过Stage封装而间接使用Camera,同时我们也可以单独使用Camera以完成背景的移动.元素的放大.旋转等操作. C ...

  7. libgdx学习记录16——资源加载器AssetManager

    AssetManager用于对游戏中的资源进行加载.当游戏中资源(图片.背景音乐等)较大时,加载时会需要较长时间,可能会阻塞渲染线程,使用AssetManager可以解决此类问题. 主要优点: 1. ...

  8. libgdx学习记录9——FreeType,ttf中文显示

    前面讲到使用Hireo创建的BitmapFont以显示中文字体.这种方式效率很高,当所要显示的字的总数较少,并且大小比较固定时,可以采用这种方式. 但是这种也有弊端: (1)字体大小不能随意设置,当放 ...

  9. libgdx学习记录6——动作Action

    libgdx中的Action类能够有效的帮助我们实现位移.旋转.缩放.淡入淡出等效果,对游戏的设计很有用. Action是一个抽象类,本身不可以实例化.一般使用的它的继承类,常用的有 MoveToAc ...

随机推荐

  1. 机器学习实战(Machine Learning in Action)学习笔记————08.使用FPgrowth算法来高效发现频繁项集

    机器学习实战(Machine Learning in Action)学习笔记————08.使用FPgrowth算法来高效发现频繁项集 关键字:FPgrowth.频繁项集.条件FP树.非监督学习作者:米 ...

  2. 基于docker搭建jumpserver堡垒机

    一.环境信息 1.jumpserver 192.168.137.129 CentOS6.4   kernel版本为 3.10.5-3.el6.x86_64 2.客户机 dev01-04 3.docke ...

  3. 【three.js练习程序】创建地球贴图

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. sublime中如何用less实现css预编译

    实现css预编译的方式有很多,听说glup很流行而且功能也很强大,但是就目前的工作而言,仅要css预编译和YUIcompress就够了,接下来切入正题 Less 是一门 CSS 预处理语言,它扩展了 ...

  5. go语言练习:类型转换

    package main import "fmt" func main() { var a int var b uint var c float32 var d float64 a ...

  6. Shell 脚本合集

    0. 说明  Shell 脚本合集 1. xcall.sh xcall.sh 编写为了为了同时对多台服务器进行操作,编写完成之后,将其发送到 /usr/local/bin 下 #!/bin/bash ...

  7. form表单中使用a标签代替button或commit进行数据提交

    1.申明form的id:xxx 2.在<a>标签内书添加属性 onclick="document:xxx.submit()" ​

  8. 读高性能JavaScript编程 第四章 Duff's Device

    又要开始罗里吧嗦的 第四章  Summary 了. 这一次我尽量精简语言. 如果你认为 重复调用一个方法数次有点辣眼睛的话 比如: function test(i){ process(i++); pr ...

  9. 2019 wannafly winter camp

    2019 wannafly winter camp Name Rank Solved A B C D E F G H I J K day1 9 5/11 O O O O O day2 5 3/11 O ...

  10. Python接口自动化--Json数据处理 5

    1.Json模块简介,全名JavaScript Object Notation,轻量级的数据交换格式,常用于http请求中. Encoding basic Python object hierarch ...