我在 C++ Visual Studio 2008 Forms 应用程序中使用 OpenGL,当布尔设置为真/假时,我希望 GL 控件在 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 中,但运行时的更改使其无法正常工作。