Красный прямоугольник, нарисованный на 2D текстуре, исчезает сразу после рисования

следуя моемуДругой вопросЯ предоставил код, который рисует прямоугольник следующим образом:

void COpenGLControl::DrawRectangleOnTopOfTexture()
{
wglMakeCurrent(hdc, hrc);
glPushAttrib(GL_ENABLE_BIT|GL_CURRENT_BIT);
glDisable(target);
glColor3f(1.0f,0.0f,0.0f);
glBegin(GL_LINE_LOOP);
   glVertex2f(RectangleToDraw.at(0),RectangleToDraw.at(1));
   glVertex2f(RectangleToDraw.at(0),RectangleToDraw.at(3));
   glVertex2f(RectangleToDraw.at(2),RectangleToDraw.at(3));
   glVertex2f(RectangleToDraw.at(2),RectangleToDraw.at(1));
glEnd();
glPopAttrib();
SwapBuffers(hdc);
wglMakeCurrent(NULL, NULL);
}  

void COpenGLControl::OnDraw(CDC *pDC)
{
// TODO: Camera controls
wglMakeCurrent(hdc,hrc);
glLoadIdentity();
gluLookAt(0,0,1,0,0,0,0,1,0);
glTranslatef(m_fPosX, m_fPosY, 0.0f);
glScalef(m_fZoom,m_fZoom,1.0);
setViewRectangle();
if (WantToDrawRectangle)
    DrawRectangleOnTopOfTexture();
wglMakeCurrent(NULL, NULL);
}  

проблема здесь в следующем:

красный прямоугольник исчезает сразу послеOnDraw возвращается. Я имею в виду, например, когда вы делаетеfixed zoom in или жеfixed zoom out при нажатии кнопки в диалоговом окне мигает красный прямоугольник, а затем сразу исчезает.

Или когда вы делаетеOnDraw запустить постоянно (например, вы панорамировать с высокой скоростью), вы получите что-то вроде этого:

конечно, красные прямоугольники удаляются (исчезают) через короткое время, но эта дорожка красных прямоугольников отображается в течение короткого периода времени?

Как сделать так, чтобы текущий красный прямоугольник отображался на текстуре до следующего вызова?OnDraw

Также, как я могу сделать текущий красный прямоугольник удаленным, как только следующий вызовOnDraw происходит?

Если на второй вопрос трудно ответить, пожалуйста, ответьте на первый вопрос. Очевидно, что если пользователь выполняет панорамирование с нормальной скоростью, эта дорожка прямоугольников выиграет.не будет показано.

Ответы на вопрос(1)

Ваш ответ на вопрос