SlideShare une entreprise Scribd logo
1  sur  46
Télécharger pour lire hors ligne
Android
OpenGL/ES ハンズオン



              Smart.LABO
         丹所 育男(tan1234jp)



                            1
自己紹介
• 丹所 育男(たんしょ いくお)
• 春日井市出身・自宅は名古屋市・実家は可児市
• 講師→制御系→ネットワーク系→業務系→制御系→
    システム保守→制御系→業務系→携帯アプリ
•   2011年6月に「SMART.LABO」として独立
•   Androidアプリの開発がメイン(iPhone,Coronaも)


• Twitter : @tan1234jp

                                        2
OpenGL/ESとは?
• OpenGL Embedded Subsetの略
• 3Dコンピュータグラフィックス用APIのサブ
    セットで、3D空間に浮かんだ頂点を結んだ図
    形を描画することに特化している。
•   主に携帯電話などの組み込みシステムや、
    ゲーム専用機で使われている。
    →iOS, Android, Symbian OS,
    →PlayStation3、Nintendo 3DS


                                 3
描画APIのサポート
      Canvas      OpenGL/ES
•   点           • 点
•   直線          • 直線
•   三角形         • 三角形
•   四角形
•   五角形以上の多角形
•   円
•   文字


                              4
AndroidのView
• Androidには、3種類のViewがある。
 →View,SurfaceView,GLSurfaceView


• OpenGLでは、GLSurfaceViewを継承したも
 のを使う。




                                   5
GLSurfaceView
• OpenGLの描画に特化したView
• 描画タイミングは端末依存(プログラマが決め
    ることもできる)
•   別スレッドで動作するため、直接UIに対して
    変更をかけることは不可




                            6
OpenGL/ESの初期化
• プロジェクトの作成


                OpenGL_Sample




• バージョンの決定(Ver1.5以降であればOK)
                                7
OpenGL/ESの初期化
• パッケージ名の設定




      com.example.opengl_sample




                                  8
OpenGL/ESの初期化
package com.example.opengl_sample;

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

public class OpenGL_SampleActivity extends Activity {
	
	
	
    private GLSurfaceView glSurfaceView;
                                                  エラーとなるが無視
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        glSurfaceView = new GLSurfaceView(this);
        glSurfaceView.setRenderer(new GLRenderSample());
        setContentView(glSurfaceView);
    }



                                                              9
OpenGL/ESの初期化
	   @Override
	   protected void onPause() {
	   	   super.onPause();
	   	   glSurfaceView.onPause();
	   }

	   @Override
	   protected void onResume() {
	   	   super.onResume();
	   	   glSurfaceView.onResume();
	   }

	   //ここに後でコードを追加します!
}




                                    10
