blog

GLKitとAPI

AppleはOpenGL ESを放棄しましたが、iOS開発者は引き続き使用できます。 すべてのレンダリング要素にエフェクトを適用するために使用される環境色。...

Jan 3, 2021 · 6 min. read
シェア

GLKit

数学ライブラリ、背景テクスチャの読み込み、事前に作成されたシェーダー効果、標準的なビューとビューコントローラを使用してレンダリングループを実装することにより、OpenGL/OpenGL ESベースのアプリケーション開発を簡素化することを目的としています。

GLKit ビューを使用した OpenGL ES コンテンツのレンダリング

図はLogic Education CCより転載
  • GLKView レンダリングエフェクトを準備します。

  • GLKViewController(標準的なUIKitデザインパターンを拡張。 描画ビューのコンテンツの管理とレンダリングに使用)。

  • GLKBaseEffect レンダリングを表示

GLKit

  • テクスチャの読み込み

  • 高性能な数学の提供

  • 一般的なシェーダーを提供

  • ビューとビューコントローラの提供

GLKit テクスチャの読み込み

様々なリソースファイルからテクスチャをロード GLTextureLoader

  • 初期化

     - initWithSharegroup: オブジェクトに読み込む新しいテクスチャを初期化する。
     - initWithShareContext: 新しいテクスチャ読み込みオブジェクトを初期化する。
    
  • ファイルからのテクスチャ読み込み

     + textureWithContentsOfFile:options:errer: ファイルから 2D テクスチャイメージをロードし、そのデータから新しいテクスチャを作成する。
     - textureWithContentsOfFile:options:queue:completionHandler: 非同期でファイルから2Dテクスチャイメージをロードし、そのデータに基づいて新しいテクスチャを作成する。
    
  • URLからのテクスチャ読み込み

     - textureWithContentsOfURL:options:error: URLから2Dテクスチャイメージをロードし、そのデータから新しいテクスチャを作成する。
     - textureWithContentsOfURL:options:queue:completionHandler: 非同期でURLから2Dテクスチャイメージをロードし、そのデータに基づいて新しいテクスチャを作成する。
    
  • メモリからデータを読み込んでテクスチャを作成

     + textureWithContentsOfData:options:errer: 2D テクスチャイメージをメモリからロードし、そのデータに基づいて新しいテクスチャを作成する。
     - textureWithContentsOfData:options:queue:completionHandler:非同期で2Dテクスチャイメージをメモリからロードし、そのデータから新しいテクスチャを作成する。
    
  • CGImageからのテクスチャ作成

     - textureWithCGImage:options:error: Quartzイメージから2Dテクスチャイメージをロードし、そのデータから新しいテクスチャを作成する。
     - textureWithCGImage:options:queue:completionHandler: Quartzイメージから非同期で2Dテクスチャイメージをロードし、そのデータに基づいて新しいテクスチャを作成する。
    
  • 主にURLから読み込んでテクスチャを作成

     + cabeMapWithContentsOfURL:options:errer: 1つのURLからCubemapテクスチャイメージをロードし、そのデータに基づいて新しいテクスチャを作成する。
     - cabeMapWithContentsOfURL:options:queue:completionHandler:非同期に1つのURLからCubemapテクスチャイメージをロードし、そのデータに基づいて新しいテクスチャを作成する。
    
  • 主にファイルからデータを読み込んでテクスチャを作成

     + cubeMapWithContentsOfFile:options:errer: 単一のファイルからキューブ・マッピング・テクスチャ・オブジェクトをロードし、そのデータから新しいテクスチャを作成する。
     - cubeMapWithContentsOfFile:options:queue:completionHandler:単一のファイルからキューブ・テクスチャ・オブジェクトを非同期にロードし、そのデータから新しいテクスチャを作成する。
     + cubeMapWithContentsOfFiles:options:errer: 一連のファイルからCubemapテクスチャイメージをロードし、データマスターから新しいテクスチャを作成する。
     - cubeMapWithContentsOfFiles:options:options:queue:completionHandler:非同期に一連のファイルからキューブマップ・テクスチャ・イメージをロードし、そのデータから新しいテクスチャを作成する。
    

ビューとビューコントローラの提供

