Всем доброго времени суток! Есть такая проблема: создаю два контекста отображения - для формы и для TPanel, которая находится на форме. В FormPaint по очереди выделяю контексты изображения (wglMakeCurrent), рисую в них, затем очищаю буфер. При этом в первом контексте изображение рисуется, а во втором на TPanel - нет. Но если вызывать событие Paint для формы по таймеру, то изображение на TPanel все же появляется. Так же оно появляется и в том случае, если Paint для формы вызывать по клику мыши.
Буду очень, очень благодарна, если кто-нибудь поможет мне разобраться, в чем тут дело и как это исправить.
Вот код функции FormPaint для формы. void __fastcall TForm1::FormPaint(TObject *Sender) { wglMakeCurrent(hDC, ghRC); //в этом контексте изображение отрисовка происходит нормально glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); glBegin(GL_LINES); glColor3ub(255, 255, 0); //x glVertex3f(-50, 0, 0); glVertex3f(50, 0, 0);
glColor3ub(255, 0, 0); //y glVertex3f(0, 50, 0); glVertex3f(0, -50, 0);
glColor3ub(255, 255, 255);//z glVertex3f(0, 0, 50); glVertex3f(0, 0, -50); glEnd(); SwapBuffers(hDC);
wglMakeCurrent(hDC1, ghRC1); //в этом случае на TPanel не отображается даже "черный экран" glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); glBegin(GL_LINES); glColor3ub(255, 255, 0); //x glVertex3f(-50, 0, 0); glVertex3f(50, 0, 0);
glColor3ub(255, 0, 0); //y glVertex3f(0, 50, 0); glVertex3f(0, -50, 0);
glColor3ub(255, 255, 255);//z glVertex3f(0, 0, 50); glVertex3f(0, 0, -50); glEnd(); SwapBuffers(hDC1); }
|