zoukankan      html  css  js  c++  java
  • libgdx学习记录19——图片动态打包PixmapPacker

    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 ) 生成图片资源包

    示例代码:

     1 package com.fxb.newtest;
     2 
     3 import com.badlogic.gdx.ApplicationAdapter;
     4 import com.badlogic.gdx.Gdx;
     5 import com.badlogic.gdx.graphics.GL10;
     6 import com.badlogic.gdx.graphics.Pixmap;
     7 import com.badlogic.gdx.graphics.Pixmap.Format;
     8 import com.badlogic.gdx.graphics.Texture.TextureFilter;
     9 import com.badlogic.gdx.graphics.g2d.PixmapPacker;
    10 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
    11 import com.badlogic.gdx.graphics.g2d.TextureAtlas;
    12 import com.badlogic.gdx.graphics.g2d.TextureRegion;
    13 
    14 public class Lib019_TexturePack extends ApplicationAdapter{
    15 
    16     TextureAtlas atlas;
    17     TextureRegion region1, region2;
    18     SpriteBatch batch;
    19     
    20     @Override
    21     public void create() {
    22         // TODO Auto-generated method stub
    23         super.create();
    24         
    25         PixmapPacker packer = new PixmapPacker( 512, 512, Format.RGB565, 2, true );
    26         //packer.pack( "first", pixmap1 );
    27         Pixmap pixmap1 = new Pixmap( Gdx.files.internal( "data/badlogic.jpg" ) );
    28         Pixmap pixmap2 = new Pixmap( Gdx.files.internal( "data/pal4_1.jpg" ) );
    29         packer.pack( "first", pixmap1 );
    30         packer.pack( "second", pixmap2 );
    31         
    32         atlas = packer.generateTextureAtlas( TextureFilter.Nearest, TextureFilter.Nearest, false );
    33         region1 = atlas.findRegion( "first" );
    34         region2 = atlas.findRegion( "second" );
    35         
    36         pixmap1.dispose();
    37         pixmap2.dispose();
    38         
    39         batch = new SpriteBatch();
    40     }
    41 
    42     @Override
    43     public void render() {
    44         // TODO Auto-generated method stub
    45         super.render();
    46         Gdx.gl.glClearColor( 0, 1, 1, 1 );
    47         Gdx.gl.glClear( GL10.GL_COLOR_BUFFER_BIT );
    48         
    49         batch.begin();
    50         batch.draw( region1, 10, 10 );
    51         batch.draw( region2, 20+region1.getRegionWidth(), 10 );
    52         batch.end();
    53         
    54     }
    55 
    56     @Override
    57     public void dispose() {
    58         // TODO Auto-generated method stub
    59         atlas.dispose();
    60         super.dispose();
    61     }
    62 
    63 }

    运行结果:

  • 相关阅读:
    springcloud 学习笔记
    一文领悟HTTPS密钥为什么这样传输
    静态代码扫描工具PMD参数过程简介与JCommander 以及如何扩展
    静态代码扫描工具PMD分析XML的核心源码解读(从core主入口到子语言解析)
    Jenkins出现SVNException:E175002
    一个第三方登录的流程
    爬虫入门(三)爬取b站搜索页视频分析(动态页面,DBUtils存储)
    09 元素等待机制
    测试观点
    什么是请求
  • 原文地址:https://www.cnblogs.com/MiniHouse/p/3777601.html
Copyright © 2011-2022 走看看