Android 3D游戏基础介绍

1649 篇文章 11 订阅
1623 篇文章 22 订阅
首先开始介绍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也是这个名字。我们的工程应该大概是这个样子的:

java代码:
  1. package eoe.droidnova.android.games.vortex;

  2. import android.app.Activity;
  3. import android.os.Bundle;

  4. public class Vortex extends Activity {
  5. private static final String LOG_TAG = Vortex.class.getSimpleName();
  6. private VortexView _vortexView;

  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. _vortexView = new VortexView(this);
  11. setContentView(_vortexView);
  12. }
  13. }
复制代码

        我们已经添加了View。让我们看一下VortexView类。

java代码:
  1. package eoe.droidnova.android.games.vortex;

  2. import android.content.Context;
  3. import android.opengl.GLSurfaceView;

  4. public class VortexView extends GLSurfaceView {
  5. private static final String LOG_TAG = VortexView.class.getSimpleName();
  6. private VortexRenderer _renderer;

  7. public VortexView(Context context) {
  8. super(context);
  9. _renderer = new VortexRenderer();
  10. setRenderer(_renderer);
  11. }
  12. }
复制代码

       我们继承了GLSurfaceView是因为它会帮助我们画3D图像。接下来看VortexRenderer类。一个Renderer包含画一帧所必需的所有东西。 引用自这儿references 。Renderer负责OpenGL call来render一个帧。

       来看一下这个类:

java代码:
  1. package eoe.droidnova.android.games.vortex;

  2. import javax.microedition.khronos.egl.EGLConfig;
  3. import javax.microedition.khronos.opengles.GL10;

  4. import android.opengl.GLSurfaceView;

  5. public class VortexRenderer implements GLSurfaceView.Renderer {
  6. private static final String LOG_TAG = VortexRenderer.class.getSimpleName();

  7. private float _red = 0.9f;
  8. private float _green = 0.2f;
  9. private float _blue = 0.2f;

  10. @Override
  11. public void onSurfaceCreated(GL10 gl, EGLConfig config) {
  12. }

  13. @Override
  14. public void onSurfaceChanged(GL10 gl, int w, int h) {
  15. gl.glViewport(0, 0, w, h);
  16. }

  17. @Override
  18. public void onDrawFrame(GL10 gl) {
  19. // define the color we want to be displayed as the "clipping wall"
  20. gl.glClearColor(_red, _green, _blue, 1.0f);
  21. // clear the color buffer to show the ClearColor we called above...
  22. gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
  23. }
  24. }
复制代码

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值