HPP返すために失敗:unique_ptrを
class Camera {
public:
Camera(float FOV, float nearPlane, float farPlane);
std::unique_ptr<glm::mat4x4> getProjectionMatrix();
private:
std::unique_ptr<glm::mat4x4> projectionMatrix;
};
CPP:2つのコメント行で
Camera::Camera(float FOV, float nearPlane, float farPlane) {
float aspectRatio = DisplayManager::displayWidth/DisplayManager::displayHeight;
projectionMatrix = std::make_unique<glm::mat4x4>();
*projectionMatrix = glm::perspective(FOV, aspectRatio, nearPlane, farPlane);
}
std::unique_ptr<glm::mat4x4> Camera::getProjectionMatrix() {
//std::unique_ptr<glm::mat4x4> projectionMatrix = std::make_unique<glm::mat4x4>();
//*projectionMatrix = glm::perspective(90.0f, 1.333f, 0.1f, 1000.0f);
return std::move(projectionMatrix);
}
ルック。プログラムはコメントアウトされているかどうかにかかわらずコンパイルされますが、そうであれば、データが破損します。
クラスのプライベートメンバーであるunique_ptrを返すゲッターを作成するにはどうすればよいですか? unique_ptrをコンストラクタで正しく設定するにはどうすればよいですか?
なぜあなたはしたいですか'unique_ptr'を何に使うのでしょうか? – Galik
その投影行列で何をやっていますか?オブザーバーポインターを代入するのではなく、オブザーバーポインターを返すことでうまくいくようです。 – krzaq
オブザーバーポインターも問題ありません。レンダラーに行列を渡してシェーダーにロードできるようにする必要があります。 – Karlovsky120