OpenGL ESテンプレート(13)~処理フロー

2012. 02. 17
OpenGL ES Applicationテンプレートのプロジェクトを実行した際の処理の流れを示します。

●メソッド一覧


GLFunAppDelegateapplication:didFinish
LaunchingWithOptions:
アプリケーション起動直後の処理
applicationWillResignActive:アプリケーションが非アクティブになる時の処理 
applicationDidBecomeActive:アプリケーションがアクティブになった時の処理 
applicationWillTerminate:アプリケーションが終了する時の処理 
applicationDidEnterBackground:アプリケーションがバックグラウンドになった時
の処理
applicationWillEnterForeground:アプリケーションがフォアグラウンドになる時
の処理 
deallocメモリの解放
GLFunViewControllerawakeFromNibnibファイル読み込み後の処理
deallocメモリの解放
viewWillAppear:ビューが表示される時の処理
viewWillDisappear:ビューが非表示になる時の処理
viewDidUnloadビューがメモリから解放された時の処理 
animationFrameIntervalアニメーション間隔の取得
setAnimationFrameInterval:アニメーション間隔の設定
startAnimationアニメーションの開始
stopAnimationアニメーションの停止
drawFrame図形の設定と表示
didReceiveMemoryWarningメモリ警告時の処理
compileShader:type:file:シェーダプログラムのコンパイル
linkProgram:シェーダプログラムのリンク
validateProgram:シェーダプログラムの検証
loadShadersシェーダプログラムの生成と設定
EAGLViewlayerClassCAEAGLLayerへの変更
initWithCoder:ビュー読み込み後の追加の初期化
deallocメモリの解放
contextコンテキストの取得
setContext:コンテキストの設定
createFramebufferフレームバッファとレンダバッファの生成と
バインド 
deleteFramebufferフレームバッファとレンダバッファの削除 
setFramebufferフレームバッファとビューポートの設定 
presentFramebufferレンダバッファの表示
layoutSubviewsサブビューのレイアウト


●実行フロー

アプリケーションを起動した際のメソッド実行順を下表に示します。

左端の列にあるメソッド内から呼び出されるメソッドはその右側の左から2列目に、そのメソッド内から呼び出されるメソッドは更に右側の左から3列目に記述しています。

太字で記したメソッドはシステムが呼び出しているメソッドです。

斜体で記したメソッドはデバッグモード時のみ実行されます。

『※』が付いているメソッドはOpenGL ES 2.0の場合のみ実行されます。

awakeFromNibnibファイル読み込み後の処理
initWithCoder:レンダリングサーフェスの設定
layerClassレイヤの変更
setContext:レンダリングコンテキストの生成と設定
deleteFramebufferFBとRBの削除 
setFramebufferフレームバッファの生成とバインド
createFramebufferFBの生成
loadShaders ※シェーダプログラムの生成と設定
compileShader:type:file: ※Shader.vshの
コンパイル
compileShader:type:file: ※Shader.fshの
コンパイル
linkProgram: ※プログラムのリンク
application:didFinish
LaunchingWithOptions:
ビューコントローラをウィンドウのルートビューコントローラに設定
viewWillAppear:ビューが表示される時の処理
startAnimationアニメーションの開始
applicationDidBecomeActive:アプリケーションがアクティブになった時の処理
startAnimationアニメーションの開始
layoutSubviewsサブビューのレイアウト
deleteFramebufferフレームバッファとレンダバッファの削除
drawFrameディスプレイリンクによる実行ループからの呼び出し 
setFramebufferフレームバッファの生成とバインド
createFramebufferFBの生成
validateProgram:シェーダプログラムの検証
presentFramebufferレンダバッファの表示
drawFrameディスプレイリンクによる実行ループからの呼び出し 
setFramebufferフレームバッファの生成とバインド
validateProgram:シェーダプログラムの検証
presentFramebufferレンダバッファの表示

drawFrameメソッドは、startAnimationメソッド内でディスプレイリンクのセレクタに設定されており、フレーム描画の度に実行ループから呼び出されます。

またdrawFrameメソッドは、フレーム描画ごとに繰り返し呼び出されますが、2回目以降はフレームバッファが存在するのでsetFramebufferメソッド内からのcreateFramebufferメソッドの呼び出しはありません。


●中断フロー


アプリケーションをタスク切り替えにより、バックグラウンドにした際の実行順を下表に示します。

applicationWillResignActive:アプリケーションが非アクティブになる時の処理
stopAnimationアニメーションの停止
applicationDidEnterBackground:アプリケーションがバックグラウンドになった時の処理(空実装)


●再開フロー


アプリケーションをタスク切り替えにより、フォアグラウンドにした際の実行順を下表に示します。

applicationWillEnterForeground:アプリケーションがフォアグラウンドになる時の処理(空実装) 
applicationDidBecomeActive:アプリケーションがアクティブになった時の処理
startAnimationアニメーションの開始
drawFrameディスプレイリンクによる実行ループからの呼び出し
setFramebufferフレームバッファの生成とバインド
createFramebufferFBの生成
validateProgram:シェーダプログラムの検証
presentFramebufferレンダバッファの表示


●終了フロー


アプリケーションを(バックグラウンドの状態から)終了した際の実行順を下表に示します。

viewWillDisappear:ビューが非表示になる時の処理
stopAnimationアニメーションの停止
applicationWillTerminate:アプリケーションが終了する時の処理
stopAnimationアニメーションの停止



参考文献

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






bose_soundlink_revolve
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
03 | 2017/04 | 05
Sun Mon Tue Wed Thu Fri Sat
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

bose_soundlink_revolve
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR