iOSアプリでOpenGLの修正した際のメモ

iOSOpenGL ES を修正する際に調べた事メモです。

 

iOSAndroidの端末でのOpenGL

OpenGL ESを使用します。

 

OpenGL ESって?

OpenGL ES は OpenGLのサブセット版*1です。

 

OpenGL ESのバージョン

OpenGL ES 1.1
  • 固定機能パイプライン機能*2がある
  • iOSでは後方互換性を維持する為に搭載されている
  • OpenGL ES 2.0以降との互換性は無い
  • 保守の場合、GLKitフレームワークを使用して移行が推奨されている*3
  • GLKitフレームワークには、OpenGL ES 1.1の固定機能パイプラインを、新しい版に移行するための支援機能があります。

 

OpenGL ES 2.0

 

OpenGL ES 3.0
  • iOS7から使用可能
  • 多機能化*6

 

ソースコードがどのバージョンを使用してるか

importを見るのが一番早そう

  • #import <OpenGLES/ES1/gl.h> // OpenGL ES 1.1を使用
  • #import <OpenGLES/ES2/gl.h> // OpenGL ES 2.0を使用
  • #import <OpenGLES/ES3/gl.h> // OpenGL ES 3.0を使用

 

どのバージョンを使用するのか

OpenGL ES設計ガイドラインからの抜粋

OpenGL ESを組み込んでiOSアプリケーションを構築するためのチェックリスト

 

  • OpenGL ES 3.0はiOS 7で新たに導入された版です。高い処理性能を実現し、さまざまな目的にGPU計算技術を駆使するばかりでなく、従来はデスクトップ機やゲームコンソールでしか実現できなかった、より複雑な視覚効果を生み出す数々の新機能を備えています。

  • OpenGL ES 2.0はiOSバイス用のベースラインプロファイルで、プログラマブルシェイダを基盤とする、適合性の高いグラフィックスパイプラインを提供します。

  • OpenGL ES 1.1はごく基本的な固定機能グラフィックスパイプラインを提供するだけであり、iOSに今でも搭載されているのは、後方互換性の維持だけが目的です。

 

OpenGL ES 3.0 か、iOS7以前をサポートするならOpenGL ES 2.0 が良さそうですね。

 

 

*1:OpenGLにある機能の一部を取り出して、特定用途に利用できるよう再構築したもの

*2:柔軟性の無いけど実装が楽な描画処理機能みたいなのらしい

*3:GLKitを使用したレンダラの開発 OpenGL ESおよびGLKitによる描画

*4:色々調節しやすいけど詳細な設定が必要な描画機能みたいなのらしい

*5:https://9to5mac.com/2017/05/27/apple-moving-macbook-pro-air-and-iphone-to-obsolete/

*6:OpenGL ES設計ガイドライン