答えを探しましたが、まだ理解できる答えが見つからなかったので、深度バッファの値を計算する方法を尋ねています。
https://en.wikipedia.org/wiki/Z-bufferingでは
、画像としての式は次のとおりです。
ここでは私が書いています:
z' = (2^d -1 ) * ((遠 + 近)/(2 * (遠 - 近) + (1 / z) * (-遠 * 近) / (遠) - near) + 1/2) d が z バッファーの深さ (私の場合は 24 ビット) で、z が頂点の z 値の場合。
簡単なコードを書いて実行し、深度バッファ値を読み取って計算しようとしましたが、異なる回答が返ってきました。
私のコード例:
/* init */
#define CUBE_SIDE_SIZE 0.25
glViewport(0,0,WINDOW_WIDTH,WINDOW_HEIGHT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1, 1, -1, 1, -1, 1);
/* draw */
glEnable(GL_DEPTH_TEST);
glBegin(GL_QUADS);
glColor3f(1, 0, 0);
glVertex3f(-CUBE_SIDE_SIZE, -CUBE_SIDE_SIZE, -CUBE_SIDE_SIZE);
glVertex3f(-CUBE_SIDE_SIZE, CUBE_SIDE_SIZE, -CUBE_SIDE_SIZE);
glVertex3f(CUBE_SIDE_SIZE, CUBE_SIDE_SIZE, -CUBE_SIDE_SIZE);
glVertex3f(CUBE_SIDE_SIZE, -CUBE_SIDE_SIZE, -CUBE_SIDE_SIZE);
glEnd();
深度バッファ 0.375 値から読み取りました。計算でこの値を取得するにはどうすればよいですか?
ありがとう。