Witam.
Mam taki problem. Mam jedno okno główne, a w nim okno podrzędne. Przedstawione poniżej rozwiązanie działa, udaje mi się najpierw rysować scenę w oknie głównym (tutaj akurat na razie tylko ustawiam kolor tła), potem rysuję w drugim oknie. Zamiana rysowania między oknami zachodzi za pomocą wglMakeCurrent i przypisania HDC do odpowiedniego okna. Okna posiadają osobne klasy i procedury okienkowe.
Jednak jest to strasznie nie wydajne rozwiązanie (nie wiem czemu). Na komputerach średniej klasy program się bardzo ścina, grafika i samo okno podczas przesuwania haczy.
Tutaj widać pętle główną:
/*************************************************************
************* RYSOWANIE W OKNO_GRAFIKI ***************
*************************************************************/
g_HDC = GetDC(okno_grafiki);
g_hRC = wglCreateContext(g_HDC);
SetupPixelFormat(g_HDC);
wglMakeCurrent(g_HDC, g_hRC);
SelectObject(g_HDC, hCzcionka);
wglUseFontBitmaps(g_HDC, 32, 96, base);
UstawieniaOknoGrafiki();
Kamera();
RysujOknoGrafiki();
/* **************** Czyszczenie ******************** */
wglMakeCurrent(g_HDC, NULL);
wglDeleteContext(g_hRC);
ReleaseDC(okno_grafiki, g_HDC);
/*************************************************************
************* RYSOWANIE W OKNO_GLOWNE ****************
*************************************************************/
g_HDC = GetDC(okno_glowne);
g_hRC = wglCreateContext(g_HDC);
SetupPixelFormat(g_HDC);
wglMakeCurrent(g_HDC, g_hRC);
SelectObject(g_HDC, hCzcionka);
wglUseFontBitmaps(g_HDC, 32, 96, base);
RysujOknoGlowne();
/* **************** Czyszczenie ******************** */
wglMakeCurrent(g_HDC, NULL);
wglDeleteContext(g_hRC);
ReleaseDC(okno_glowne, g_HDC);
TranslateMessage(&msg);
DispatchMessage(&msg);
Sleep(1);
Teraz pytanie. Co robię źle, że to praktycznie na komputerze Intel Core Duo 2,2, Geforce 8600 GTS, 2GB DDR2 chodzi, a na kompie AMD 2,1, Radeon 9660, 512 DDR ni hu hu.
Obserwacja:
Wylączając rysowanie w oknie głównym program zaczyna działać na słabych komputerach i znacznie polepsza się jego wydajność, co obserwuję ruszając ramionami robota (to żółte :P). Więc coś jest nie tak z tym przełączaniem się po oknach.
Innym pomysłem jest zrobienie tego w 1 oknie, ale nie za bardzo wiem, czy da się/ lub jak to zrobić aby rysować najpierw po całym oknie przyciski(teraz to okno główne), a potem w kawałku okna rysując samą animacje robota.