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 ...
随机推荐
- 【原型链污染】Python与Js
[原型链污染]Python与Js 一.背景 最近在TSCTF的比赛题中遇到了Python的原型链污染题目,所以借此机会学习一下.说到原型链,最多的还是在Js中,所以就一并学习一下.(因为是菜鸡所以文章 ...
- Redis 6 学习笔记 1 —— NoSQL数据库介绍,Redis常用数据类型
NoSQL数据库介绍(了解) 技术的分类1.解决功能性的问题:Java.Jsp.RDBMS.Tomcat.HTML.Linux.JDBC.SVN,2.进一步地,解决系统功能扩展性的问题:Struts. ...
- k8s部署xxl-job-admin
概述 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 下载好要用到的镜像 docker pull ...
- Pinely Round 2 (Div. 1 + Div. 2) (CF1863)
本来开了某场远古 Div 1,然后学了一堆前置知识至今仍然不会 E.换一场写来得及吗? A. Channel 模拟,略. B. Split Sort Description 给你一个长度为 \(n\) ...
- MongoDB 中的锁分析
MongoDB 中的锁 前言 MongoDB 中锁的类型 锁的让渡释放 常见操作使用的锁类型 如果定位 MongoDB 中锁操作 1.查询运行超过20S 的请求 2.批量删除请求大于 20s 的请求 ...
- 《实现领域驱动设计》笔记——DDD入门
设计不只是感观,设计就是产品的工作方式. 我们的目标应该是创造一个可观测的.可伸缩的.组织良好的软件模型. DDD同时提供了战略上的战术上的建模工具. 我能DDD吗? DDD首先并不是关于技术的,而是 ...
- 浅谈斜率优化DP
前言 考试 T2 出题人放了个树上斜率优化 DP,直接被同校 OIER 吊起来锤. 离 NOIP 还有不到一周,赶紧学一点. 引入 斜率 斜率,数学.几何学名词,是表示一条直线(或曲线的切线)关于(横 ...
- 可怕!.Net 8正式发布了,.Net野心确实不小!
随着三天.NET Conf 2023的会议结束了,.Net 8正式发布了. .Net 8是官方号称有史以来性能最快的一个版本了. .Net 8 增加了数以千计的性能.稳定性和安全性改进,以及平台和工具 ...
- PVE 下虚拟机 Ubuntu 无法进入恢复模式的解决方案——提取原有系统文件
问题说明 某天重启虚拟机 Ubuntu,发现虚拟机只有容器IP,桥接的接口在虚拟机显示状态为 DOWN: 想重启进入恢复模式,却发现恢复模式一直花屏,无法使用: 没有办法了,只能想办法提取原有系统内原 ...
- 基于WPSOffice+Pywpsrpc构建Docker镜像,实现文档转换和在线预览服务
背景 产品功能需要实现标准文档的在线预览功能,由于DOC文档没办法直接通过浏览器打开预览,需要提前转换为PDF文档或者HTML页面. 经过测试发现DOC转为HTML页面后文件提交较大,而且生成的静态资 ...