Я использую OpenGL в приложении Visual C++ Visual Studio 2008, и я хочу, чтобы GLcontrol переключался между 3D и 2D, когда bool имеет значение true/false.C++ OpenGL переключение с 2D на 3D
Чертеж в 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, но изменение во время выполнения делает ее неработоспособной.
, когда вы измените значение draw3D на исходное значение до его начального значения, затем оно снова работает или больше ничего не работает после того, как этот флаг изменился? – catchmeifyoutry