(Android)Pengenalan Open GLES v1.0

OpenGL_220x125

Flow
Android supports OpenGL ES defined in javax.microedition.khronos.opengles. The API is available at http://download.oracle.com/javame/config/cldc/opt-pkgs/api/jb/jsr239/index.html. The mother interface is GL, with its sub-interfaces GL10, GL10Ext, GL11, GL11Ext, GL11ExtensionPack (OpenGL ES 1.0, OpenGL ES 1.1, and Khronos-defined core extensions).

Dari Beberapa referensi yang saya ambil, bahwa android sangat mensupport GL dari versi 1.0 sampai versi terbaru saat ini 2.0, untuk beberapa smartphone yang akan menggunakan openGL sebagai graphic device yang harus di ketahui adalah diatas 8 yang pastinya 2.2, tapi tidak semua smartphone android di pasang agar support GL, tetapi dalam beberapa penelitian untuk versi 1.0 smartphone dari 100%, 80% sudah menggunakan openGL, tetapi untuk versi 2.0 di ketahui bahwa, smartphone yang akan menggunakan openGL 2.0 harus sudah menggunakan GPU ARM 7. yang lebih sederhananya sudah sudah memiliki graphic sendiri seperti Snapdragon. jadi ada versi 4.0 yang tidak memiliki GPU ARM 7 sehingga smartphon itu tidak di support OpenGL ini. sehingga pada saat mencoba sebuah Game yang menggunakan teknologi OpenGL tidak bisa di gunakan.

Banyak Game Engine yang mengunakan openGL pada umumnya, karena GL ini merupakan basic programming yang digunakan untuk membuat sebuah gambar bentuk dengan 2D atau 3D, contoh game engine yang sering digunakan para developer game android yaitu andEngine.

GLSurfaceView

For 3D graphics programming, you need to program you own custom view, instead using XML-layout. Fortunately, a 3D OpenGL ES view called GLSurfaceView is provided, which greatly simplifies our tasks.
Read “Introducing GLSurfaceView” at http://developer.android.com/resources/articles/glsurfaceview.html.

(Example) Setting OpenGLES menggunakan GLSurfaceView

Class OpenGL_1

 package com.example.opengl_1;

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

public class OpenGL_1 extends Activity {
private GLSurfaceView glView; // GLsurfaceVIew View yang akan di tampilkan untuk gl
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		glView = new GLSurfaceView(this);// konstruktor gl ke main method
		glView.setRenderer(new MyGlRender(this));
		this.setContentView(glView);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_open_gl_1, menu);
		return true;
	}
	
	protected void onPause(){
		super.onPause();
		glView.onPause();
	}
	protected void onResume(){
		super.onResume();
		glView.onResume();
}
}

Class MyGlRender

 package com.example.opengl_1;

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

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

public class MyGlRender implements Renderer {
	Context context;
	
	public MyGlRender(Context context){
		this.context = context;
	}
	@Override
	public void onDrawFrame(GL10 gl) {
		// TODO Auto-generated method stub
	gl.glClear(GL10.GL_COLOR_BUFFER_BIT|GL10.GL_DEPTH_BUFFER_BIT);
	}

	@Override
	public void onSurfaceChanged(GL10 gl, int width, int height) {
		// TODO Auto-generated method stub
		if(height==0)height=1;
			float aspect = (float)width/height;
			gl.glViewport(0, 0, width, height);
			gl.glMatrixMode(GL10.GL_PROJECTION);
			gl.glLoadIdentity();
			
			GLU.gluPerspective(gl, 45, aspect, 0.1f, 100.f);
			
			gl.glMatrixMode(GL10.GL_MODELVIEW);
			gl.glLoadIdentity();
	}

	@Override
	public void onSurfaceCreated(GL10 gl, EGLConfig config) {
		// TODO Auto-generated method stub
		gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
		gl.glClearDepthf(1.0f);
		gl.glEnable(GL10.GL_DEPTH_TEST);
		gl.glDepthFunc(GL10.GL_LEQUAL);
		gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
		gl.glShadeModel(GL10.GL_SMOOTH);
		gl.glDisable(GL10.GL_DITHER);
	}

}

onSurfaceCreated(GL10 gl, EGLConfig config) = Digunakan untuk melakukan tugas-tugas inisialisasi seperti pengaturan yang jelas-nilai warna dan kedalaman, memungkinkan kedalaman-test, dll

onSurfaceChanged(GL10 gl, int width, int height) = Disebut ketika permukaan pertama kali ditampilkan dan setelah perubahan ukuran window. Hal ini digunakan untuk mengatur tampilan pelabuhan dan mode proyeksi.
Dalam kami OpenGL renderer, kita mengatur Android pemandangan pelabuhan (area display) untuk menutupi seluruh layar dari (0,0) ke (lebar-1, tinggi-1):
gl.glViewport(0, 0, width, height);

onDrawFrame(GL10 gl) = Dipanggil untuk menggambar frame. Anda OpenGL kode render sini.
Dalam kami OpenGL renderer, Kami menghapus warna dan kedalaman buffer (menggunakan jelas-nilai diatur melalui glClear * sebelumnya).

Link :
http://www.opengl.org/
http://en.wikipedia.org/wiki/OpenGL
http://www3.ntu.edu.sg/home/ehchua/programming/android/Android_3D.html
http://developer.android.com/guide/topics/graphics/opengl.html#manifest

Advertisements

Published by

jarcode

hello I am jarcode

2 thoughts on “(Android)Pengenalan Open GLES v1.0”

    1. untuk membuat sebuah objek 3d atau 2d, pendukung sebuah grafis dan picture, biasanya digunakan untuk grafik struktur game, tidak semua device android di pasaran mendukung ini.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s