私はすべてのフレームに対して約300バイトのデータを書き込むグラフィックスエンジンを持っています。 テクスチャへの呼び出し(ミップマップへの書き込みを含む)約glTexSubImage2D
。 テクスチャは、フォーマット\内部フォーマットとしてGL_RED
とGL_R8
を使用して、符号なしバイトのテクスチャです。 アップロードは、ピクセルバッファを介して実行されます。ピクセルバッファ自体は、1フレーム先に書き込まれています。glTexSubImage2Dは、フレームのフレームレートに深刻な影響を与えます。
この非常に小さな操作は、他の何かのグレスが描画されているかにかかわらず、フレームレートに深刻な影響を与えます。
このフレームレート低下の原因は何ですか?また、どのように私はそれを過ぎることができますか?
更新: 固体ピクセルの答えは同期の問題であることを示します。この場合、テクスチャの変更がレンダリングと全く同期していなくても、私は完全にうまくいくでしょう。新しいデータのほんの半分があれば、まったく気にせずにテクスチャメモリに直接データを書き込むようにglesに伝えることはできますか?
は注:これは唯一のフレームレートに影響を与えglTexSubImage2D
ある 、glSubBufferData
アップロードは全く影響を与えません。 テクスチャを使用して描画するときに実際にglTexSubImage2D
を実行すると、一部のデバイスではそれが表示されますが、すべてのデバイスではありません。
「...ただ同期せずにストレートテクスチャメモリにデータを書き込むことができますか」?私がテクスチャについて知っている方法はなく、バッファのみです。 – solidpixel
はい、gles 3.2、またはもちろんvulkanで使用可能なテクスチャバッファでは可能です:( –