OpenGL/ESの初期化
        GLRenderSampleの作成
        onResume()の後に以下のコードを追加。
	   class GLRenderSample implements GLSurfaceView.Renderer {

	   	   public void onDrawFrame(GL10 gl) {
	   	   	 gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
	   	   	 gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
	   	   }

	   	   public void onSurfaceChanged(GL10 gl, int width, int height) {
	   	   	 gl.glViewport(0, 0, width, height);
	   	   }

	   	   public void onSurfaceCreated(GL10 gl, EGLConfig config) {
	   	   }
	




                                                                         11
OpenGL/ESの初期化
• 実行!
 真っ白な画面になりました
 か?




                12
コード解説
   • GLRenderSampleの各メソッド
 メソッド名                                    呼ばれるタイミング
onSurfaceCreated(GL10 gl, EGLConfig eglconfig) GLSurfaceView用のメモリ確保が終了

onSurfaceChanged(GL10 gl, int width, int height) 画面サイズが変更された時

onDrawFrame(GL10 gl)                     再描画が必要な時




                                                                       13
コード解説
• 各メソッドの呼び出され方
     onSurfaceCreated

     onSurfaceChanged

       onDrawFrame
              呼び出されるタイミングは
                  端末依存
                             14
コード解説
   • 描画範囲の設定
 メソッド名                                    役割

                                                 OpenGL/ESの描画範囲を指定する。
glViewport(int x, int y, int width, int height); 「どの座標(x, y)から、幅width、高さheightま
                                                 で」を描画範囲とする。




                                                                                  15
コード解説
    • 描画クリア
  メソッド名                             役割
                                              画面全体を塗りつぶす色を決定する。RGBA(A
glClearColor(float r, float g, float b, float a); はアルファ値)を指定する。
                                              指定できる範囲は0∼1の実数値。
                                   塗りつぶしを実行する。引数に
glClear(int mask);
                                   GL_COLOR_BUFFER_BITを指定する。


    • glClearColorの引数の値を適当に変更して、
         いろいろな色で塗りつぶされることを確認し
         てみてください。

                                                                        16
OpenGL/ESの座標系
• 座標系の違い
                     (480,0)
  原点(0,0)                               (0,1)




    (Xperiaの場合)                (-1,0)                      (1,0)
                                                 原点(0,0)


       View
       SurfaceView                               OpenGL

  (0,854)                               (0,-1)


                                                                   17
三角形を描画する
• 例えば、(0,0),(1,0),(1,1)の3点を結ぶ三角形
    を描画する場合・・・

        HT-03A             Xperia




480px              854px




        320px              480px

                                    18
三角形を描画する
• onDrawFrameを修正
	   public void onDrawFrame(GL10 gl) {
	   	   gl.glClearColor(0.0f, 1.0f, 1.0f, 1.0f); //第1引数に変更あり!
	   	   gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
	   	   	
	   	   float positions[] = {
	   	   	   	    1.0f, 0.0f, 0.0f,	/右(1,0)
                                  /
	   	   	   	   0.0f, 0.0f, 0.0f,	/原点(0,0)
                                 /
	   	   	   	   1.0f, 1.0f, 0.0f,	/右上(1,1)
                                 /
	   	   };
	   	   	
	   	   ByteBuffer bb = ByteBuffer.allocateDirect(positions.length * 4);
	   	   bb.order(ByteOrder.nativeOrder());
	   	   FloatBuffer fb = bb.asFloatBuffer();
	   	   fb.put(positions);




                                                                           19
三角形を描画する
• onDrawFrameを修正(続き)
	

	   	   fb.position(0);
	   	   	
	   	   gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
	   	   gl.glVertexPointer(3, GL10.GL_FLOAT, 0, fb);
	   	   gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3);
	   }




                                                        20
三角形を描画する
• 実行!
 →水色の背景に白い三角形
 が表示されましたか?
 →解像度の違う端末でも同
 じ画面が表示されました
 か?




                21
コード解説
• 座標の設定
float positions[] = {
	   	    	   	   1.0f, 0.0f, 0.0f,	/右(1,0)
                                  /
	   	   	    	   0.0f, 0.0f, 0.0f,	/原点(0,0)
                                  /
	   	   	    	   1.0f, 1.0f, 0.0f,	/右上(1,1)
                                  /
	   	   };




• 浮動小数の1次元配列で表す
• 配列に格納する順番は「頂点1(x,y,z)」「頂点
    2(x,y,z)」「頂点3(x,y,z)」・・・とする。


                                              22
コード解説
• 座標配列をOpenGL/ESに転送
  ByteBuffer bb = ByteBuffer.allocateDirect(positions.length * 4);
  bb.order(ByteOrder.nativeOrder());
  FloatBuffer fb = bb.asFloatBuffer();
  fb.put(positions);
  fb.position(0);


• 座標配列をOpenGL/ESで扱えるメモリ形式に
 変換

• AndroidでOpenGL/ESを扱う際の「おまじな
 い」。

                                                                     23
コード解説
• OpenGL/ESは、Android Runtimeではなく
  Libraries群(CPU依存)

• Javaの配列などのデータを、そのまま
  OpenGL/ESへ転送することはできない

• java.nio.* パッケージを使用して、OpenGL/
  ESから直接参照できるようなデータに変換す
  る必要がある。


                                   24
Androidアーキテクチャ




                 25
コード解説
   • GLSurfaceViewに描画する
 メソッド名                                   役割
                                                glVertexPointer()で転送するメモリ情報の種類
                                                を設定する。引数はいろいろあるが、座標情報
glEnableClientState(int array);
                                                を転送する場合は「GL_VERTEX_ARRAY」を
                                                指定する。
                                                位置情報を設定する。
                                                size : 位置情報の要素数。3次元の場合は3。
glVertexPointer(int size, int type, int stride,
                                                type : 位置情報の変数の型。
Buffer pointer);
                                                stride : 常時0。
                                                pointer : OpenGL/ESに転送可能な位置情報
                                                GLSurfaceViewに描画する。
                                                mode : 描画方法を指定する(後ほど説明)
