HD映像のリアルタイム処理 on iPhone
特に今回はCPUを音声処理で使用するので、画像処理は可能な限りGPUに任せたい。となると画像(映像のフレーム)をTextureとして次から次に、例えば20fps(毎秒20枚)といったスピードで処理しなくてはいけない。当然これはOpenGLの鉄則、Textureは起動時にロード、に違反し、ロードに時間がかかって使い物にならない。
OpenGL ES 2.0では、こういった場合にRender to Textureという、Textureに直接書き込む手法を2つ提唱している。詳細については以下を参照。
Render to Texture with OpenGL ES
iPhone 3GS, iPhone 4はOpenGL ES 2.0をサポートしているが、こういった手法は一切触れていない。しかし搭載されているGPU(POWERVR SGX)のマニュアルを見てみると、以下のようにある。
6.4. Render to Texture
OpenGL ES 2.0 offers two ways of rendering to textures. One is using EGL pbuffer surfaces; the other is attaching a renderable texture to a framebuffer object (FBO). The latter approach is the recommended one for POWERVR SGX.
さらにはSDKとデモまであった。
Khronos OpenGL ES 2.0 SDKs for POWERVR SGX
ということで、早速iPhone 4を申し込み。