最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

最全的AndroidOpenGL开发文档

IT圈 admin 28浏览 0评论

2024年4月3日发(作者:骆寻绿)

Android 3D 游戏开发教程

(Open Graphics Library)

目前最全的Android OpenGL文档

这几篇Android 3D游戏开发的文章原文出自一位德国人Martin 在写的文章,

由lixinso翻译为中文。

拷贝于博客:/lixinso/archive/2010/01/30/

第一部分首先介绍OpenGL相关的术语,并引导你开始3D开发的第一步。

这个关于3D游戏的系列的叫做 Vortex .

这个教程主要focus在3D编程上,其他的东西比如菜单和程序生命周期虽然是代码的一部

分,但是在这里不会被提到。

首先开始介绍OpenGL的术语。

顶点Vertex

顶点是3D空间中的一个点,也是许多对象的基础元素。在OpenGL中你可以生命少至二维

坐标(X,Y),多至四维(X,Y,Z,W). w轴是可选的,默认的值是1.0. Z轴也是可选的,默认为

0. 在这个系列中,我们将要用到3个主要的坐标X,Y,Z,因为W一般都是被用来作为占

位符。vertex的复数是vertices(这对非英语母语的人来说比较重要,因为这容易产生歧义)。

所有的对象都是用vertices作为它们的点,因为点就是vertex。

三角形Triangle

三角形需要三个点才能创建。因此在OpenGL中,我们使用3个顶点来创建一个三角形。

多边形Polygon

多边形是至少有3个连接着的点组成的一个对象。三角形也是一个多边形。

图元Primitives

一个Primitive是一个三维的对象,使用三角形或者多边形创建。形象的说,一个有50000

个顶点的非常精细的模型是一个Primitive,同样一个只有500个顶点的低模也叫做一个

Primitive。

现在我们可以开始变成了。

创建一个工程交Vortex,activity也是这个名字。我们的工程应该大概是这个样子的:

package ;

import ty;

import ;

public class Vortex extends Activity {

private static final String LOG_TAG = pleName();

private VortexView _vortexView;

@Override

protected void onCreate(Bundle savedInstanceState) {

te(savedInstanceState);

_vortexView = new VortexView(this);

setContentView(_vortexView);

}

}

如上图所示,我们已经添加了View。让我们看一下VortexView类。

package ;

import t;

import aceView;

public class VortexView extends GLSurfaceView {

private static final String LOG_TAG = pleName();

private VortexRenderer _renderer;

public VortexView(Context context) {

super(context);

_renderer = new VortexRenderer();

setRenderer(_renderer);

}

}

如上所示,我们继承了GLSurfaceView是因为它会帮助我们画3D图像。接下来看

VortexRenderer类。一个Renderer包含画一帧所必需的所有东西。 引用自这儿references 。

Renderer负责OpenGL call来render一个帧。

来看一下这个类:

package ;

import fig;

import 10;

import aceView;

public class VortexRenderer implements er {

private static final String LOG_TAG = pleName();

private float _red = 0.9f;

private float _green = 0.2f;

private float _blue = 0.2f;

@Override

public void onSurfaceCreated(GL10 gl, EGLConfig config) {

// Do nothing special.

}

@Override

public void onSurfaceChanged(GL10 gl, int w, int h) {

port(0, 0, w, h);

2024年4月3日发(作者:骆寻绿)

Android 3D 游戏开发教程

(Open Graphics Library)

目前最全的Android OpenGL文档

这几篇Android 3D游戏开发的文章原文出自一位德国人Martin 在写的文章,

由lixinso翻译为中文。

拷贝于博客:/lixinso/archive/2010/01/30/

第一部分首先介绍OpenGL相关的术语,并引导你开始3D开发的第一步。

这个关于3D游戏的系列的叫做 Vortex .

这个教程主要focus在3D编程上,其他的东西比如菜单和程序生命周期虽然是代码的一部

分,但是在这里不会被提到。

首先开始介绍OpenGL的术语。

顶点Vertex

顶点是3D空间中的一个点,也是许多对象的基础元素。在OpenGL中你可以生命少至二维

坐标(X,Y),多至四维(X,Y,Z,W). w轴是可选的,默认的值是1.0. Z轴也是可选的,默认为

0. 在这个系列中,我们将要用到3个主要的坐标X,Y,Z,因为W一般都是被用来作为占

位符。vertex的复数是vertices(这对非英语母语的人来说比较重要,因为这容易产生歧义)。

所有的对象都是用vertices作为它们的点,因为点就是vertex。

三角形Triangle

三角形需要三个点才能创建。因此在OpenGL中,我们使用3个顶点来创建一个三角形。

多边形Polygon

多边形是至少有3个连接着的点组成的一个对象。三角形也是一个多边形。

图元Primitives

一个Primitive是一个三维的对象,使用三角形或者多边形创建。形象的说,一个有50000

个顶点的非常精细的模型是一个Primitive,同样一个只有500个顶点的低模也叫做一个

Primitive。

现在我们可以开始变成了。

创建一个工程交Vortex,activity也是这个名字。我们的工程应该大概是这个样子的:

package ;

import ty;

import ;

public class Vortex extends Activity {

private static final String LOG_TAG = pleName();

private VortexView _vortexView;

@Override

protected void onCreate(Bundle savedInstanceState) {

te(savedInstanceState);

_vortexView = new VortexView(this);

setContentView(_vortexView);

}

}

如上图所示,我们已经添加了View。让我们看一下VortexView类。

package ;

import t;

import aceView;

public class VortexView extends GLSurfaceView {

private static final String LOG_TAG = pleName();

private VortexRenderer _renderer;

public VortexView(Context context) {

super(context);

_renderer = new VortexRenderer();

setRenderer(_renderer);

}

}

如上所示,我们继承了GLSurfaceView是因为它会帮助我们画3D图像。接下来看

VortexRenderer类。一个Renderer包含画一帧所必需的所有东西。 引用自这儿references 。

Renderer负责OpenGL call来render一个帧。

来看一下这个类:

package ;

import fig;

import 10;

import aceView;

public class VortexRenderer implements er {

private static final String LOG_TAG = pleName();

private float _red = 0.9f;

private float _green = 0.2f;

private float _blue = 0.2f;

@Override

public void onSurfaceCreated(GL10 gl, EGLConfig config) {

// Do nothing special.

}

@Override

public void onSurfaceChanged(GL10 gl, int w, int h) {

port(0, 0, w, h);

发布评论

评论列表 (0)

  1. 暂无评论