glDrawArrays(int mode, int first, int count);
                                                first : 描画する位置情報の開始位置。
                                                count : 位置情報を使用する数。


                                                                                 26
(発展)四角形を描画する
• onDrawFrameを修正
	   public void onDrawFrame(GL10 gl) {
	   	   	    :
	   	   	    :
	   	   float positions[] = {
	   	   	   	    1.0f, 0.0f, 0.0f,	/右(1,0)
                                  /
	   	   	    	   0.0f, 0.0f, 0.0f,	/原点(0,0)
                                  /
	   	   	    	   1.0f, 1.0f, 0.0f,	/右上(1,1)
                                  /
	   	   	    	   0.0f, 0.0f, 0.0f,	/原点(0,0)
                                  /
	   	   	    	   0.0f, 1.0f, 0.0f,	/上(0,1)
                                  /
	   	   	    	   1.0f, 1.0f, 0.0f,	/右上(1,1)
                                  /
	   	   };




                                              27
(発展)四角形を描画する
• onDrawFrameを修正(続き)
	   	   	   :
	   	   	   :
	   	   gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
	   	   gl.glVertexPointer(3, GL10.GL_FLOAT, 0, fb);
	   	   gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3 * 2);
	   }




                                                        28
(発展)四角形を描画する
• 実行!
 →水色の背景の右上に、白
 い四角形が表示されました
 か?
 →解像度の違う端末でも同
 じ画面が表示されました
 か?



                29
(発展)四角形を描画する
• 三角形を組み合わせれば、どんな多角形でも
 作成可能




        +      =




                         30
(発展)四角形を描画する
• 重複している座標がある!
	   public void onDrawFrame(GL10 gl) {
	   	   	    :
	   	   	    :
	   	   float positions[] = {
	   	   	   	    1.0f, 0.0f, 0.0f,	/右(1,0)
                                  /
	   	   	    	   0.0f, 0.0f, 0.0f,	/原点(0,0)
                                  /
	   	   	    	   1.0f, 1.0f, 0.0f,	/右上(1,1)
                                  /
	   	   	    	   0.0f, 0.0f, 0.0f,	/原点(0,0)
                                  /
	   	   	    	   0.0f, 1.0f, 0.0f,	/上(0,1)
                                  /
	   	   	    	   1.0f, 1.0f, 0.0f,	/右上(1,1)
                                  /
	   	   };


    • 座標を使いまわししたい!
                                              31
(発展)四角形を描画する
• onDrawFrameを修正
	   public void onDrawFrame(GL10 gl) {
	   	   	    :
	   	   	    :
	   	       float positions[] = {
	   	       	   	    1.0f, 0.0f, 0.0f,	/右(1,0)
                                      /
	   	       	       	   0.0f, 0.0f, 0.0f,	/原点(0,0)
                                         /
	   	       	       	   1.0f, 1.0f, 0.0f,	/右上(1,1)
                                         /
	   	   	       //	 	   0.0f, 0.0f, 0.0f,//原点(0,0)
	   	   	       	   	   0.0f, 1.0f, 0.0f,//上(0,1)
	   	   	       //	 	   1.0f, 1.0f, 0.0f,//右上(1,1)
	   	       };




                                                     32
(発展)四角形を描画する
• onDrawFrameを修正(続き)
    	   	   	   :
    	   	   	   :	 	
	       	   gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
    	   	   gl.glVertexPointer(3, GL10.GL_FLOAT, 0, fb);
	       	   gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4); //第1・3引数変更
    	   }




                                                                        33
(発展)四角形を描画する
• 実行!
 →先ほどと同じ画面になり
 ましたか?




                34
glDrawArraysの引数
• glDrawArrays()の第1引数で指定する値(定数)
  により、描画方法を変更することができる。
 引数                       説明
GL10.GL_POINTS           点
GL10.GL_LINES            直線
GL10.GL_LINE_STRIP       折れ線
GL10.GL_TRIANGLES        三角形
GL10.GL_TRIANGLE_STRIP   1辺を共有しながら帯状に三角形を描画する
GL10.GL_TRIANGLE_FAN     1点を共有しながら扇状に三角形を描画する




                                                35
