Android 要撰寫OPENGL
於CLASS 中要 implements Renderer
implements Renderer之後Eclipse 要求須要
import android.opengl.GLSurfaceView.Renderer;
然後必須建立三個事件,通常Eclipse會幫忙完成這件事情,
或是直接Copy 如下程式碼貼上使用
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.opengl.GLSurfaceView.Renderer;
public class OpenglRendererClass implements Renderer{
@Override
public void onDrawFrame(GL10 arg0) {
// TODO Auto-generated method stub
}
@Override
public void onSurfaceChanged(GL10 arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onSurfaceCreated(GL10 arg0, EGLConfig arg1) {
// TODO Auto-generated method stub
}
}
這樣就建立起了Android 使用 Open gl 的基本架構
onDrawFrame 這個方法會一直被呼叫,呼叫的速度我猜測大概是每畫完一次畫面,就立刻再度被呼叫,所以他可以看成更新畫面的迴圈。
所有畫圖的指令都在寫在這個方法裡面。
onSurfaceChanged這個我解釋成,當畫面大小變動的時候,例如第一次執行,畫面大小調整成全螢幕,當畫面大小改變的時候須要改變OPENGL畫面設定參數
onSurfaceCreatedy字面上的意義比較簡單,當OPENGL被建立的時候,這個方法裡拿來做一些OPENGL初始化設定的動作。
有了這個基本的CLASS之後,我們怎麼讓ACTIVE 顯示我們的OPENG呢
import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.opengl.GLSurfaceView.Renderer;
import android.os.Bundle;
public class Opengl1 extends Activity {
/** Called when the activity is first created. */
Renderer render = new OpenglRendererClass();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GLSurfaceView glView = new GLSurfaceView(this);
glView.setRenderer(render);
setContentView(glView);
}
}
什麼都沒有 黑黑的一片。 但是沒有出錯就是好的開始。
沒有留言:
張貼留言