2017-10-05 8 views
0

私はすべてのフレームに対して約300バイトのデータを書き込むグラフィックスエンジンを持っています。 テクスチャへの呼び出し(ミップマップへの書き込みを含む)約glTexSubImage2D。 テクスチャは、フォーマット\内部フォーマットとしてGL_REDGL_R8を使用して、符号なしバイトのテクスチャです。 アップロードは、ピクセルバッファを介して実行されます。ピクセルバッファ自体は、1フレーム先に書き込まれています。glTexSubImage2Dは、フレームのフレームレートに深刻な影響を与えます。

この非常に小さな操作は、他の何かのグレスが描画されているかにかかわらず、フレームレートに深刻な影響を与えます。

このフレームレート低下の原因は何ですか?また、どのように私はそれを過ぎることができますか?

更新: 固体ピクセルの答えは同期の問題であることを示します。この場合、テクスチャの変更がレンダリングと全く同期していなくても、私は完全にうまくいくでしょう。新しいデータのほんの半分があれば、まったく気にせずにテクスチャメモリに直接データを書き込むようにglesに伝えることはできますか?

注:これは唯一のフレームレートに影響を与えglTexSubImage2DあるglSubBufferDataアップロードは全く影響を与えません。 テクスチャを使用して描画するときに実際にglTexSubImage2Dを実行すると、一部のデバイスではそれが表示されますが、すべてのデバイスではありません。

+0

「...ただ同期せずにストレートテクスチャメモリにデータを書き込むことができますか」?私がテクスチャについて知っている方法はなく、バッファのみです。 – solidpixel

+0

はい、gles 3.2、またはもちろんvulkanで使用可能なテクスチャバッファでは可能です:( –

答えて

関連する問題