C ++ Visual Studio 2008フォームアプリケーションでOpenGLを使用していますが、ブール値がtrue / falseに設定されている場合、GLcontrolで3Dと2Dを切り替えたいと考えています。
3Dでの描画は正常に機能し、2Dでの描画は正常に機能します。問題は、あるものから別のものに切り替えるときに発生します。したがって、アプリケーションの描画を2Dで開始すると、3Dでも完全に機能しますが、実行中にブール値を変更しても、何も描画されません。
これが私が別のものに変更するコードです。
if(opciones->draw3D){
GL::MatrixMode(MatrixMode::Modelview);
GL::LoadIdentity();
GL::Viewport(0, 0, w, h);
Matrix4 lookat = Matrix4::LookAt(100, 100, 100, 0, 0, 0, 0, 0, 1);
GL::LoadMatrix(lookat);
GL::Scale(this->zoom, this->zoom, this->zoom);
GL::Rotate(xrot, 1.0f, 0.0f, 0.0f);
GL::Rotate(yrot, 0.0f, 1.0f, 0.0f);
GL::Clear(ClearBufferMask::ColorBufferBit | ClearBufferMask::DepthBufferBit);
GL::ClearColor(Color::LightGray);
// Draw3D
}
else {
GL::MatrixMode(MatrixMode::Projection);
GL::LoadIdentity();
GL::Ortho(5, w-5, 5, h-5, -1, 1);
GL::Viewport(5, 5, w-5, h-5);
GL::Clear(ClearBufferMask::ColorBufferBit|ClearBufferMask::DepthBufferBit);
GL::ClearColor(Color::LightGray);
GL::MatrixMode(MatrixMode::Modelview);
GL::LoadIdentity();
// Draw 2D
}
何が悪いのかわかりませんが、前に言ったように、変数が最初にあるときは完全に描画され、変数が最初にあるときは完全に描画されるため、行列などをクリアしないと思いdraw3D==true
ますdraw3D==false
2Dではありますが、実行時の変更により機能しなくなります。