Open GL ES with Obj-C
∼Open GLを使って、!
!

!

!

三角形を書こう∼!
!

Presented by @daiki63rpc
1
Open GL ESとは?
•
•

OpenGL for Embedded Systems!
主に携帯電話などの組み込みシス
テムで使用されている3Dコン
ピューターグラフィックス用 API
である。(wikipedia)!

•

iOS, Android, PS3(一部)で使用
2
どうすれば使える?
•

次のFrameworkを追加する!
•
•

OpenGLES.framework!
GLKit.framework

3
GLKViewController
•

今回は、複雑なデリゲートやクラ
ス拡張の手間を省くため、環境の
整ったGLKViewControllerを用いる

4
継承関係

5
GLKViewController
•

UIViewControllerを継承してるか
ら、今まで書いてたViewの設定も
そのまま書ける ← やったぁ!

6
GLKViewController
•

OpenGLを使った画面描画を行う
のに必要な基本的な機能をあらか
じめ備えているViewController!

•

面倒な処理の実装を省略できる。

7
さっそく実装しよう
•

New Project -> Single View App!
フレームワークを追加!

•

OpenGLES.framework!
• GLKit.framework!
GLKViewControllerを追加!

•

デフォルトのViewControllerを削除

•

•

8
実装しよう(Cont.)
•

次のメソッドを追加!
•

•

-­‐	
  (void)viewDidAppear:

(BOOL)animated

Viewが読み込まれる前に処理をする	
  
-­‐	
  (void)glkView:(GLKView*)view

drawInRect:(CGRect)rect

Viewに関する情報を設定
9
実装しよう(Cont.)
•

細部は実際にコードを見せる

https://github.com/daiki63rpc/HelloOpenGL/blob/master/
HelloOpenGL/GLGLKViewController.m

10
覚えてほしいこと
•

なぜこんな複雑な命令ばっかり?!

•

座標の取り方!

•

プリミティブの種類

11
なぜこんな複雑な命令ばっかり?
•

バッファとかGL~の型とか!

•

宣言することも多い!

•

GPUに対して命令を(間接的に)送
るコードを書いているから!

•

OpenGLはその橋渡し!

•

だから高速化が期待できる
12
座標の取り方
・-1.0 ~ 1.0のスケール

 で指定する!
・奥行きがZ軸

13
プリミティブの種類

14
これからの実装
•

タップした座標を検出して、図形
を描画したい

→- (void)touchesBeganで検出

 - (void)updateで再描画!

•

次に示す、参考文献にいろいろ載っ
てるので調べてみてね
15
作ってみよう
・頂点の編集!
・色の変更!
・早さの調整

16
参考文献
•

詳解iOS5プログラミング

http://www.amazon.co.jp/gp/product/4798032034	
  

•

iOS用OpenGL	
  ESプログラミングガイド

https://developer.apple.com/jp/devcenter/ios/library/
documentation/OpenGLES_ProgrammingGuide.pdf	
  

•

Qiita:iOSでとりあえずOpenGLで三角
形を描くには

http://qiita.com/weed/items/3992814597432fef3c95
17

OpenGL ES Introduction