云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Android 3D绘图Renderer源码

Android 3D绘图Renderer源码

  • 62 次阅读
  • 3 次下载
  • 2025/5/4 14:31:53

MainActivity.java:源码

package com.example.glrender;

import android.opengl.GLSurfaceView; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.Window;

public class MainActivity extends Activity { GLRender render=new GLRender(); @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

this.requestWindowFeature(Window.FEATURE_NO_TITLE); GLSurfaceView GLSur=new GLSurfaceView(this); GLSur.setRenderer(render); setContentView(GLSur); }

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu); return true; } }

GLRender.java:源码

package com.example.glrender;

import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; import java.nio.IntBuffer; import java.nio.ShortBuffer;

import javax.microedition.khronos.egl.EGLConfig;

import javax.microedition.khronos.opengles.GL; import javax.microedition.khronos.opengles.GL10;

import android.opengl.GLSurfaceView.Renderer; import android.opengl.GLU;

public class GLRender implements Renderer { FloatBuffer floatpointer; ShortBuffer shortindex; IntBuffer myColorBuffer; short[] coords1; float angle =0;

public GLRender() { super();

float[] coords = { 0f,0.5f,0f,

-0.5f,0f,-0.5f, 0.5f,0f,-0.5f,

-0.5f,0f,0.5f, 0.5f,0f,0.5f,

-0.5f,0f,-0.5f, -0.5f,0f,0.5f,

0.5f,0f,-0.5f, 0.5f,0f,0.5f,

0.5f,-0.5f,-0.5f, -0.5f,-0.5f,-0.5f,

0.5f,-0.5f,0.5f, -0.5f,-0.5f,0.5f,

-0.5f,-0.5f,-0.5f, -0.5f,-0.5f,0.5f,

0.5f,-0.5f,-0.5f, 0.5f,-0.5f,0.5f,

0.4f,0.5f,-0.5f, 0.5f,0.5f,-0.5f,

0.4f,0f,-0.5f,

};

// TODO Auto-generated constructor stub

ByteBuffer vbb=ByteBuffer.allocateDirect(coords.length*4); vbb.order(ByteOrder.nativeOrder()); floatpointer=vbb.asFloatBuffer();

for (int i = 0; i < (coords.length)/3; i++) { for(int j = 0; j < 3; j++) {

floatpointer.put(coords[i*3+j]); } }

floatpointer.position(0);

coords1=new short[]{0,1,2, 0,3,4, 0,5,6, 0,7,8, 1,2,9, 1,9,10, 3,4,11, 3,11,12, 5,6,13, 6,13,14, 7,8,15, 8,15,16, 10,11,12, 11,12,13, 2,17,18, 2,17,19};

ByteBuffer bbf=ByteBuffer.allocateDirect(coords1.length*2); bbf.order(ByteOrder.nativeOrder()); shortindex=bbf.asShortBuffer();

for(int i=0;i

shortindex.position(0);

int one=0x10000;

int[] colors=new int[]{ one,0,0,0, one,0,0,0, one,0,0,0,

0,one,0,0, 0,one,0,0, 0,one,0,0,

0,0,one,0, 0,0,one,0, 0,0,one,0,

one,0,0,0, one,0,0,0, one,0,0,0,

0,one,0,0, 0,one,0,0, 0,one,0,0,

0,0,one,0, };

ByteBuffer cbb=ByteBuffer.allocateDirect(colors.length*4); cbb.order(ByteOrder.nativeOrder()); myColorBuffer=cbb.asIntBuffer(); myColorBuffer.put(colors); myColorBuffer.position(0); }

@Override

public void onDrawFrame(GL10 gl) { // TODO Auto-generated method stub

gl.glClear(GL10.GL_COLOR_BUFFER_BIT|GL10.GL_DEPTH_BUFFER_BIT);

gl.glLoadIdentity();

gl.glMatrixMode(GL10.GL_MODELVIEW);

GLU.gluLookAt(gl, 0, 0, 5, 0, 0, 0, 0, 1f, 0); gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); // gl.glColor4f(1.0f, 0, 0, 0.5f);

gl.glVertexPointer(3,GL10.GL_FLOAT, 0,floatpointer); gl.glEnableClientState(GL10.GL_COLOR_ARRAY);

gl.glColorPointer(4, GL10.GL_FIXED, 0, myColorBuffer); angle=angle+1.0f;

gl.glRotatef(angle, 0.0f,1.0f,0.0f);

gl.glDrawElements(GL10.GL_TRIANGLES,coords1.length,GL10.GL_UNSIGNED_SHORT,shortindex);

gl.glDisableClientState(GL10.GL_COLOR_ARRAY); }

@Override

public void onSurfaceChanged(GL10 gl, int width, int height) {

// TODO Auto-generated method stub gl.glViewport(0, 0, width, height); float ratio = (float) width / height; gl.glMatrixMode(GL10.GL_PROJECTION); gl.glLoadIdentity();

gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10);

}

@Override

public void onSurfaceCreated(GL10 gl, EGLConfig config) { // TODO Auto-generated method stub

gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,GL10.GL_FASTEST);

gl.glClearColor(0, 0, 0,0);

gl.glShadeModel(GL10.GL_SMOOTH); gl.glEnable(GL10.GL_DEPTH_TEST); } }

搜索更多关于: Android 3D绘图Renderer源码 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

MainActivity.java:源码 package com.example.glrender; import android.opengl.GLSurfaceView; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.Window; public class MainActivity extends Activity { GLRender render=new GLRender(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedIns

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com