3DOpenGLプロジェクトのCameraクラスを作成しようとしています。しかし、実際にカメラを自分のシーンに適用する方法がわかりません。私はこれらのカメラ機能を持っています(とりわけ):
void Camera::update(){
glm::vec3 direction(cos(_verticalAngle) * sin(_horizontalAngle), sin(_verticalAngle), cos(_verticalAngle) * cos(_horizontalAngle));
glm::vec3 right = glm::vec3(sin(_horizontalAngle - 3.14f/2.0f), 0, cos(_horizontalAngle - 3.14f/2.0f));
glm::vec3 up = glm::cross(right, direction);
_projectionMatrix = glm::perspective(_FoV, float(VIEWPORT_X) / float(VIEWPORT_Y), 0.1f, 250.0f);
_viewMatrix = glm::lookAt(_position, _position + direction, up);
}
glm::mat4 Camera::getProjectionMatrix(){
return _projectionMatrix;
}
glm::mat4 Camera::getViewMatrix(){
return _viewMatrix;
}
それらはチュートリアルから作成されましたが、テストできないため、機能するかどうかはわかりません。私がやりたいのは、OpenGLにビューと投影行列を使用してカメラをシミュレートさせることです。モデルの変換とは別にカメラを適切にシミュレートするために、これらの投影行列とビュー行列を使用するようにOpenGLにどのように正確に指示しますか?OpenGLがデフォルトでglm行列を受け入れないことは知っていますが、いくつかのチュートリアルでこのタイプのことを見てきました。
glm::mat4 ProjectionMatrix = getProjectionMatrix();
glm::mat4 ViewMatrix = getViewMatrix();
glm::mat4 ModelMatrix = glm::mat4(1.0);
glm::mat4 MVP = ProjectionMatrix * ViewMatrix * ModelMatrix;
glUniformMatrix4fv(MatrixID, 1, GL_FALSE, &MVP[0][0]);
しかし、glUniformMatrix4fv(これはカメラ変換を適用すると思いますか?)は私には意味がありません。それは常にシェーダーと関係がありますが、私にはありません。私は現在、ワイヤーフレームテストメッシュを持っています。誰かがこの問題のコードスニペットを教えてもらえますか?