OpenGLのパースペクティブプロジェクションマトリックスを作成しようとしています。私はそれをどのように行うかを知っていますfloat[16]
が、一貫性を保つために、固有行列を使用したいと思います。
式は次のとおりです。
[ xScale 0 0 0 ]
P = [ 0 yScale 0 0 ]
[ 0 0 -(zFar+zNear)/(zFar-zNear) -2*zNear*zFar/(zFar-zNear) ]
[ 0 0 -1 0 ]
どこ:
yScale = cot(fovY/2)
xScale = yScale/aspectRatio
式は列優先であり、c配列は行優先で定義されているため、次のようにfloat[16]
行列を定義します。
float P[16] = {
xScale, 0, 0, 0,
0, yScale, 0, 0,
0, 0, -(zFar+zNear)/(zFar-zNear), -1
0, 0, -2*zNear*zFar/(zFar-zNear), 0
};
では、Eigenを使用してこのような行列をどのように正確に作成しますか?Eigen::Affine3f
またはを使用しEigen::Matrix4f
ますか?ドキュメントを見ると、 個々のセルの値を設定する方法がわかりません。