libGDX游戏开发之文理打包(八)
libGDX游戏开发之文理打包(八)
libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm…国内用libgdx比较少,多数情况需要去官网和google找资料,相互学习的可以加我联系方式。
前言
TexturePacker,文理打包。我们为什么要对文理进行打包?
在OpenGL中,一个纹理被绑定,再执行绘制完成,另一个纹理被绑定,更多的绘制完成等等。绑定纹理的成本相对较高。
因此理想的做法是在一个较大的图像上存储许多较小的图像,绑定较大的纹理一次,然后多次绘制它的一部分。
libGDX 有一个TexturePacker类可以进行打包,也可以通过图形化界面工具打包:https://github.com/crashinvaders/gdx-texture-packer-gui
一、通过代码打包
首先添加依赖:
api "com.badlogicgames.gdx:gdx-tools:$gdxVersion"
创建一个目录将要打包的图片都放进去,注意命名规范,后面调用要用到的。

编写一个main执行打包:
import com.badlogic.gdx.tools.texturepacker.TexturePacker;
public class MyTexturePackage {
public static void main(String[] args) {
// 只支持".png", ".jpg", ".jpeg" 下面分别是输入目录,输出目录,输出的atlas名字
String inputDir="C:\\Users\\Administrator\\Desktop\\study\\game\\my-texture";
String outputDir="C:\\Users\\Administrator\\Desktop\\study\\game\\my-texture\\pack";
String packFileName="myPic";
TexturePacker.process(inputDir, outputDir, packFileName);
}
}

接下来放到资源文件中,加载调用,下面是一个demo:
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.utils.ScreenUtils;
public class MyTexturePacker extends ApplicationAdapter {
private SpriteBatch batch;
private TextureAtlas atlas;
private TextureRegion gaoleng, meizi, pengzhang;
private Sprite xiang;
@Override
public void create() {
batch = new SpriteBatch();
atlas = new TextureAtlas(Gdx.files.internal("demo/myPic.atlas"));
// 通过名称获取
gaoleng = atlas.findRegion("gaoleng");
// 通过数组索引获取
meizi = atlas.getRegions().get(1);
pengzhang = atlas.findRegion("pengzhang");
xiang = atlas.createSprite("xiang");
}
@Override
public void render() {
ScreenUtils.clear(1, 0, 0, 1);
batch.begin();
batch.draw(gaoleng, 0, 0);
batch.draw(meizi, 0, 100);
batch.draw(pengzhang, 200, 0);
batch.draw(xiang, 300, 0);
batch.end();
}
@Override
public void dispose() {
// 防止内存溢出
batch.dispose();
atlas.dispose();
}
}
效果:

使用gdx-texture-packer-gui工具打包
2021-10-03 我用最新版是 4.10.1
使用gdx-texture-packer-gui工具打包,下载window版,我这里没能安装简体中文,估计是有bug,那就用英文版。下载安装后,运行,创建包:

填写输入输入和图片

右边的全局设置可以调整一些参数,我们不用管它,使用默认的,点击打包:

效果:

调用与上面的代码一致。
使用gdx-texture-packer-gui打包连续特效
使用gdx-texture-packer-gui比较方便,下面是打包连续特效的配置

打赏
创作不易,觉得内容不错就赏作者一杯咖啡吧!(恰饭)

