- The added line is THIS COLOR.
- The deleted line is THIS COLOR.
[[戻る>Android]]
#freeze
''[[手机开发指南>手机开发指南]]'' > ''[[Android>Android]]'' > ''Open GL''
~
~
*Open GL [#sdd36a90]
GLをスーパークラスとして、OpenGL ES 1.0を実装したGL10、~
GL10を継承したGL11などが含まれていることがわかります。
つまり、Android 1.0/1.1/1.5 SDKには、OpenGL ES 1.1のための主要なAPIが含まれているんだけど、~
それらは完全ではないので使わないで。。。~
といったこところでしょうか。
GLをスーパークラスとして、OpenGL ES 1.0を実装したGL10、~
GL10を継承したGL11などが含まれている~
Android には、OpenGL ES 1.1のための主要なAPIが含まれいる
Android NDKがOpenGLに対応~
Android NDK r3 以降でOpen GLに直接アクセスできるようになっている。
Android NDKがOpenGLに対応~
Android NDK r3 以降でOpen GLに直接アクセスできるようになっている。
//*描画の高速化 [#vb8aa8e7]
//
// 「2D描画で高速表示を行うにはOpenGL ESを用いるのがよく~
// 中でも『Draw Texture Extension』というOpenGLの拡張を用いるのが最速
//
*描画の高速化 [#vb8aa8e7]
結果からいうと「2D描画で高速表示を行うにはOpenGL ESを用いるのがよく、その中でも『Draw Texture Extension』というOpenGLの拡張を用いるのが最速だ」と分かった。
*ステップ1:背景を灰色で塗り潰すOpenGLプログラム [#rd338724]
***画面 [#v6c2ac74]
#ref(test02.jpg);
~
***サンプル プログラム [#ifb129b5]
package com.chinsanSoft;
import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.opengl.GLSurfaceView;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
public class test02 extends Activity {
private GLSurfaceView mChinSurfaceView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mChinSurfaceView = new GLSurfaceView(this);
mChinSurfaceView.setRenderer(new ChinTutorial());
setContentView(mChinSurfaceView);
}
}
class ChinTutorial implements GLSurfaceView.Renderer {
public ChinTutorial( ) {
}
public void onDrawFrame(GL10 gl){
//protected void drawFrame(GL10 gl) {
//背景塗り潰し
gl.glClear(GL10.GL_COLOR_BUFFER_BIT|GL10.GL_DEPTH_BUFFER_BIT);
}
public void onSurfaceChanged(GL10 gl, int width, int height) {
}
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
//背景塗り潰し色の指定
gl.glClearColor(0.5f,0.5f,0.5f,1);
//カラーとテクスチャ座標の補間精度 高速
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,GL10.GL_FASTEST);
}
}
~
~
~
*ステップ2:四角形で塗り潰すOpenGLプログラム [#rd338724]
***画面 [#webdcf85]
#ref(test03.jpg);
~
***サンプル プログラム [#g0dee929]
package com.chinsanSoft;
// 四角形を2Dで表示するプログラム
import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.opengl.*;
import java.nio.*;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
public class test03_3d extends Activity {
private GLSurfaceView mChinSurfaceView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mChinSurfaceView = new GLSurfaceView(this);
mChinSurfaceView.setRenderer(new ChinTutorialOne());
setContentView(mChinSurfaceView);
}
}
class ChinTutorialOne implements GLSurfaceView.Renderer {
float[] square=new float[] {//頂点
-0.25f,-0.25f,0.0f,
0.25f,-0.25f,0.0f,
-0.25f, 0.25f,0.0f,
0.25f, 0.25f,0.0f};
FloatBuffer squareBuff ;//頂点バッファ
public ChinTutorialOne(/*Context c*/) {
squareBuff=getFloatBuffer(square);//頂点バッファ
//super(c);
}
private FloatBuffer getFloatBuffer(float [] array){
FloatBuffer floatBuffer;
ByteBuffer bb = ByteBuffer.allocateDirect(array.length * 4);
bb.order(ByteOrder.nativeOrder());
floatBuffer = bb.asFloatBuffer();
floatBuffer.put(array);
floatBuffer.position(0);
return floatBuffer;
}
public void onDrawFrame(GL10 gl){
//protected void drawFrame(GL10 gl) {
//背景塗り潰し
gl.glClear(GL10.GL_COLOR_BUFFER_BIT|GL10.GL_DEPTH_BUFFER_BIT);
//モデルビュー行列の指定
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glTranslatef(0,0,-1);//平行移動
//色の指定
gl.glColor4f(1,0,0,0.5f);
//頂点配列の指定
gl.glVertexPointer(3,GL10.GL_FLOAT,0,squareBuff);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
//プリミティブの描画
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,0,4);
}
public void onSurfaceChanged(GL10 gl, int width, int height) {
}
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
//背景塗り潰し色の指定
gl.glClearColor(0.5f,0.5f,0.5f,1);
//カラーとテクスチャ座標の補間精度-高速
//gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,GL10.GL_FASTEST);
//射影行列の指定
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
GLU.gluOrtho2D(gl,0.0f,1.2f,0.0f,1.0f);//平行投影
}
~
~
~
*ステップ3:立方体を表示する OpenGLプログラム [#l5c1c965]
***画面 [#cdde034d]
#ref(test04.jpg);
~
***サンプル プログラム [#vfbfb687]
~
~
工事中
~
~
*モデリング [#beb82905]
ポリゴン表示とテクスチャ表示ができたら、次にやりたくなるのは自分でモデリングしたオブジェクトを表示させること~
http://ronor.blog81.fc2.com/blog-category-1.html
ポリゴン表示とテクスチャ表示ができたら、次にやりたくなるのは自分でモデリングしたオブジェクトを表示させること
*参考 [#u1f0936f]
http://code.google.com/p/rokon/downloads/list
~
~
''[[戻る>Android]]''