2012-04-28 5 views
2

私は自分の携帯電話のカメラの出力を画面にストリーミングしようとしています。この出力がIwGxを使用してクワッドに描画された場合、s3eSurfacePtrに書き込むよりも速くなりますか?ストリームカメラの画面への出力:IwGx vs s3e

OpenGLを使用して2次元画像をクワッドにレンダリングしてゲームを作成する人もいると聞いていますが、GPUアクセラレーションの方が速いですね。それが本当かどうか誰にも分かりますか?これは上記の私の問題と似ているようです。

答えて

2

はい、私は間違いなくIwGxルートを下ります。 s3eサーフェスは、現代のハードウェア(特にiOSプラットフォームなど)では非常に遅くなる可能性があります。

まず、CIwTextureのインスタンスを作成し、ミップマップを無効にして変更可能にします。

CIwTexture* lpTexture = new CIwTexture; 
lpTexture->SetModifiable(true); 
lpTexture->SetMipMapping(false); 

コールバックメソッド

s3eCameraRegister(S3E_CAMERA_UPDATE_STREAMING, (s3eCallback) MyFrameDataCallback, NULL); 
は、カメラが動作を開始し、それがフレームを受信したときにRGB565に変換し、それを頼む

初期化します。あなたの使用状況に応じて、要求されるサイズと品質のヒントを変える必要があります。これは、ハードウェアがサポートしているものに依存するため、少し試行錯誤しています。

s3eCameraStart(S3E_CAMERA_STREAMING_SIZE_HINT_LARGEST, S3E_CAMERA_PIXEL_TYPE_RGB565_CONVERTED, S3E_CAMERA_STREAMING_QUALITY_HINT_HIGH); 

そしてカメラフレームコールバックテクスチャを更新

lpTexture->CopyFromBuffer(apFrame->m_Width, apFrame->m_Height, CIwImage::RGB_565, apFrame->m_Pitch, (uint8*) apFrame->m_Data, 0); 
lpTexture->Upload(); 

apFrameは、最初のパラメータとして、コールバック関数に渡さs3eCameraFrameData構造体へのポインタです。コールバックが終了するとデータが存在しなくなるため、コールバックでコピーを行う必要がありますが、アップロードを延期してアプリケーションのループごとに1回だけ実行することができます。

これで、CIwMaterialを作成し、上記のテクスチャを使用して、テクスチャ付きのクワッドをスクリーンにレンダリングするだけです。私はそれをかなりまっすぐ進むので、あなたにそのコードを残します!

+0

ありがとうございましたWave 1、これはIwGxメソッドを使用してカメラの出力をストリームする方法についての非常に簡潔なステップバイステップガイドです – chaindriver

関連する問題