/* ** 透視投影変換行列を求める */ void perspectiveMatrix(float left, float right, float bottom, float top, float near, float far, GLfloat *matrix) { float dx = right - left; float dy = top - bottom; float dz = far - near; /* ** dx, dy, dz は 0 になる可能性があるけど, ** ここでエラー処理をするかどうかはご自由に. */ matrix[ 0] = 2.0f * near / dx; matrix[ 5] = 2.0f * near / dy; matrix[ 8] = (right + left) / dx; matrix[ 9] = (top + bottom) / dy; matrix[10] = -(far + near) / dz; matrix[11] = -1.0f; matrix[14] = -2.0f * far * near / dz; matrix[ 1] = matrix[ 2] = matrix[ 3] = matrix[ 4] = matrix[ 6] = matrix[ 7] = matrix[12] = matrix[13] = matrix[15] = 0.0f; }