glDrawArraysの引数
• 描画方法の違い
	   public void onDrawFrame(GL10 gl) {
	   	   	    :
	   	   	    :
	   	   float positions[] = {
	   	   	    ① 1.0f, 0.0f, 0.0f,	/右(1,0)
             	                    /
	   	       	       	② 0.0f, 0.0f, 0.0f,	/原点(0,0)
                                        /
	   	       	       	③ 1.0f, 1.0f, 0.0f,	/右上(1,1)
                                        /
	   	   	       	   	
                    ④   0.0f, 1.0f, 0.0f,//上(0,1)
	   	       };
	   	       	   :
	   	       	   :
	   	       gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4); //第1・3引数変更
	   }




                                                                        36
GL_POINTS
• 点(1px)を描画する

                ④   ③




                ②   ①




                        37
GL_LINES
• 直線を描画する時に使う
• 座標の描画順は、①②→③④→⑤⑥→
           ④   ③




           ②   ①




                      38
GL_LINE_STRIP
• 直線を描画する時に使う
• 座標の描画順は、①②→②③→③④→④⑤→
          ④     ③




          ②     ①




                         39
GL_TRIANGLE_STRIP
• 隣接した三角形を描画する時に使う
• 座標の描画順は、①②③→②③④→③④⑤→
      ④   ③    ④    ③




      ②   ①    ②    ①




                         40
GL_TRIANGLE_FAN
• 扇形を描画する時に使う
• 座標の描画順は、①②③→①③④→①④⑤→
      ④   ③    ④   ③




      ②   ①    ②   ①




                         41
GL_TRIANGLE_FAN
• 引数を変更して実行する
 と、右の図形が描画されま
 す。




                  42
色をつける
• onDrawFrameを修正
	   public void onDrawFrame(GL10 gl) {
	   	   	    :
	   	   	    :	 	
	   	   gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
	   	   gl.glVertexPointer(3, GL10.GL_FLOAT, 0, fb);
	   	   gl.glColor4f(1.0f, 0.0f, 0.0f, 1.0f); //追加
	   	   gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
	   }




                                                         43
色をつける
• 実行!
 →水色の背景の右上に、赤
 い四角形が表示されました
 か?




                44
コード解説
  • 描画色を指定する
  メソッド名                                       役割
                                             描画色を決定する。RGBA(Aはアルファ値)を指
glColor4f(float r, float g, float b, float a);   定する。
                                             指定できる範囲は0∼1の実数値。




    • glColor4fの引数の値を適当に変更して、いろ
          いろな色で塗りつぶされることを確認してみ
          てください。

                                                                        45
• 本日のハンズオンはここまでです。お疲れ様
 でした。

• 今回は、単純に三角形を描画するのみでした
 が、任意の場所への描画や回転、拡大・縮
 小、任意画像の描画などもできます。

• ・・・が、数学(行列)の知識が必要となります
 ので、次回(?)のハンズオンにできればと
 思っております。



                           46

Contenu connexe

Tendances

【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスターUnity Technologies Japan K.K.
 
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件についてOpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件についてFumiya Nozaki
 
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oFメディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oFAtsushi Tadokoro
 
Media Art II openFrameworks 複数のシーンの管理・切替え
Media Art II openFrameworks 複数のシーンの管理・切替えMedia Art II openFrameworks 複数のシーンの管理・切替え
Media Art II openFrameworks 複数のシーンの管理・切替えAtsushi Tadokoro
 
簡単!OpenGL ES 2.0フラグメントシェーダー
簡単!OpenGL ES 2.0フラグメントシェーダー簡単!OpenGL ES 2.0フラグメントシェーダー
簡単!OpenGL ES 2.0フラグメントシェーダーEiji Kamiya
 
GLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめGLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめYoichi Hirata
 
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-Fumiya Nozaki
 
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」nyagasuki
 
OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-
OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-
OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-Fumiya Nozaki
 
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
Media Art II 2013  第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズムMedia Art II 2013  第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズムAtsushi Tadokoro
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるデジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるAtsushi Tadokoro
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解MITSUNARI Shigeo
 
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計UnityTechnologiesJapan002
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたMITSUNARI Shigeo
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenMITSUNARI Shigeo
 

Tendances (19)

【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター
 
CG2013 06
CG2013 06CG2013 06
CG2013 06
 
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件についてOpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
 
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oFメディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
 
Media Art II openFrameworks 複数のシーンの管理・切替え
Media Art II openFrameworks 複数のシーンの管理・切替えMedia Art II openFrameworks 複数のシーンの管理・切替え
Media Art II openFrameworks 複数のシーンの管理・切替え
 
