2

openGLでテクスチャを操作して並列計算を実行しようとしています(openCLはオプションではありません)。ドメインは左下から各軸で0.0から1.0であることを理解しています。ただし、レンダリング中のピクセルの座標は、ピクセルの左上隅にマップされますか、それともピクセルの中央にマップされますか?

元。100x100pxのテクスチャがある場合。左上のピクセルの座標は(0.0,1.0)ですか、それとも(0.005,0.995)ですか?前者だと思っていたのですが、意外な結果が出ています。「ピクセル境界」のデータにアクセスしていて、openGLが2つの隣接するピクセルを平均している値に補間しているのではないかと思います。

4

2 に答える 2

4

OpenGLピクセル/フラグメントは、概念的には半整数ピクセルを中心とする1x1の正方形です。OpenGL4.5仕様には次のように記載されています。

フラグメントは、整数グリッド座標上にある左下隅にあります。ラスタライズ操作は、フラグメントの中心も参照します。これは、左下隅から(1 / 2,1 / 2)オフセットされています(したがって、半整数座標上にあります)。

したがって、100x100ピクセルの場合、テクセル間の水平距離は1/100=0.01です。したがって、左端と最初のテクセル中心の間の距離は0.01 / 2=0.005です。

左下隅からの最初の垂直テクセル中心も0.005であるため、上から最初のテクセル中心は1.0-0.005=0.995です。

それがあなたがそれらの数字を得る理由です。

詳細については、ここで私の投稿を参照してください(最後に向かってtex座標のもの)。

于 2014-08-24T02:35:36.790 に答える
0

ピクセルの中心は実際には後者、つまり(0.005,0.995)です。

GL_NEARESTNicol Bolasがコメントで述べたように、テクスチャを作成するときにフィルタリング方法を変更することで、openglがピクセル間で補間するのを防ぐことができます。

于 2013-02-06T22:07:26.500 に答える