▼Androidメモ▼
三角形の表示


OpenGL ES 1.0で三角形を表示するプログラムを作成する。
HelloGL10_1.png

ソースコード
GL10PrimitiveEx1.java
package net.npaka.gl10primitiveex1;
import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.os.Bundle;

//三角形の表示
public class GL10PrimitiveEx1 extends Activity {
private GLSurfaceView glView;

//アクティビティ生成時に呼ばれる
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);

//GLサーフェイスビューの生成
glView=new GLSurfaceView(this);
glView.setRenderer(new GLRenderer());
setContentView(glView);
}

//アクティビティレジューム時に呼ばれる
@Override
public void onResume() {
super.onResume();
glView.onResume();
}

//アクティビティポーズ時に呼ばれる
@Override
public void onPause() {
super.onPause();
glView.onPause();
}
}

GLRenderer.java
package net.npaka.gl10primitiveex1;
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;

//レンダラー
public class GLRenderer implements
GLSurfaceView.Renderer {
private FloatBuffer vertexBuffer;//頂点バッファ

//サーフェイス生成時に呼ばれる
@Override
public void onSurfaceCreated(GL10 gl10,EGLConfig eglConfig) {
//頂点配列の有効化
gl10.glEnableClientState(GL10.GL_VERTEX_ARRAY);

//頂点バッファの生成
float[] vertexs={
0.0f,1.0f,0.0f,//頂点0
0.0f,0.0f,0.0f,//頂点1
1.0f,1.0f,0.0f,//頂点2
};
vertexBuffer=makeFloatBuffer(vertexs);
}

//画面サイズ変更時に呼ばれる
@Override
public void onSurfaceChanged(GL10 gl10,int w,int h) {
//画面の表示領域の指定
gl10.glViewport(0,0,w,h);
}

//毎フレーム描画時に呼ばれる
@Override
public void onDrawFrame(GL10 gl10) {
//画面のクリア
gl10.glClearColor(1.0f,1.0f,1.0f,1.0f);//クリア色の指定
gl10.glClear(GL10.GL_COLOR_BUFFER_BIT);//画面のクリア

//色の指定
gl10.glColor4f(1.0f,0.0f,0.0f,1.0f);

//頂点バッファの指定
gl10.glVertexPointer(3,GL10.GL_FLOAT,0,vertexBuffer);

//三角形の描画
gl10.glDrawArrays(GL10.GL_TRIANGLES,0,3);
}

//float配列をFloatBufferに変換
private FloatBuffer makeFloatBuffer(float[] array) {
FloatBuffer fb=ByteBuffer.allocateDirect(array.length*4).order(
ByteOrder.nativeOrder()).asFloatBuffer();
fb.put(array).position(0);
return fb;
}
}

OpenGLのデバッグ出力を行うには以下のメソッドを指定。
glView.setDebugFlags(GLSurfaceView.DEBUG_LOG_GL_CALLS|
GLSurfaceView.DEBUG_CHECK_GL_ERROR);


−戻る−