簡単!OpenGL ES 2.0フラグメントシェーダー
簡単!OpenGL ES 2.0フラグメントシェーダー簡単!OpenGL ES 2.0フラグメントシェーダー
簡単!OpenGL ES 2.0フラグメントシェーダー
 
GLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめGLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめ
 
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
 
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」
【TechBuzz】第9回cocos2d-x勉強会「シェーダ書いてますか?」
 
CG2013 03
CG2013 03CG2013 03
CG2013 03
 
OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-
OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-
OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-
 
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
Media Art II 2013  第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズムMedia Art II 2013  第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるデジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
 
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
 
CG2013 08
CG2013 08CG2013 08
CG2013 08
 
OpenGL 3DCG
OpenGL 3DCGOpenGL 3DCG
OpenGL 3DCG
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
 

Similaire à Android OpenGL HandsOn

Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Hiroshi Yoshida
 
coma Creators session vol.2
coma Creators session vol.2coma Creators session vol.2
coma Creators session vol.2Atsushi Tadokoro
 
Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Katsutoshi Makino
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2Masao Kato
 
p5.js 授業テキスト
p5.js 授業テキストp5.js 授業テキスト
p5.js 授業テキストSuzuki Junko
 
シェーダー伝道師 第一回
シェーダー伝道師 第一回シェーダー伝道師 第一回
シェーダー伝道師 第一回hixi365
 
3D で遊ぼう ~C#er も TypeScript で楽々 WebGL~
3D で遊ぼう ~C#er も TypeScript で楽々 WebGL~3D で遊ぼう ~C#er も TypeScript で楽々 WebGL~
3D で遊ぼう ~C#er も TypeScript で楽々 WebGL~Fujio Kojima
 
OpenGLと行列
OpenGLと行列OpenGLと行列
OpenGLと行列miyosuda
 
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Takeshi Arabiki
 
Flashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DFlashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DKatsushi Suzuki
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス5mingame2
 
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】株式会社ランチェスター
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんかcch-robo
 
JavaScript経験者のためのGo言語入門
JavaScript経験者のためのGo言語入門JavaScript経験者のためのGo言語入門
JavaScript経験者のためのGo言語入門Shohei Arai
 
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)Takashi Yoshinaga
 
FiltersでGLSLを楽しく学んじゃおう!
FiltersでGLSLを楽しく学んじゃおう!FiltersでGLSLを楽しく学んじゃおう!
FiltersでGLSLを楽しく学んじゃおう!Kazuya Hiruma
 
シェーダー伝道師 第二回
シェーダー伝道師 第二回シェーダー伝道師 第二回
シェーダー伝道師 第二回hixi365
 

Similaire à Android OpenGL HandsOn (20)

Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
 
coma Creators session vol.2
coma Creators session vol.2coma Creators session vol.2
coma Creators session vol.2
 
Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
 
p5.js 授業テキスト
p5.js 授業テキストp5.js 授業テキスト
p5.js 授業テキスト
 
Gocon2013
Gocon2013Gocon2013
Gocon2013
 
シェーダー伝道師 第一回
シェーダー伝道師 第一回シェーダー伝道師 第一回
シェーダー伝道師 第一回
 
3D で遊ぼう ~C#er も TypeScript で楽々 WebGL~
3D で遊ぼう ~C#er も TypeScript で楽々 WebGL~3D で遊ぼう ~C#er も TypeScript で楽々 WebGL~
3D で遊ぼう ~C#er も TypeScript で楽々 WebGL~
 
Android gameprogramming
Android gameprogrammingAndroid gameprogramming
Android gameprogramming
 
OpenGLと行列
OpenGLと行列OpenGLと行列
OpenGLと行列
 
Processing
ProcessingProcessing
Processing
 
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理
 
Flashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DFlashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3D
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
 
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんか
 
JavaScript経験者のためのGo言語入門
JavaScript経験者のためのGo言語入門JavaScript経験者のためのGo言語入門
JavaScript経験者のためのGo言語入門
 
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
 
FiltersでGLSLを楽しく学んじゃおう!
FiltersでGLSLを楽しく学んじゃおう!FiltersでGLSLを楽しく学んじゃおう!
FiltersでGLSLを楽しく学んじゃおう!
 
シェーダー伝道師 第二回
シェーダー伝道師 第二回シェーダー伝道師 第二回
シェーダー伝道師 第二回
 

Android OpenGL HandsOn