8

私は現在、OpenGLを使用して科学画像アプリケーションをプログラミングしています。

私のコード(C ++ / OpenGLおよび単純なGLSL)がさまざまなハードウェア(ATIとNVidia、さまざまなNVidia世代、さまざまなOS)で実行されたときに、OpenGLレンダリング(FBOから取得されたピクセルに関して)が完全に決定論的であると想定されるかどうかを知りたいです)?

より正確には、任意のハードウェア(基本的なGLSLおよびOpenGL 3.0を実行できる)でコードを実行するたびに、まったく同じピクセルバッファーが必要になります...

それは可能ですか?考慮すべきアドバイスはありますか?

それが不可能な場合、ホストOSを変更しながらそれを実行できる特定のブランドのビデオカード(おそらくQuadro?)はありますか?

4

3 に答える 3

5

OpenGL 仕様 (バージョン 2.1 付録 A) から:

OpenGL 仕様は正確なピクセルではありません。したがって、異なる GL 実装によって生成された画像間の正確な一致は保証されません。ただし、仕様では、場合によっては、同じ実装によって生成された画像の正確な一致が指定されています。

すべてのアンチエイリアシングとテクスチャリングを無効にすると、プラットフォーム間で一貫した結果が得られる可能性が高くなります。ただし、アンチエイリアシングやテクスチャリング、または 100% ピクセル パーフェクトな保証が必要な場合は、ソフトウェア レンダリングのみを使用してください: http://www.mesa3d.org/

于 2011-10-27T21:37:33.633 に答える
2

「決定論的」とは、(言葉が実際に意味するものではなく)あなたが言ったことを意味していると仮定します。つまり、クロスプラットフォームでピクセル同一の結果を得ることができるということです。

いいえ、チャンスではありません。

グラフィックス ドライバーのアプリケーションで設定を変更するだけで、レンダリングから得られるピクセル結果を変更できます。同じハードウェアのドライバー リビジョンによって、得られるものが変わる可能性があります。

OpenGL 仕様は、ピクセル パーフェクトな結果を要求したことはありません。特にアンチエイリアシングとテクスチャ フィルタリングは曖昧な部分です。

于 2011-10-27T21:29:58.280 に答える
0

OpenGL 仕様を一読すると、実装が標準に準拠するために満たさなければならない決定論的な条件が多数ありますが、ハードウェア ベンダーに完全に委ねられているかなりの数の実装の詳細もあります /ドライバー開発者。決定論的/不変のカテゴリに分類される信じられないほど基本的なテクニック (フィルター処理されたテクスチャリング、アンチエイリアシング、ライティング、シェーダーなどを使用できなくなると思います) を使用してレンダリングしない限り、標準では、異なるハードウェアや異なるドライバー間でかなりの違いが許容されます。同じハードウェア上。

于 2011-10-27T21:29:33.783 に答える