2009-11-11 17 views
6

私はiPhone用のグラフィックスアプリを作成しています。最新のアプリ「Layers」をAndroidプラットフォームに移植しようとしています。 Layersは、ユーザーが画面上に描画し、異なるブラシ、色などで複数のレイヤーの絵を作成し、PSDに書き出すことを可能にするペイントアプリケーションです。デスクトップ同期、スマッジツール、たくさんの良いものがあります... http://www.layersforiphone.com/Android OpenGLES Render-to-Texture

私は月曜日にAndroidプラットフォームを調べ始めましたが、大きな問題が発生しました。最高のパフォーマンスを提供するため、OpenGLを使用してすべての図面を実行します。しかし、テクスチャにレンダリングしてからテクスチャを使う必要がある場所がいくつかあります。例えば:

  1. 使用ブラシテクスチャとglColor4fテクスチャに
  2. プットブラシ色+アルファを黒色ペイントストロークを作成し、画面上にテクスチャAを描画するスプライトのライン。

私はこれをユーザーの指の動きに合わせて継続しています。第1世代のiPod Touchで12-15fpsを達成することができます。ブラシストロークを構成する個々のスプライトに色とアルファを適用してもスプライトが重なってストロークが暗すぎるため、適切な結果が得られないので必要です。

アンドロイドプラットフォームはOpenGL ES 1.0をサポートしていますが、フレームバッファを扱うための主要な機能は省略されているようです。フレームバッファにテクスチャをバインドしてOpenGLを使用してテクスチャを描画する方法を見つけることができません。ここで

は、私は通常、iPhone上でそれについて移動したい方法は次のとおりです。

// generate a secondary framebuffer and bind it to OpenGL so we don't mess with existing output. 
glGenFramebuffers(1, &compositingFramebuffer); 
glBindFramebuffer(GL_FRAMEBUFFER, compositingFramebuffer); 

// attach a texture to the framebuffer. 
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0); 

// subsequent drawing operations are rendered into the texture 

// restore the primary framebuffer and (possibly) draw the rendered texture 
glBindFramebuffer(GL_FRAMEBUFFER, originalActiveFramebuffer); 

は、Androidプラットフォーム上でこのようなものはありますか? iPhoneでは、OpenGLはソフトウェアベースの図面よりもはるかに高速であり、実行可能な唯一のソリューションです(私もCoreGraphicsペイントアプリケーションを書いています...)。 Androidには別のルートがありますか?どんなフープでもジャンプするつもりですが、パフォーマンスがといい、(画面に描いているように10fps +)以外のアプリは公開しません。

答えて

7

私はすべてのAndroidデバイスがOpenGL ES拡張のセットを完全にサポートしているか、まったく同じバージョンのOpenGL ESをサポートしていると懐疑的です。

フレームバッファオブジェクト(FBO)は、OpenGL ES 2.0コア仕様の一部です。あなたのアンドロイドデバイスがES 2.0をサポートしている場合、FBOをサポートしています。

あなたのAndroidデバイスがglGetString(GL_EXTENSIONS)を使用してGL_OES_framebuffer_objectための拡張文字列をチェックし、ES 1.1をサポートしている場合。

+3

だけ興味がある人のために、ここではいくつかの異なるAndroidデバイス上のGL_EXTENSIONSは次のとおりです。 http://www.rbgrn.net/content/345-hands-on-motorola-droid-opengl-es-specs それこれまでフレームバッファをサポートしている唯一のAndroid携帯電話はDROIDのようだ。 –

関連する問題