Openglで次のコードを実装して、モデルのズームインとズームアウトを行いました。残念なことに、それは正射影投影では期待通りには表示されません。 「+」または「 - 」をクリックして、視点から直交に切り替えると、ズームインおよびズームアウトするときに1つのステップしか表示されません。私が直交から視点に切り替えると、ズームインとズームアウトが行われます。「+」をクリックするだけでズームイン/ズームアウトし、キー「 - 」はまったく動作しません。正投影投影ではズームアウトが機能しません
誰かが助けることができますか?前もって感謝します。
glm::mat4 view = glm::lookAt(glm::vec3(4, 4, -3), glm::vec3(0, 1, 0), glm::vec3(0, 1, 0));
glm::mat4 projection = glm::perspective(45.0f, 4.0f/3.0f, 0.2f, 1000.0f);
float zoom = 0.5236f;
case 'w':
if (!(perspective)){
projection = glm::perspective(zoom, 1.0f, 0.1f, 1000.0f);
perspective = true;
}
break;
case 's':
if (perspective){
projection = glm::ortho(-1.0f, 1.0f, -1.0f, 1.0f, -1000.0f, 1000.0f);
perspective = false;
}
break;
case '+':
if (zoom >= 0.0236){
if (perspective){
//step of zooming
zoom = zoom - 0.5;
zoom -= 0.1f;
projection = glm::perspective(zoom, 1.0f, 0.1f, 1000.0f);
}
else{
//step of zooming
zoom = zoom - 500;
zoom -= 0.1f;
projection = glm::ortho(-0.1 - zoom, 0.1 + zoom, -0.1 - zoom, 0.1 + zoom, -1000.0, 1000.0);
}
}
break;
case '-':
if (zoom <= 3.0236f){
if (perspective){
// step of zooming
zoom = zoom + 0.5;
zoom += 0.1f;
projection = glm::perspective(zoom, 1.0f, 0.1f, 1000.0f);
}
else{
//step of zooming
zoom = zoom + 500;
zoom += 0.1f;
projection = glm::ortho(-0.1 - zoom, 0.1 + zoom, -0.1 - zoom, 0.1 + zoom, -1000.0, 1000.0);
}
}
break;
}
[オルトとperspecive問題間のOpenGLスイッチング]の可能な複製(https://stackoverflow.com/questions/44710262/opengl-switching-between-orth-and-perspecive-problems) – Ripi2