Amakesh Temat założony przez niniejszego użytkownika |
[C][OpenGL] Przesuwanie obiektu wzdłuż krawędzi okna » 2014-04-12 20:51:13 Witam! Udało mi się wyświetlić zielony kwadrat w wybranym miejscu i przesunąć go w prawo wzdłuż górnej krawędzi okna a potem w dół wzdłuż prawej krawędzi okna. Dalej chciałabym ten kwadrat przesunąć jeszcze w lewo wzdłuż dolnej krawędzi okna i do góry wzdłuż lewej krawędzi, tak żeby wrócił do miejsca startu i "zapętlić" żeby działało to "w kółko". Jednak za żadne skarby nie umiem tego kwadratu przesunąć wzdłuż dolnej krawędzi i dalej. float t, k, R, G, B; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow ) { WNDCLASS wc; HWND hWnd; HDC hDC; HGLRC hRC; MSG msg; BOOL bQuit = FALSE; float theta = 0.0f; wc.style = CS_OWNDC; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground =( HBRUSH ) GetStockObject( BLACK_BRUSH ); wc.lpszMenuName = NULL; wc.lpszClassName = "GLSample"; RegisterClass( & wc ); hWnd = CreateWindow( "GLSample", "OpenGL Sample", WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE, 0, 0, 500, 500, NULL, NULL, hInstance, NULL ); EnableOpenGL( hWnd, & hDC, & hRC ); while( !bQuit ) { if( PeekMessage( & msg, NULL, 0, 0, PM_REMOVE ) ) { if( msg.message == WM_QUIT ) { bQuit = TRUE; } else { TranslateMessage( & msg ); DispatchMessage( & msg ); } } else { glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); glClear( GL_COLOR_BUFFER_BIT ); glPushMatrix(); if( t < 1.5 ) { R = 0.0f; G = 1.0f; B = 0.0f; glTranslatef( t, 0.0f, 0.0f ); } if( t > 1.5 ) { R = 1.0f; G = 0.0f; B = 0.0f; glTranslatef( 1.5f, 1.5f - t, 0.0f ); } if( t > 3.0 ) { R = 0.5f; G = 0.5f; B = 1.0f; glTranslatef( 1.5f - t, 0.0f, 0.0f ); } if( t > 4.5 ) { R = 1.0f; G = 1.0f; B = 0.0f; glTranslatef( - 1.0f, t, 0.0f ); } glBegin( GL_QUADS ); glVertex3f( - 1.0f, 1.0f, 0.0f ); glColor3f( R, G, B ); glVertex3f( - 0.5f, 1.0f, 0.0f ); glVertex3f( - 0.5f, 0.5f, 0.0f ); glVertex3f( - 1.0f, 0.5f, 0.0f ); glEnd(); glPopMatrix(); SwapBuffers( hDC ); t += 0.005; k += 1.0; Sleep( 1 ); } } DisableOpenGL( hWnd, hDC, hRC ); DestroyWindow( hWnd ); return msg.wParam; }
|