OpenGL ESのRetina対応の方法をちょっとメモしておきます。OpenGL以外のRetina対応については@k_katsumiさんの記事「アプリケーションを iPhone 4 の Retina Display に対応するための方法いろいろ」がとても参考になると思います。というか、この記事を見てOpenGLについては書いてなかったので触発されて書くことにしました。 Xcodeの「OpenGL ES Application」で作成したプロジェクトの場合で書きますと、EAGLViewのViewのサイズはRetinaディスプレイでも変わらず320×480です。iOS4からUIView(およびEAGLViewなどのサブクラス)にcontentScaleFactorというメソッドが追加され、この値を変更することでUIViewの中の解像度を変更することができるようになりました。もうひとつ、UIV
iPad2 を iOS5 にアップデートしたら 3D の描画性能が大幅に向上しました。 テスト内容は前回までと同じです。 iPad2 ( A5 : PowerVR SGX543MP2 ) (1) light 3 + shadow map ------------------------------------ iOS 5 15.81 fps 13.0Mpix/sec iOS 4 11.83 fps 12.4Mpix/sec (2) light 3 ------------------------------------ iOS 5 20.67 fps 16.3Mpix/sec iOS 4 15.27 fps 12.0Mpix/sec (3) light 1 ------------------------------------ iOS 5 57.04 fps 44.9Mpix/sec i
GeometryShader 利用時に GLSL のバージョンの違いが問題になったのでまとめてみました。 OpenGL 1.3 ---- OpenGL ES 1.0 ---- OpenGL 1.5 *1 OpenGL ES 1.1 ---- OpenGL 2.0 GLSL 1.1 OpenGL ES 2.0 GLSL ES 1.0 (ESSL) OpenGL 2.1 GLSL 1.2 OpenGL 3.0 GLSL 1.3 OpenGL 3.1 GLSL 1.4 OpenGL 3.2 GLSL 1.5 *1: Shader 対応。Extension で GLSL1.0 も利用可能。Core API になったのは OpenGL 2.0 から。 ・Wikipedia GLSL OpenGL ES 2.0 の GLSL は、GLSL ES または ESSL と呼ばれています。 上の対応表では O
今更(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_REND
OpenGL ES 2.0 の GLSL では演算精度の宣言ができます。 宣言 fp精度 vsh fsh --------------------------------------- highp 24bit 以上 必須 option mediump 16bit 以上 必須 lowp 10bit 以上 それぞれ最低限の演算精度が決まっていますが上限はありません。 GPU によっては lowp 宣言しても常に highp とみなされることもあります。 検証プログラムを作って調べてみました。 vertex shader fragment shader ------------------------------------------------------------------ Adreno 200/205 highp highp PowerVR SGX 535/540 highp/med
Androidアプリで高速描画チューニングをするコツ:インタビュー特集:Google直伝!(1)(2/3 ページ) T-Mobile G1の仕組みを整理 高速描画を実現するための仕組みを理解するには、G1のハードウェアの仕組みをある程度理解する必要がある。 アプリケーションが動作するための計算や演算を行うのは、CPUだ。G1のアプリケーションが動作するCPUにはARM 11(クロック数は528MHz)が搭載されている。通常は、ここで表示する内容を生成して、LCDのバッファへ転送して表示する。 CPUの演算速度はそれなりに高速なので、すべてソフトウェアで演算する手法もある。しかし、G1は3Dの処理(OpenGL ES)を行う専用ハードウェア(GPU)を持っているため、これを使うことでソフトウェアでの処理に比べて高速かつ、省電力で描画の演算ができる。 PCで動作するAndroid SDKのエミ
Appleが推奨するPowerVR用テクスチャ画像フォーマット(以後pvrファイルと呼ぶ)の話。 こいつをPNG画像ファイルの代わりに使う事に、なんのメリットがあるかというとメモリ消費が節約できるんですわ。 pvrファイルはオリジナルの画像を多少の劣化を覚悟して圧縮するのが特徴で、実際サンプルソースPVRTextureLoaderプロジェクトで作られたpvrファイルと、オリジナルPNGファイルの大きさを比べるとかなりの差があります。 Brick.png 584KB オリジナル Brick_4.pvr 132KB RGBA各4ビットで圧縮 Brick_2.pvr 68KB RGBA各2ビットで圧縮 で、単にファイルの時だけなら、さほど使う価値もないんですが、こいつはメモリ上にロードしたあとも圧縮された状態らしいです。 これは、Appleから提供されるpvrファイル読み込みクラス、PVRTex
OpenGL ES 2.0 を使う機会が増えています。 iOS や Android 等のモバイル機器をはじめ、デスクトップ環境でもサポートが始まりました。 これまでモバイル向けに書いたコードを PC 上で走らせる場合 2つの選択肢がありました。 (1) GPU / OS が提供する OpenGL ES 2.0 エミュレータ (2) 自分で OpenGL との相互変換を行う ここに新たに 3番目 (3) デスクトップ GPU の OpenGL ES 2.0 プロファイル が加わります。 ● (1) GPU / OS の OpenGL ES 2.0 エミュレータ 多くの場合 OS や GPU 毎にツールとして EGL/GLES2.0 エミュレーション用の 互換ライブラリが提供されています。 ・OpenGL ES 2.0 Emulator テクスチャフォーマットなど特殊な機能にも対応しており、タ
iPad Human Interface Guidelinesの中にはデバイスの回転対応について Launch in your supported orientation, regardless of the current device orientation. Avoid displaying a UI element that tells people to rotate the device. Support both variants of an orientation. という三つの項目があり、これらを満たさないと審査を通らないようだ。要するに、UIを最低でも上向き/下向き、あるいは左向き/右向きにフレキシブルに対応させる必要がある。 通常デバイスの回転にあわせたUIの対応はViewControllerのshouldAutorotateToInterfaceOrientatio
The OpenGL® ES Shading Language Language Version: 1.00 Document Revision: 17 12 May, 2009 Editor: Robert J. Simpson (Editor, version 1.00, revisions 1-11: John Kessenich) ii Copyright (c) 2006-2009 The Khronos Group Inc. All Rights Reserved. This specification is protected by copyright laws and contains material proprietary to the Khronos Group, Inc. It or any components may not be reproduced, rep
OpenGL ES (OpenGL for Embedded Systems) とは、組み込み用途向け OpenGL のサブセット版です。 Khronos Groupが仕様策定を行っています。 OpenGL ES は、OpenGL を携帯電話、PDA(携帯情報端末)、家電などに組み込まれる表示システムでの利用をターゲットに、必要十分な機能に絞り込んでよりコンパクトな規格にまとめたものです。 (NTTドコモ、AU(KDDI)、ソフトバンクの携帯電話、Android、iPhone/iPad や PLAYSTATION3 といった身近な機器でも利用されるようになっています。) 車載用や航空電子用のディスプレイといった用途には、OpenGL SC という安全の重要なプロファイルがあります。
The OpenGL ES Registry contains specifications of the core API and shading language; specifications of Khronos- and vendor-approved OpenGL ES extensions; header files corresponding to the specifications; and related documentation. The OpenGL ES Registry is part of the Combined OpenGL Registry for OpenGL, OpenGL ES, and OpenGL SC, which includes the XML API registry of reserved enumerants and funct
まずはバッファを作成します。複数のバッファを作成することも可能で、DirectXのストリームのように複数のバッファを設定してもかまいません。 次にこのバッファに頂点情報を書き込みます。 glBindBuffer( GL_ARRAY_BUFFER, g_hVbo ); glBufferData( GL_ARRAY_BUFFER, size, pData, GL_STATIC_DRAW ); glBindBuffer( GL_ARRAY_BUFFER, 0 ); まず、作成したバッファをバインドします。これが1行目です。 2行目で情報を書き込みます。ターゲット、データサイズ、データの先頭アドレス、usage となります。 usage は通常、GL_STATIC_DRAW を選択します。これは基本的に変更しないデータを書き込む場合の設定です。 GL_DYNAMIC_DRAW を選択するのはデータ
前回、シェーダプログラムを設定するところまでやりました。 今回でやっと描画です。といっても、トライアングルを出すだけですが。 今回はDirectXで言うところのDrawPrimitiveUP()系の解説になるので注意してください。 DirectXの場合、シェーダプログラムを利用する時にVertexDeclarationを作成する必要がありました。 GLESの場合は作成の必要はありませんが、多分それが内部でやっていることと同じようなことをする必要があります。 すなわち、頂点データとシェーダプログラム内の変数を対応させなければならないわけです。 まず、頂点データを用意します。 前回解説した頂点シェーダの入力は座標のみなので、3次元ベクトル3つを配列で確保します。 GLfloat pfVertices[] = { -0.4f, -0.4f, 0.0f, +0.4f, -0.4f, 0.0f,
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く