`
king_tt
  • 浏览: 2233197 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

libgdx 图形绘制

 
阅读更多

纹理(texture)

一个图片从原始格式解码并上传到GPU就被称为纹理。OpenGL要求纹理的高度和宽度都必须是2的n次方大小,只有满足这个条件纹理图片才是有效的。 一旦获取了像素值,我们就可以将这些数据传给OpenGL,让OpenGL生成一个纹理贴图

为了绘制texture,常常使用几何来描述,通过几何对应的顶点来描述纹理。比如要描述一个矩形,可以通过矩形的四个顶点来描述。


要绘图时,首先要绑定纹理,然后传递一个几何描述(如矩形的四个顶点)给OpenGL进行绘制。而绘图的大小和位置由几何描述和OpenGL的viewport的设置共同决定。当然大部分的游戏都会让viewport的大小和屏幕一致,这就意味使用像素更容易让纹理绘制在合适的大小和位置。

绘制一个矩形的几何图形是非常常见的,同样让同一个纹理在不同位置以不同大小位置也是非常常见的,比如漫天的弹幕。但是每次都传递每个形状到GPU进行绘制的效率是较低的。所以许多相同纹理可以一起描述并一起送入GPU,这就是libgdx SpriteBatch类所要做的。


SpriteBatch被赋予了纹理和坐标以便每个图形的绘制,它汇集了很多图形而没有直接提交给GPU。如果它被赋予的纹理不同于原有的,它将保持原有的图形,并获取新的图形。绘制的图片,分辨率必须是2的次方(如32x32, 128x128, 256x512, 512x1024等)

例如: 本示例采用分辨率为 256x256 像素:




图形绘制

绘制图形,程序启动(create)——》读取图片(image)——》纹理(texture)绑定——》绘制初始化(sprite.begin)——》绘制(render)——》绘制完处理(sprite.end)——》销毁(dispose)等步骤。

MainActivity

public class MainActivity extends AndroidApplication {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		initialize(new MyGame(), false);
	}
}


MyGame

public class MyGame implements ApplicationListener {
	private SpriteBatch batch;		// 批量绘制
	private Texture texture;		// 纹理
	
	@Override
	public void create() {
		batch = new SpriteBatch();
		texture = new Texture(Gdx.files.internal("image03.png"));		// 从asset文件读取图片
	}

	@Override
	public void resize(int arg0, int arg1) {	
	}

	@Override
	public void render() {					
		Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);		// 清屏
		Gdx.gl.glClearColor(0.5f, 0.5f, 0.5f, 1);		// 设置屏幕背景为灰色
		
		batch.begin();
		batch.draw(texture, 10, 10);
		batch.end();		
	}

	@Override
	public void pause() {				
	}

	@Override
	public void resume() {				
	}

	@Override
	public void dispose() {	
		texture.dispose();
		batch.dispose();
	}
}

MyGame代码段中,image03.png 图片需要保存在 assets 文件夹内,这是有libgdx文件模块设计决定的

Gdx.files是libgdx的文件模块,主要提供以下5大功能:

  • 读取文件
  • 写文件
  • 复制文件
  • 移动文件
而获取操作文件的FileHandle有5种方法:

1 Classpath, 路径相对于classpath,文件通常为只读。注意: classpath与android的某些函数不兼容,如Audio.newSound(FileHandle) 和Audio.newMusic(FileHandle)

2Internal 内部文件路径相对于desktop程序根目录,或者android 的assets文件夹。assets文件夹本身就是存储资源的文件夹,相比res文件夹,它其中的资源不会生成R中的ID,用来放图片很是合适

3 External 外部文件路径相对于desktop程序home目录,或者android 的SD卡根目录

4 Absolute绝对的文件系统目录,跨平台时需要注意对应的绝对路径

5) Local, 本地目录,对于android是应用Application自身内部的files目录,对于desktop是root根目录

因此,用Gdx.files.internal("image1.jpg")获取的图片,需要保存在assets文件夹下

读取图片后,调用batch.draw(texture,10,10) 绘制图形,(10,10)是绘制坐标,它基于笛卡尔座标,即以左下角为坐标原点。


运行结果:



上面示例说明:

首先,在create()申请texture,从内部assets文件夹中读取图片 image03.png

texture = new Texture(Gdx.files.internal("image03.png"));

然后,在render() 中渲染绘制图片

batch.draw(texture, 10, 10); // 绘制region

最后,在dispose中销毁资源

texture.dispose();
batch.dispose();




参考推荐:

android游戏开发框架libgdx 图形绘制


分享到:
评论

相关推荐

    libgdx 绘制图形

    总的来说,LibGDX提供了一套完整的2D图形绘制工具,从基本的图像加载到复杂的动画实现,都覆盖得很全面。开发者可以通过灵活地组合这些工具,创造出各种各样的游戏画面。而`TextureTestR`这个文件名可能是指一个关于...

    libgdx的helloworld程序及绘制图形

    本教程将深入讲解如何创建一个基本的LibGDX HelloWorld程序以及如何在其中绘制图形。 ### 一、HelloWorld程序 1. **环境准备**:首先,你需要安装Java Development Kit (JDK) 和IntelliJ IDEA或Eclipse这样的集成...

    Libgdx游戏开发图形图像绘制示例代码

    在Libgdx中,图形绘制主要依赖于`ShapeRenderer`和`SpriteBatch`两个核心类。`ShapeRenderer`用于绘制基本的几何形状,如线条、矩形、椭圆等;而`SpriteBatch`则用于批量绘制精灵(Sprites),提高渲染效率。 `...

    Libgdx游戏引擎图形图像绘制源码

    使用了TexturePacker-Gui图片整合工具来实现Libgdx游戏引擎图形图像的绘制源码,项目中包含:源码、APK文件、效果图、项目结构图 教程地址:http://blog.csdn.net/yangyu20121224/article/details/9166859

    android游戏开发框架libgdx的使用(二)--图形绘制[汇编].pdf

    android游戏开发框架libgdx的使用(二)--图形绘制[汇编].pdf

    android游戏开发框架libgdx的使用(二)--图形绘制借鉴.pdf

    android游戏开发框架libgdx的使用(二)--图形绘制借鉴.pdf

    libGDX 1.10.0 开发包

    - **Stage**:舞台是LibGDX中管理2D图形和交互的对象,你可以将精灵(Sprites)、文本、按钮等添加到舞台上,然后进行渲染和更新。 - **SpriteBatch**:用于高效绘制2D图像的批处理工具,它可以一次性渲染多个精灵...

    libgdx 游戏摇杆

    在图形绘制方面,LibGDX 提供了 `ShapeRenderer` 和 `SpriteBatch` 工具。你可以使用 `ShapeRenderer` 绘制圆形的摇杆和背景,或者使用 `SpriteBatch` 绘制预定义的图像。摇杆的图形通常包括一个中心点(固定不动)...

    LibGDX Game Development Essentials

    5. 图形和渲染:LibGDX提供的2D图形渲染API,如何加载和显示图像、绘制基本形状、创建动画和特效等。 6. 音频处理:在游戏开发中,音频的添加和处理是不可或缺的一部分。本书将介绍如何在LibGDX中加载和播放音频。 7...

    libgdx——中文显示与汉字绘制

    LibGDX是一个强大的跨平台游戏开发框架,它为开发者提供了丰富的功能,包括图形渲染、音频处理、输入管理等。在本教程中,我们将深入探讨如何在LibGDX中实现中文显示和汉字绘制。 首先,我们要了解LibGDX的字体渲染...

    使用LibGDX开发一个完整游戏 教程全集

    在游戏开发过程中,你需要掌握基本的图形绘制,如精灵的创建、移动和旋转。例如,你可以通过加载一个PNG或JPG文件创建Texture,然后创建一个Sprite,将Texture应用到Sprite上,最后在渲染循环中使用SpriteBatch绘制...

    Libgdx开发丛书之 Learning LibGDX Game Development, 2nd Edition

    3. **图形与渲染**:掌握如何绘制2D和3D图形,创建动画效果,以及使用精灵、位图字体和纹理 atlases。 4. **声音与音乐**:学习如何播放和控制音频,包括背景音乐和音效。 5. **用户输入**:处理各种输入设备的...

    libgdx游戏

    2. **SpriteBatch**: 这个类用于高效地绘制2D图形,包括精灵、纹理和文字。它允许开发者一次性绘制多个图形,减少了渲染时的上下文切换。 3. **Camera**: LibGDX提供了多种相机类,如OrthographicCamera和...

    libgdx1.6.1.rar

    2. **图形渲染**:LibGDX提供了一个强大的图形API,基于OpenGL ES,支持2D和3D图形的绘制。开发者可以利用这个功能创建复杂的游戏场景和动画。 3. **音频处理**:框架内置了音频管理,支持播放、暂停、停止和循环...

    libgdx Continuous & non continuous rendering

    LibGDX 提供了丰富的图形绘制功能,其中“Continuous & non continuous rendering”是两个重要的渲染模式,它们对于优化游戏性能和响应性至关重要。 **连续渲染(Continuous Rendering)** 连续渲染是一种实时更新...

    Libgdx开发教程

    在`MyFirstPoint.java`类中,开发者可以利用Libgdx的图形模块在屏幕上绘制基本图形,如点、线、矩形等。通过调用`Gdx.graphics`的相关方法,可以设置屏幕尺寸、背景颜色以及绘制各种图形元素。例如,使用`...

    Libgdx开源游戏 【蚂蚁回家】libgdx实现

    3. **图形渲染**:Libgdx使用LWJGL( Lightweight Java Game Library )作为底层图形API,支持OpenGL ES 2.0,提供了纹理、精灵、批次渲染等功能,使开发者能高效地绘制2D和3D图形。 4. **音频处理**:Libgdx提供了...

    libgdx教程

    2. **SpriteBatch**:用于高效地绘制2D图形,包括精灵(Sprite)、纹理(Texture)和文本。SpriteBatch允许开发者一次性绘制大量图形,提高渲染效率。 3. **Input处理**:LibGDX提供了丰富的输入处理机制,包括触摸...

    libgdx经典游戏实例源码

    2. **Gdx-Graphics**: 包含2D和3D图形绘制,包括精灵(Sprites)、纹理(Textures)、形状(Shapes)绘制等。 3. **Gdx-Audio**: 处理音频播放,支持音乐和音效的加载和播放。 4. **Gdx-Files**: 文件I/O操作,支持...

    使用libgdx中box2d编写的一个简单游戏测试场景1

    它提供了一个全面的API,涵盖了图形绘制、音频处理、输入检测等多个方面,让开发者能够快速搭建游戏框架。在这个场景中,libgdx被用来创建游戏窗口,管理图像资源,以及处理用户输入。通过libgdx的Stage类,我们可以...

Global site tag (gtag.js) - Google Analytics