libgdx 学习笔记四 MyFirstTriangle
2012-11-15 01:25
477 查看
Introduction(序言)
上节HelloWorld 教程证明了如何从导入一个已有的项目构造一个libgdx应用程序。让我们进一步从上一节的基础上创建项目。本教程会更详细
假使读者是一个Eclipse的初学者。以后会有更简洁的教程。
本节的源文件包含在MyFirstTriangle_<data>.zip
Creating the Desktop Project
下载最新的nightly zip 然后解压缩到一个名为libgdx-nightly临时目录。
大部分代码包含所有的游戏逻辑,将放在一个常规的JAVA工程。在Eclipse中 点击File -> New -> Java Project。工程名为my-first-triangle 。
在JRE选项卡中,选择JavaSE-1.6或者类似的,然后点击Finish
让我们复制包含所有必要的 libgdx 类和方法的库文件到我们的工作区。右键my-first-triangle工程 选择New -> Folder,从libgdx-nightly 目录中
复制一下文件到libs中:
gdx-backend-jogl.jar
gdx-backend-jogl-natives.jar
gdx-sources.jar
gdx-natives.jar
gdx.jar
现在我们添加库文件到我们的工程,因此我们的Java代码能用到libgdx 库文件中的类了。右键my-first-triangle工程选择Properties。来到Java Build Path 选项卡,选择Libraries tab, 点击Add JARs...,选择以下文件到我们的my-first-triangle/libs目录中
gdx-backend-jogl.jar
gdx-backend-jogl-natives.jar
gdx-natives.jar
gdx.jar
Eclipse能显示关于libgdx 类和方法的javadoc 文档供你使用。 仍在 Libraries tab,展开gdx.jar列表并 在名为Source attachment双击。点击工作区
选到my-first-triangle/libs 目录,这次选择gdx-sources.jar.
现在我们能创建一个绘制三角形的类。展开my-first-triangle 文件夹,在src source directory 上右键然后选择New -> Package.
随便取个名字,在本例中我们使用com.test.myfirsttriangle。在一个新package上右键,选择New -> Class。名字为MyFirstTriangle
在Interfaces
字段,add com.badlogic.gdx.ApplicationListener 接口。内容如下:
[java]
view plaincopyprint?
package com.test.myfirsttriangle;
import com.badlogic.gdx.ApplicationListener;
public class MyFirstTriangle
implements ApplicationListener {
@Override
public void create() {
// TODO Auto-generated method stub
}
@Override
public void dispose() {
// TODO Auto-generated method stub
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void render() {
// TODO Auto-generated method stub
}
@Override
public void resize(int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
不久我们将添加逻辑到MyFirstTriangle
来绘制三角形。它能在桌面或者android环境下运行。让我们创建一个桌面入口点。在同一包中创建另一个类当做MyFirstTriangle类,这次名叫MyFirstTriangleDesktop。在类中加入一个main方法:
[java]
view plaincopyprint?
package com.test.myfirsttriangle;
import com.badlogic.gdx.backends.jogl.JoglApplication;
public class MyFirstTriangleDesktop {
public static
void main (String[] argv) {
new JoglApplication(new MyFirstTriangle(),
"My First Triangle", 480,
320, false);
}
}
MyFirstTriangleDesktop类给启动桌面应用程序一个入口点 。它由一个JoglApplication创建,通过在MyFirstTriangle类的实例中执行渲染。
在MyFirstTriangleDesktop 类上右键Run As -> Java Application来运行应用。将看到一个空白。Rendering a Triangle(渲染一个三角形)
这个应用将显示一个空白的屏幕因为我们的MyFirstTriangle类 没有渲染逻辑。现在我们要写绘制三角形的代码了。更
新MyFirstTriangle类的内容:
[java]
view plaincopyprint?
package com.test.myfirsttriangle;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.Mesh;
import com.badlogic.gdx.graphics.VertexAttribute;
import com.badlogic.gdx.graphics.VertexAttributes.Usage;
public class MyFirstTriangle
implements ApplicationListener {
private Mesh mesh;
@Override
public void create() {
if (mesh ==
null) {
mesh = new Mesh(true,
3, 3,
new VertexAttribute(Usage.Position,
3, "a_position"));
mesh.setVertices(new
float[] { -0.5f, -0.5f,
0, 0.5f, -0.5f,
0, 0,
0.5f, 0 });
mesh.setIndices(new short[] {
0, 1,
2 });
}
}
@Override
public void dispose() { }
@Override
public void pause() { }
@Override
public void render() {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
mesh.render(GL10.GL_TRIANGLES, 0,
3);
}
@Override
public void resize(int width,
int height) { }
@Override
public void resume() { }
}
运行工程。这个应用将在屏幕中间显示一个白色的三角形
让我们看改变的地方。当surface 被创建时create() 调用 。我们创建一个用来在屏幕上的绘制对象Mesh。它的构造函数有几个参数,但此刻注意VertexAttribute对象。VertexAttribute在构造函数中包含了表示信息的类型和mesh结果。一个mesh可能包含关于对象位置,颜色,纹理或者更多的信息,但此刻我们仅指定位置信息。因为这个mesh是个三角形,它的位置有三个顶点组成,在笛卡尔坐标系中每个顶点又有三个值表示分别是(X,Y,Z)
mesh的三个顶点的位置在(-0.5f, -0.5f, 0), (0.5f, -0.5f, 0), (0, 0.5f, 0). 我们根据顶点的顺序设置mesh的索引,就像在游戏中按顺序连接几个点。像三角形这样简单的形状,这个顺序没有太大关系因为你连接顶点的顺序无关紧要。如果点很多,顺序将会影响对象完成的形状。
当应用程序每次运行render()方法时。基本上它能在屏幕上尽可能快的重绘。在render()方法中为了渲染它自己我们告诉mesh尽早创建 。我们每次调用render()也清空屏幕。它通过OpenGL直接绘制。
简单的说,我们跳过许多细节 ,比如怎样根据不同的参数改变方法的行为。我们将在后来的教程中跳过更多的细节。你能简单的从javadoc查阅任一方法在编辑器中方法名上鼠标悬停。
Setting Up an Android Project
在android测试一个应用程序仅需要在Eclipse中启动一个小的android工程,就是提交到桌我们正好创建的桌面工程。点击 File -> New -> Other
在android选项卡下面,选择 Android Project 然后点击下一步。工程名随意,本例中为my-first-triangle-android。在Build Target 字段,选择
android平台版本。不同的平台版本关于OpenGL ES有不同的支持,但我们这是一个简单的例子,就选择android 1.5就行了。包名和类名和上面的桌面工程一样分别是 com.test.myfirsttriangle,my-first-triangle-android 。检查创建的Activity 复选框给activity一个名字,我们这里使用MyFirstTriangleAndroid。在Min SDK Version中 1.5对应的level为3.单击完成。
类似桌面应用,我们将复制libgdx 库文件到工作区中,右键 my-first-triangle-android 选择 New -> Folder。名为libs。然后回到libgdx-nightly 目录
复制如下libgdx 库文件复制到我们刚才创建的libs文件夹中:
armeabi/
armeabi-v7a/
gdx-backend-android.jar
gdx.jar
我们将在我们的工程设置中引用这些文件,右键my-first-triangle-android 文件夹,然后选择Properties。在Java Build Path选项卡下方,找到Libraries tab.点击ADD JARs在my-first-triangle-android/libs 中选择gdx-backend-android.jar 和gdx.jar。
我们需要引用在先前的工程中的libgdx的类。在Java Build Path界面,找到Projects tab 点击Add... 然后添加my-first-triangle 到我们早先创建的工程剩余的最后任务是在我们早期写的游戏代码中修改我们的Activity 在Android 的入口点处。找到MyFirstTriangleAndroid
类用一以下内容替代
[java]
view plaincopyprint?
package com.test.myfirsttriangle; import android.os.Bundle; import com.badlogic.gdx.backends.android.AndroidApplication; publicclassMyFirstTriangleAndroidextendsAndroidApplication { @Override publicvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initialize(newMyFirstTriangle(),false); } }
类似我们的桌面入口在MyFirstTirangleDesktop类中,所有代码创建一个MyFirstTriangle
管理渲染过程的实例。在my-first-triangle-android
上右键选择 Run As -> Android Application运行应用程序。它安装在设备或模拟器中。在模拟器载入完成时,应用将自动开始。
效果如下 :
What's Next(下一步呢)这是你的第一个三角形。学习更多 关于 libgdx 框架的基础, 请看MeshColorTexture 指南Updates(更新)
use nightly build (使用nightly编译)
added gdx-backend-jogl-natives.jar to libraries to hopefully remove link errors (添加gdx-backend-jogl-natives.jar到库中希望能移除link 错误)
MyFirstTriangle class is now importingcom.badlogic.gdx.Gdx (MyFirstTriangle 类现在由com.badlogic.gdx.Gdx导入)
updated the MyFirstTriangle_<date>.zip source files for this guide (更新MyFirstTriangle_<date>.zip源文件)
added screen shots (添加一个屏幕shoots)
原文地址:/article/4874075.html
上节HelloWorld 教程证明了如何从导入一个已有的项目构造一个libgdx应用程序。让我们进一步从上一节的基础上创建项目。本教程会更详细
假使读者是一个Eclipse的初学者。以后会有更简洁的教程。
本节的源文件包含在MyFirstTriangle_<data>.zip
Creating the Desktop Project
下载最新的nightly zip 然后解压缩到一个名为libgdx-nightly临时目录。
大部分代码包含所有的游戏逻辑,将放在一个常规的JAVA工程。在Eclipse中 点击File -> New -> Java Project。工程名为my-first-triangle 。
在JRE选项卡中,选择JavaSE-1.6或者类似的,然后点击Finish
让我们复制包含所有必要的 libgdx 类和方法的库文件到我们的工作区。右键my-first-triangle工程 选择New -> Folder,从libgdx-nightly 目录中
复制一下文件到libs中:
gdx-backend-jogl.jar
gdx-backend-jogl-natives.jar
gdx-sources.jar
gdx-natives.jar
gdx.jar
现在我们添加库文件到我们的工程,因此我们的Java代码能用到libgdx 库文件中的类了。右键my-first-triangle工程选择Properties。来到Java Build Path 选项卡,选择Libraries tab, 点击Add JARs...,选择以下文件到我们的my-first-triangle/libs目录中
gdx-backend-jogl.jar
gdx-backend-jogl-natives.jar
gdx-natives.jar
gdx.jar
Eclipse能显示关于libgdx 类和方法的javadoc 文档供你使用。 仍在 Libraries tab,展开gdx.jar列表并 在名为Source attachment双击。点击工作区
选到my-first-triangle/libs 目录,这次选择gdx-sources.jar.
现在我们能创建一个绘制三角形的类。展开my-first-triangle 文件夹,在src source directory 上右键然后选择New -> Package.
随便取个名字,在本例中我们使用com.test.myfirsttriangle。在一个新package上右键,选择New -> Class。名字为MyFirstTriangle
在Interfaces
字段,add com.badlogic.gdx.ApplicationListener 接口。内容如下:
[java]
view plaincopyprint?
package com.test.myfirsttriangle;
import com.badlogic.gdx.ApplicationListener;
public class MyFirstTriangle
implements ApplicationListener {
@Override
public void create() {
// TODO Auto-generated method stub
}
@Override
public void dispose() {
// TODO Auto-generated method stub
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void render() {
// TODO Auto-generated method stub
}
@Override
public void resize(int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
package com.test.myfirsttriangle; import com.badlogic.gdx.ApplicationListener; public class MyFirstTriangle implements ApplicationListener { @Override public void create() { // TODO Auto-generated method stub } @Override public void dispose() { // TODO Auto-generated method stub } @Override public void pause() { // TODO Auto-generated method stub } @Override public void render() { // TODO Auto-generated method stub } @Override public void resize(int width, int height) { // TODO Auto-generated method stub } @Override public void resume() { // TODO Auto-generated method stub }
不久我们将添加逻辑到MyFirstTriangle
来绘制三角形。它能在桌面或者android环境下运行。让我们创建一个桌面入口点。在同一包中创建另一个类当做MyFirstTriangle类,这次名叫MyFirstTriangleDesktop。在类中加入一个main方法:
[java]
view plaincopyprint?
package com.test.myfirsttriangle;
import com.badlogic.gdx.backends.jogl.JoglApplication;
public class MyFirstTriangleDesktop {
public static
void main (String[] argv) {
new JoglApplication(new MyFirstTriangle(),
"My First Triangle", 480,
320, false);
}
}
package com.test.myfirsttriangle; import com.badlogic.gdx.backends.jogl.JoglApplication; public class MyFirstTriangleDesktop { public static void main (String[] argv) { new JoglApplication(new MyFirstTriangle(), "My First Triangle", 480, 320, false); } }
MyFirstTriangleDesktop类给启动桌面应用程序一个入口点 。它由一个JoglApplication创建,通过在MyFirstTriangle类的实例中执行渲染。
在MyFirstTriangleDesktop 类上右键Run As -> Java Application来运行应用。将看到一个空白。Rendering a Triangle(渲染一个三角形)
这个应用将显示一个空白的屏幕因为我们的MyFirstTriangle类 没有渲染逻辑。现在我们要写绘制三角形的代码了。更
新MyFirstTriangle类的内容:
[java]
view plaincopyprint?
package com.test.myfirsttriangle;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.Mesh;
import com.badlogic.gdx.graphics.VertexAttribute;
import com.badlogic.gdx.graphics.VertexAttributes.Usage;
public class MyFirstTriangle
implements ApplicationListener {
private Mesh mesh;
@Override
public void create() {
if (mesh ==
null) {
mesh = new Mesh(true,
3, 3,
new VertexAttribute(Usage.Position,
3, "a_position"));
mesh.setVertices(new
float[] { -0.5f, -0.5f,
0, 0.5f, -0.5f,
0, 0,
0.5f, 0 });
mesh.setIndices(new short[] {
0, 1,
2 });
}
}
@Override
public void dispose() { }
@Override
public void pause() { }
@Override
public void render() {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
mesh.render(GL10.GL_TRIANGLES, 0,
3);
}
@Override
public void resize(int width,
int height) { }
@Override
public void resume() { }
}
package com.test.myfirsttriangle; import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL10; import com.badlogic.gdx.graphics.Mesh; import com.badlogic.gdx.graphics.VertexAttribute; import com.badlogic.gdx.graphics.VertexAttributes.Usage; public class MyFirstTriangle implements ApplicationListener { private Mesh mesh; @Override public void create() { if (mesh == null) { mesh = new Mesh(true, 3, 3, new VertexAttribute(Usage.Position, 3, "a_position")); mesh.setVertices(new float[] { -0.5f, -0.5f, 0, 0.5f, -0.5f, 0, 0, 0.5f, 0 }); mesh.setIndices(new short[] { 0, 1, 2 }); } } @Override public void dispose() { } @Override public void pause() { } @Override public void render() { Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); mesh.render(GL10.GL_TRIANGLES, 0, 3); } @Override public void resize(int width, int height) { } @Override public void resume() { } }
运行工程。这个应用将在屏幕中间显示一个白色的三角形
让我们看改变的地方。当surface 被创建时create() 调用 。我们创建一个用来在屏幕上的绘制对象Mesh。它的构造函数有几个参数,但此刻注意VertexAttribute对象。VertexAttribute在构造函数中包含了表示信息的类型和mesh结果。一个mesh可能包含关于对象位置,颜色,纹理或者更多的信息,但此刻我们仅指定位置信息。因为这个mesh是个三角形,它的位置有三个顶点组成,在笛卡尔坐标系中每个顶点又有三个值表示分别是(X,Y,Z)
mesh的三个顶点的位置在(-0.5f, -0.5f, 0), (0.5f, -0.5f, 0), (0, 0.5f, 0). 我们根据顶点的顺序设置mesh的索引,就像在游戏中按顺序连接几个点。像三角形这样简单的形状,这个顺序没有太大关系因为你连接顶点的顺序无关紧要。如果点很多,顺序将会影响对象完成的形状。
当应用程序每次运行render()方法时。基本上它能在屏幕上尽可能快的重绘。在render()方法中为了渲染它自己我们告诉mesh尽早创建 。我们每次调用render()也清空屏幕。它通过OpenGL直接绘制。
简单的说,我们跳过许多细节 ,比如怎样根据不同的参数改变方法的行为。我们将在后来的教程中跳过更多的细节。你能简单的从javadoc查阅任一方法在编辑器中方法名上鼠标悬停。
Setting Up an Android Project
在android测试一个应用程序仅需要在Eclipse中启动一个小的android工程,就是提交到桌我们正好创建的桌面工程。点击 File -> New -> Other
在android选项卡下面,选择 Android Project 然后点击下一步。工程名随意,本例中为my-first-triangle-android。在Build Target 字段,选择
android平台版本。不同的平台版本关于OpenGL ES有不同的支持,但我们这是一个简单的例子,就选择android 1.5就行了。包名和类名和上面的桌面工程一样分别是 com.test.myfirsttriangle,my-first-triangle-android 。检查创建的Activity 复选框给activity一个名字,我们这里使用MyFirstTriangleAndroid。在Min SDK Version中 1.5对应的level为3.单击完成。
类似桌面应用,我们将复制libgdx 库文件到工作区中,右键 my-first-triangle-android 选择 New -> Folder。名为libs。然后回到libgdx-nightly 目录
复制如下libgdx 库文件复制到我们刚才创建的libs文件夹中:
armeabi/
armeabi-v7a/
gdx-backend-android.jar
gdx.jar
我们将在我们的工程设置中引用这些文件,右键my-first-triangle-android 文件夹,然后选择Properties。在Java Build Path选项卡下方,找到Libraries tab.点击ADD JARs在my-first-triangle-android/libs 中选择gdx-backend-android.jar 和gdx.jar。
我们需要引用在先前的工程中的libgdx的类。在Java Build Path界面,找到Projects tab 点击Add... 然后添加my-first-triangle 到我们早先创建的工程剩余的最后任务是在我们早期写的游戏代码中修改我们的Activity 在Android 的入口点处。找到MyFirstTriangleAndroid
类用一以下内容替代
[java]
view plaincopyprint?
package com.test.myfirsttriangle; import android.os.Bundle; import com.badlogic.gdx.backends.android.AndroidApplication; publicclassMyFirstTriangleAndroidextendsAndroidApplication { @Override publicvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initialize(newMyFirstTriangle(),false); } }
package com.test.myfirsttriangle; import android.os.Bundle; import com.badlogic.gdx.backends.android.AndroidApplication; publicclassMyFirstTriangleAndroidextendsAndroidApplication { @Override publicvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initialize(newMyFirstTriangle(),false); } }
类似我们的桌面入口在MyFirstTirangleDesktop类中,所有代码创建一个MyFirstTriangle
管理渲染过程的实例。在my-first-triangle-android
上右键选择 Run As -> Android Application运行应用程序。它安装在设备或模拟器中。在模拟器载入完成时,应用将自动开始。
效果如下 :
What's Next(下一步呢)这是你的第一个三角形。学习更多 关于 libgdx 框架的基础, 请看MeshColorTexture 指南Updates(更新)
use nightly build (使用nightly编译)
added gdx-backend-jogl-natives.jar to libraries to hopefully remove link errors (添加gdx-backend-jogl-natives.jar到库中希望能移除link 错误)
MyFirstTriangle class is now importingcom.badlogic.gdx.Gdx (MyFirstTriangle 类现在由com.badlogic.gdx.Gdx导入)
updated the MyFirstTriangle_<date>.zip source files for this guide (更新MyFirstTriangle_<date>.zip源文件)
added screen shots (添加一个屏幕shoots)
原文地址:/article/4874075.html
相关文章推荐
- libgdx 学习笔记四 MyFirstTriangle
- 2011斯坦福大学iOS应用开发教程学习笔记(第二课)My First iOS App
- Cordova in action学习笔记二:My First Project
- docker-myfirstapp-学习笔记
- 2011斯坦福大学iOS应用开发教程学习笔记(第二课)My First iOS App
- EF Code First学习笔记:数据库创建(转)
- Libgdx学习笔记:纹理坐标的概念
- 学习笔记:iOS布局库—MyLayout库之浮动布局MyFloatLayout
- OOP Design (Head First Design Patterns) 学习笔记--02 Summary One
- Head First PHP&MySQL 学习笔记(二) —— 创建和填充数据库
- libgdx学习笔记1
- perl学习笔记---my和our
- EF Code First学习笔记 初识Code First C
- Head First HTML与CSS 学习笔记
- 【PMP】Head First PMP 学习笔记 第七章 成本管理
- HeadFirstPython 学习笔记(0)--list comprehension(列表推导)
- libgdx 学习笔记一 开发环境搭建
- libgdx 学习笔记一 开发环境搭建
- [转载]EF Code First 学习笔记:约定配置
- Head First Servlet & JSP 学习笔记(1)