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 ...
 
随机推荐
- What is Lambda?
			
根据我的观察,Lambda是一种比较灵活的形式,需要多看几个案例才能明白它. Lambda是一种简化代码的技术手段,主要用于简化匿名实现类,允许把函数作为一个方法的参数传递进方法中.它本身并不会创造出 ...
 - destoon根据目录下的html文件生成地图索引
			
因为项目需要,destoon根据目录下的html文件生成地图索引,操作方法,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...
 - 分布式事务 —— SpringCloud Alibaba Seata
			
Seata 简介 传统的单体应用中,业务操作使用同一条连接操作不同的数据表,一旦出现异常就可以整体回滚.随着公司的快速发展.业务需求的变化,单体应用被拆分成微服务应用,原来的单体应用被拆分成多个独立的 ...
 - 爬虫系列——requests
			
文章目录 一 介绍 二 基于GET请求 三 基于POST请求 四 响应Response 五 高级用法 一 介绍 介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,reques ...
 - Go泛型解密:从基础到实战的全方位解析
			
本篇文章深入探讨了Go语言的泛型特性,从其基础概念到高级用法,并通过实战示例展示了其在实际项目中的应用. 关注[TechLeadCloud],分享互联网架构.云服务技术的全维度知识.作者拥有10+年互 ...
 - HCTF 2023 wp
			
HCTF 2023 wp 一.Misc 1.玩原神玩的 分析:附件为一张图片 观察最后一行,明显有flag的格式 搜索得知是 对照得flag为:hctf{yuanlainiyewanyuanshenh ...
 - js数据结构--队列
			
<!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...
 - Nacos注册中心有几种调用方式?
			
Spring Cloud Alibaba Nacos 作为近几年最热门的注册中心和配置中心,也被国内无数公司所使用,今天我们就来看下 Nacos 作为注册中心时,调用它的接口有几种方式? 1.什么是注 ...
 - 从 SQL 查询优化技巧去看 h2 数据库查询原理
			
本文目标是:了解查询的核心原理,对比 SQL 查询优化技巧在 h2database 中的落地实现. 前提:为了贴近实际应用,本文 Code Insight 基于 BTree 存储引擎. 数据查询核心原 ...
 - 又拍云+PicGo搭建图床教程
			
具体搭建方法 https://blog.csdn.net/qq_41684621/article/details/114068076 这里有个细节 注意这里一定要加上 http:// 否则在自动生成 ...