(Android) Renderer Example
来源:互联网 发布:耳屎 知乎 编辑:程序博客网 时间:2024/06/05 08:47
package com.example.opengltest;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.opengl.GLSurfaceView;
import android.opengl.GLSurfaceView.Renderer;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
public class OpenGLActivity extends Activity implements Renderer {
private GLSurfaceView glsurfaceview;
private static final String TAG = "TEST OPENGL";
private static final int Coordinates_In_A_Vertex = 2;
private static final int Vertices_In_A_Triangle = 3;
private static final int Bits_In_A_Byte = 8;
private static final int Bits_In_A_Float = Float.SIZE;
private static final int Bytes_In_A_Float = Bits_In_A_Float
/ Bits_In_A_Byte;
private FloatBuffer vertices;
private int width;
private int height;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
glsurfaceview = new GLSurfaceView(this);
glsurfaceview.setRenderer(this);
setContentView(glsurfaceview);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_open_gl, menu);
return true;
}
@Override
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
gl.glColor4f(0.64313725490196f, 0.77647058823529f, 0.22352941176471f, 1);
gl.glVertexPointer(2, GL10.GL_FLOAT, 0, vertices);
gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3);
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
}
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
Log.d(TAG, "Surface Created!");
width = glsurfaceview.getWidth();
height = glsurfaceview.getHeight();
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrthof(0, 1, 0, 1, 1, -1);
gl.glClearColor(1, 1, 1, 1);
ByteBuffer byteBuffer = ByteBuffer
.allocateDirect(Coordinates_In_A_Vertex
* Vertices_In_A_Triangle * Bytes_In_A_Float);
byteBuffer.order(ByteOrder.nativeOrder());
vertices = byteBuffer.asFloatBuffer();
vertices.put(new float[] { 0.0f, 0.0f, 0.5f, 1.0f, 1.0f, 0.0f });
vertices.flip();
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
}
}
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.opengl.GLSurfaceView;
import android.opengl.GLSurfaceView.Renderer;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
public class OpenGLActivity extends Activity implements Renderer {
private GLSurfaceView glsurfaceview;
private static final String TAG = "TEST OPENGL";
private static final int Coordinates_In_A_Vertex = 2;
private static final int Vertices_In_A_Triangle = 3;
private static final int Bits_In_A_Byte = 8;
private static final int Bits_In_A_Float = Float.SIZE;
private static final int Bytes_In_A_Float = Bits_In_A_Float
/ Bits_In_A_Byte;
private FloatBuffer vertices;
private int width;
private int height;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
glsurfaceview = new GLSurfaceView(this);
glsurfaceview.setRenderer(this);
setContentView(glsurfaceview);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_open_gl, menu);
return true;
}
@Override
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
gl.glColor4f(0.64313725490196f, 0.77647058823529f, 0.22352941176471f, 1);
gl.glVertexPointer(2, GL10.GL_FLOAT, 0, vertices);
gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3);
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
}
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
Log.d(TAG, "Surface Created!");
width = glsurfaceview.getWidth();
height = glsurfaceview.getHeight();
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrthof(0, 1, 0, 1, 1, -1);
gl.glClearColor(1, 1, 1, 1);
ByteBuffer byteBuffer = ByteBuffer
.allocateDirect(Coordinates_In_A_Vertex
* Vertices_In_A_Triangle * Bytes_In_A_Float);
byteBuffer.order(ByteOrder.nativeOrder());
vertices = byteBuffer.asFloatBuffer();
vertices.put(new float[] { 0.0f, 0.0f, 0.5f, 1.0f, 1.0f, 0.0f });
vertices.flip();
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
}
}
- (Android) Renderer Example
- Android GLSurfaceView.Renderer
- Android GLSurfaceView.Renderer
- android glsurfaceview renderer
- Android GLSurfaceView.Renderer
- renderer
- renderer
- android.opengl.GLSurfaceView.Renderer概述
- Android HorizontalScrollview Example
- Android Image Rotate Example
- Android Parcelable Example
- Android Button example
- Android EditText example
- Android EditText password example
- Android CheckBox example
- Android RadioButton example
- Android ToggleButton example
- Android RatingBar example
- Android 自定义progressDialog实现
- MySQL innodb 事务的实现
- myeclipse debug快捷键
- struts2 result type
- 临界区,互斥量,信号量,事件的区别
- (Android) Renderer Example
- Java 多线程编程之八:多线程的调度
- Hibernate映射问题
- ruby on rails 新建
- 在thinkpad sl400上U盘安装centos6.3的过程
- Linux rsync 同步由手动到自动
- Cannot unwrap to requested type [javax.sql.DataSource]
- 将LMbench移植到Android上
- Linux(CentOS6.3)三种安装方法(U盘,硬盘,光盘)