バージョンやOpenGL拡張を確認する
今更(NDAの関連で書いちゃまずいかなと思ったので自粛してました)ですがiPhoneのOpenGL ESのバージョンやOpenGL拡張の情報の取得方法について書いておきます。
今回はOpenGL ESのプロジェクトを作成した後、ファイル EAGLView.m の
- (BOOL)createFramebuffer {
の直後に記載しました。記述方法はこんな感じです。
- (BOOL)createFramebuffer { // ベンダー情報の取得 const GLubyte *strVendor = glGetString(GL_VENDOR); NSLog(@"GL_VENDOR : %s\n", strVendor); // レンダラー情報の取得 const GLubyte *strRenderer = glGetString(GL_RENDERER); NSLog(@"GL_RENDERER : %s\n", strRenderer); // バージョン情報の取得 const GLubyte *strVersion = glGetString(GL_VERSION); NSLog(@"GL_VERSION : %s\n", strVersion); // OpenGL拡張の取得 const GLubyte * strExtensions = glGetString (GL_EXTENSIONS); NSLog(@"GL_EXTENSIONS : %s\n", strExtensions); glGenFramebuffersOES(1, &viewFramebuffer); glGenRenderbuffersOES(1, &viewRenderbuffer);
結果はこんな感じです。結構、使用できるOpenGL拡張のコマンド数がありますね。
定数 | 結果 |
---|---|
GL_VENDOR | Imagination Technologies |
GL_RENDERER | PowerVR MBXLite with VGPLite |
GL_VERSION | OpenGL ES-CM 1.1 (30.7) |
GL_EXTENSIONS | GL_EXT_texture_filter_anisotropic GL_EXT_texture_lod_bias GL_IMG_read_format GL_IMG_texture_compression_pvrtc GL_IMG_texture_format_BGRA8888 GL_OES_blend_subtract GL_OES_compressed_paletted_texture GL_OES_depth24 GL_OES_draw_texture GL_OES_framebuffer_object GL_OES_mapbuffer GL_OES_matrix_palette GL_OES_point_size_array GL_OES_point_sprite GL_OES_read_format GL_OES_rgb8_rgba8 GL_OES_texture_mirrored_repeat |
(2009/03/25 変更)
OpenGL ESの場合、 GL_VERSION で返される値は
OpenGL ES-XX 1.1
というフォーマットになるようです。 XX の部分には CM または CL となります。
※参考資料は以下のPDF
http://www.khronos.org/registry/gles/specs/1.1/es_cm_spec_1.1.12.pdf
※こちらのサイトの「OpenGL ES 1.1.12 Difference Specification」が該当のリンクです。
なお、 CM の場合は「Commonプロファイル」、 CL の場合「Common-Liteプロファイル」であることを示します。
「Commonプロファイル」「Common-Liteプロファイル」は以下のサイトによると「CL=固定小数点実数系をターゲット、CM=浮動小数点系までをサポート」とのことです。
ITmedia ライフスタイル:次世代プレイステーションはOpenGL系になる? (1/3)
http://plusd.itmedia.co.jp/lifestyle/articles/0407/26/news007.html