0

私の質問は:

平行移動または回転後に頂点の座標を取得する方法はありますか?

例: x = 10、y = 10、z = 0

glTranslate または glRotate への一連の呼び出しの後、x、y、および z の実際のステータスを知るにはどうすればよいですか?

ありがとう。

4

1 に答える 1

4

これは不可能です... opengl は頂点データを GPU に送信し、GPU でのみ変換後にそれらを取得できます。

変換された頂点を取得するには、自分で行列を乗算する必要があります

for each vertex:
   vertex_transformed = matrix * vertex

古いOpenGLで:

glGetFloatv(GL_MODELVIEW_MATRIX, m);
x = pos.x*m[0] + pos.y*m[4] + pos.z*m[8] + m[12];
y = pos.x*m[1] + pos.y*m[5] + pos.z*m[9] + m[13];
z = pos.x*m[2] + pos.y*m[6] + pos.z*m[10] + m[14];

いくつかのより高度な方法は、変換フィードバックを使用して、変換された頂点をバッファーに格納することです (ただし、このバッファーは GPU に格納されます)。

于 2012-05-21T13:47:25.380 に答える