- The added line is THIS COLOR.
- The deleted line is THIS COLOR.
[[戻る>Android]]
#freeze
''[[MobileApp>Mobile Application Guide]]'' > ''[[Android>Introduction to Android]]'' > ''Open GL''
~
工事中
~
*Open GL [#sdd36a90]
GLをスーパークラスとして、OpenGL ES 1.0を実装したGL10、~
GL10を継承したGL11などが含まれている~
Android には、OpenGL ES 1.1のための主要なAPIが含まれいる
As a superclass GL, GL10 implements the OpenGL ES 1.0~
In the Android, contains the primary API for OpenGL ES 1.1 .
Android NDKがOpenGLに対応~
Android NDK r3 以降でOpen GLに直接アクセスできるようになっている。
Android NDK corresponds to OpenGL. ~
Android NDK r3 later on, can access open gl directly.
~
~
*描画の高速化 [#vb8aa8e7]
//*描画の高速化 [#vb8aa8e7]
//
// 「2D描画で高速表示を行うにはOpenGL ESを用いるのがよく~
// 中でも『Draw Texture Extension』というOpenGLの拡張を用いるのが最速
//
「2D描画で高速表示を行うにはOpenGL ESを用いるのがよく~
中でも『Draw Texture Extension』というOpenGLの拡張を用いるのが最速
*Step1:A OpenGL program painting the gray color to background [#rd338724]
***Screen [#v6c2ac74]
*ステップ1:背景を灰色で塗り潰すOpenGLプログラム [#rd338724]
***画面 [#v6c2ac74]
#ref(test02.jpg);
~
***サンプル プログラム [#ifb129b5]
***Sample Program [#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) {
//背景塗り潰し
//Fill the background
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) {
//背景塗り潰し色の指定
//Specifies the background fill color
gl.glClearColor(0.5f,0.5f,0.5f,1);
//カラーとテクスチャ座標の補間精度 高速
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,GL10.GL_FASTEST);
}
}
~
~
~
*ステップ2:四角形で塗り潰すOpenGLプログラム [#rd338724]
***画面 [#webdcf85]
*Step2:A OpenGL programs painting a square [#rd338724]
***Screen [#webdcf85]
#ref(test03.jpg);
~
***サンプル プログラム [#g0dee929]
***Sample Program [#g0dee929]
package com.chinsanSoft;
// 四角形を2Dで表示するプログラム
// A OpenGL programs painting a square
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[] {//頂点
float[] square=new float[] { // vertex
-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 ;//頂点バッファ
FloatBuffer squareBuff ; // buffer of vertex
public ChinTutorialOne(/*Context c*/) {
squareBuff=getFloatBuffer(square);//頂点バッファ
squareBuff=getFloatBuffer(square); // buffer of vertex
//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) {
//背景塗り潰し
// Background fill
gl.glClear(GL10.GL_COLOR_BUFFER_BIT|GL10.GL_DEPTH_BUFFER_BIT);
//モデルビュー行列の指定
// Specifying the modelview matrix
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glTranslatef(0,0,-1);//平行移動
gl.glTranslatef(0,0,-1); // Moving at parallel
//色の指定
// Specify the color
gl.glColor4f(1,0,0,0.5f);
//頂点配列の指定
// Specify the vertex array
gl.glVertexPointer(3,GL10.GL_FLOAT,0,squareBuff);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
//プリミティブの描画
// Drawing the primitives
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,0,4);
}
public void onSurfaceChanged(GL10 gl, int width, int height) {
}
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
//背景塗り潰し色の指定
// Specify background fill color
gl.glClearColor(0.5f,0.5f,0.5f,1);
//カラーとテクスチャ座標の補間精度-高速
// Color and texture coordinate interpolation accuracy - fast
//gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,GL10.GL_FASTEST);
//射影行列の指定
// Specifying the projection matrix
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
GLU.gluOrtho2D(gl,0.0f,1.2f,0.0f,1.0f);//平行投影
GLU.gluOrtho2D(gl,0.0f,1.2f,0.0f,1.0f);
}
~
~
~
*ステップ3:立方体を表示する OpenGLプログラム [#l5c1c965]
***画面 [#cdde034d]
*Step3:A OpenGL program that displays the cube [#l5c1c965]
***Screen [#cdde034d]
#ref(test04.jpg);
~
***サンプル プログラム [#vfbfb687]
***Sample Program [#vfbfb687]
~
~
Under construction
~
*モデリング [#beb82905]
ポリゴン表示とテクスチャ表示ができたら、次にやりたくなるのは自分でモデリングしたオブジェクトを表示させること
~
*Modeling [#beb82905]
ポリゴン表示とテクスチャ表示ができたら、次にやりたくなるのは自分でモデリングしたオブジェクトを表示させること~
http://ronor.blog81.fc2.com/blog-category-1.html
*参考 [#u1f0936f]
http://code.google.com/p/rokon/downloads/list
~
~
[[戻る>Android]]
''[[Back>Introduction to Android]]''