コンテンツを描画するビューのデフォルト実装 GLKView

  • ビューの初期化

     - initWithFrame:context: 新しいビューを初期化する
    
  • プロキシGLKViewDelegateコールバック関数

     - glkView:drawInRect: 描画の準備 -prepareToDraw レンダリングの準備 -prepareToDraw
    
  • フレームバッファオブジェクトの設定

     drawableColorFormat カラーレンダリングバッファフォーマット
     drawableDepthFormat 深度レンダリングバッファフォーマット
     drawableStencilFormat テンプレートレンダリングバッファフォーマット
     drawableMultisample マルチサンプルバッファのフォーマット
    
  • フレームバッファのプロパティ

     drawableHeight 基礎となるバッファオブジェクトを強調表示する。
     drawableWidth 基礎となるバッファオブジェクトの幅
    
  • ビューの内容の描画

     context ビューの内容を描画するために使用するOpenGL ESコンテキストファイル。
     
     - bindDrawable 基礎となるFrameBufferオブジェクトをOpenGL ESにバインドする。
     
     - enableSetNeedsDisplay ビューの内容を無効にするメッセージに応答するかどうかを指定するブール値。
     
     - display ビューの内容を直ちに再描画する。
     
     snapshot ビューの内容を描画準備し、新しいイメージオブジェクトとして返す。
    
  • ビューフレームバッファオブジェクトの削除

     - deleteDrawable ビューに関連付けられている描画可能オブジェクトを削除する。
    

OpenGL ES レンダリングループを管理するビューコントローラ GLKViewController

  • 更新

     - (void) update ビューの内容を更新する
     - (void) glkViewControllerUpdate:
    
  • フレームレートの設定

     preferredFramesPerSecond ビューコントローラがビューを呼び出し、ビューの内容を更新する速度。
     framesPerSencond ビューコントローラがビューを呼び出し、その内容を更新する実際の速度。
    
  • フレーム更新の制御

     paused レンダリングループを一時停止したかどうかを示すブール値。
     pausedOnWillResignActive prepareToDraw(描画の準備) 現在のアプリケーションが再アクティブ化されたときに、ビューコントローラがレンダリングサイク ルを自動的に一時停止するかどうかを示すブール値。
     resumeOnDidBecomeActive 現在のアプリケーションがアクティブになったときに、ビューコントロールが自動的にレンダリングサイクルを再開するかどうかを示すブール値
    
  • ビューの更新情報の取得

     frameDisplayed ビューコントローラが作成されてから送信したフレーム更新の数。
     timeSinceFirstResume ビューコントローラが最初に更新イベントの送信を再開してからの経過時間。
     timeSinceLastResume オートビューコントローラが更新イベントの送信を再開してからの時間。
     timeSinceLastUpdate オートビューコントローラーがデリゲートメソッドを呼び出すのに費やした時間と、経過した時間。
     timeSinceLastDraw autoview コントローラによってビュー表示メソッドが呼び出されてからの経過時間。.
    
  • 更新イベントの処理

     - glkViewControllerUpdate: コンスタントカラーを使用するかどうかを示すために、表示の各フレームでConstantColorブール値を呼び出す。
    
  • 一時停止/再開通知

     - glkViewController : willPause: レンダリングループが一時停止または再開されたときに呼び出される.
    

GLKit OpenGL ES レンダリングGLKBaseEffectを見る

  • エフェクトの命名

    ラベルによるエフェクトの命名

  • エフェクトの命名

    label エフェクトの名前

  • 照明エフェクトの設定

    GLKLightingTypePerVertex ライティング計算がトリプレックス内の各頂点で実行され、トリプレックス内で補間されることを示します。

    GLKLightingTypePerPixel は、ライティング計算への入力が三角形状内に挿入され、各セグメントでライティング計算が実行されることを示します。

  • 照明の設定

    lightModelTwoSided プリミティブの両側に対してライティングが計算されることを示すブール値。

    material レンダリング要素のライティング計算に使用されるマテリアル プロパティ。

    lightModelAmbientColor エフェクトによってレンダリングされるすべての要素に適用されるアンビエント カラー。

    light0 シーン内の最初のライト属性です。

    light1 シーン内の2番目のライト属性

    light2 シーン内の3番目のライト属性です。

  • テクスチャの設定

    texture2d0 1番目のテクスチャ属性です。

    texture2d1 2番目のテクスチャ属性。

    textureOrder レンダリング要素にテクスチャを適用する順番。

  • 霧の設定

    fog シーンに使用するフォグ属性。

  • 色情報の設定

    colorMaterialEnable ライトとマテリアルの相互作用を計算するときにカラー頂点アトリビュートを使用するかどうかを示すブール値。

    useConstantColor 定数カラーを使用するかどうかを示すブール値。

    constantColor 頂点ごとのカラー データを提供しない場合に、コンスタント カラーを使用します。

  • 描画の準備

    -PrepareToDraw エフェクトの描画準備

Read next