后续我会出更多libgdx文章:寻路、寻路算法、打怪,以RPG的视角。
libGDX游戏开发之文理打包(八)的更多相关文章
- Libgdx游戏开发(2)——接水滴游戏实现
原文:Libgdx游戏开发(2)--接水滴游戏实现 - Stars-One的杂货小窝 本文使用Kotlin语言开发 通过本文的学习可以初步了解以下基础知识的使用: Basic file access ...
- [libGDX游戏开发教程]使用libGDX进行游戏开发(12)-Action动画
前文章节列表: 使用libGDX进行游戏开发(11)-高级编程技巧 使用libGDX进行游戏开发(10)-音乐音效不求人,程序员也可以DIY 使用libGDX进行游戏开发(9)-场景过渡 ...
- [libGDX游戏开发教程]使用libGDX进行游戏开发(1)-游戏设计
声明:<使用Libgdx进行游戏开发>是一个系列,文章的原文是<Learning Libgdx Game Development>,大家请周知.后续的文章连接在这里 使用Lib ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(11)-高级编程技巧 Box2d和Shader
高级编程技巧只是相对的,其实主要是讲物理模拟和着色器程序的使用. 本章主要讲解利用Box2D并用它来实现萝卜雨,然后是使用单色着色器shader让画面呈现单色状态:http://files.cnblo ...
- 精通libGDX游戏开发-RPG实战-开发游戏的基本前提
说起RPG,大概国人是不会陌生的. 这不得不从中国单机游戏市场说起,由于早期软件市场被盗版杀死,顺带的,单机游戏软件作为软件市场的分支,也没赚什么钱,养不活公司纷纷倒闭,只到RPG游戏<仙剑奇侠 ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(10)-音乐和音效
本章音效文件都来自于公共许可: http://files.cnblogs.com/mignet/sounds.zip 在游戏中,播放背景音乐和音效是基本的功能. Libgdx提供了跨平台的声音播放功能 ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(7)-屏幕布局的最佳实践
管理多个屏幕 我们的菜单屏有2个按钮,一个play一个option.option里就是一些开关的设置,比如音乐音效等.这些设置将会保存到Preferences中. 多屏幕切换是游戏的基本机制,Libg ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(4)-素材管理
游戏中总是有大量的图像资源,我们通常的做法是把要用的图片做成图片集,这样做的好处就不多说了.直接来看怎么用. 这里我们使用自己的类Assets来管理它们,让这个工具类作为我们的资源管家,从而可以在任何 ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(2)-游戏框架搭建
让我们抛开理论开始code吧. 入口类CanyonBunnyMain的代码: package com.packtpub.libgdx.canyonbunny; import com.badlogic. ...
- 精通libGDX游戏开发-RPG实战-欢迎来到RPG的世界
欢迎来到RPG的世界 本章我会快速的使用tiled这样的瓷砖地图工具,来带领大家创造所设想的世界. 创建并编辑瓷砖地图 瓷砖地图(tile-based map)是广泛应用于各种游戏类型的地图格式,li ...
随机推荐
- 在 Mac 上撰写和格式化备忘录-添加提醒-添加日历
在 Mac 上撰写和格式化备忘录 您可以撰写备忘录以及更改备忘录的格式,例如,更改字体大小或对齐方式,或者使文本变为粗体.如果您使用的是升级后的 iCloud 备忘录或者储存在您 Mac 上的备忘录, ...
- 文心一言 VS 讯飞星火 VS chatgpt (111)-- 算法导论10.2 2题
二.用go语言,用一个单链表 L实现一个栈.要求操作 PUSH和 POP 的运行时间仍为 O(1). 文心一言: 在 Go 语言中,我们可以用结构体来实现一个单链表,然后再用栈的相关操作. 以下是一个 ...
- Ubuntu上解决快捷键与idea快捷键冲突
Ubuntu上解决快捷键与idea快捷键冲突 一.ubuntu 本身系统导致,需要修改 ubuntu 快捷键 解决方案: 设置 按钮→系统设置→硬件选项区域中的"键盘"→切换到&q ...
- Springboot+Mybatis+Mybatisplus 框架中增加自定义分页插件和sql 占位符修改插件
一.Springboot简介 springboot 是当下最流行的web 框架,Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程 ...
- 如何恢复win10/11音量条为默认样式?
保存为reg: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Curre ...
- codeforces #865 div1A
A. Ian and Array Sorting 思路:首先我们可以从前往后做一遍,把除了最后一个元素其他所有数都变成和第一个数一样的数,然后假如前n-1个数个数为偶数,这样我们分组进行操作,一定可以 ...
- LangChain实战
1.概述 最近,在研究LangChain时,发现一些比较有意思的点,今天笔者将给大家分享关于LangChain的一些内容. 2.内容 2.1 什么是LangChain? LangChain是一项旨在赋 ...
- JavaScript:数据类型详解
ECMAScript中数据类型目前有两种:基本数据类型和引用数据类型. 基本数据类型 基本数据类型也称作简单数据类型,为Undefined,Null,Boolean,Number,String,Sym ...
- 拿到开发板需要做的事情 -- 配置Python环境
1.查看系统时间 date -R 2.修改系统时间 windows上时间项目时间正常,Ubuntu16.04上时间错误 - 贾斯丁哔哔 - 博客园 (cnblogs.com) 3.安装pip3 sud ...
- html5学习内容-6(flex)
弹性布局–flex (一)视口单位主要包括以下4个: vw:1vw等于视口宽度的1% vh:1vh等于视口高度的1% vmin:选取vm和vh中最小的那个 vmax:选取vm和vh中最大的那个 常用于 ...