Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C][OpenGL] Przesuwanie obiektu wzdłuż krawędzi okna

Ostatnio zmodyfikowano 2014-04-12 20:51
Autor Wiadomość
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.

C/C++
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;
   
    /* register window class */
    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 );
   
    /* create main window */
    hWnd = CreateWindow(
    "GLSample", "OpenGL Sample",
    WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE,
    0, 0, 500, 500,
    NULL, NULL, hInstance, NULL );
   
    /* enable OpenGL for the window */
    EnableOpenGL( hWnd, & hDC, & hRC );
   
    /* program main loop */
    while( !bQuit )
    {
        /* check for messages */
        if( PeekMessage( & msg, NULL, 0, 0, PM_REMOVE ) )
        {
            /* handle or dispatch messages */
            if( msg.message == WM_QUIT )
            {
                bQuit = TRUE;
            }
            else
            {
                TranslateMessage( & msg );
                DispatchMessage( & msg );
            }
        }
        else
        {
            /* OpenGL animation code goes here */
           
            glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
            glClear( GL_COLOR_BUFFER_BIT );
           
            // glLoadIdentity();
            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;
                //t+=0.002;
                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 );
            }
            // glTranslatef (0.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 );
            //glColor3f (0.0f, 1.0f, 0.0f);
            glVertex3f( - 0.5f, 0.5f, 0.0f );
            /*glColor3f (0.0f, 0.0f, 1.0f); */
            glVertex3f( - 1.0f, 0.5f, 0.0f );
            /*glColor3f (0.0f, 0.0f, 0.0f); */
            glEnd();
           
           
            glPopMatrix();
           
            SwapBuffers( hDC );
            t += 0.005;
            k += 1.0;
           
            Sleep( 1 );
        }
    }
   
    /* shutdown OpenGL */
    DisableOpenGL( hWnd, hDC, hRC );
   
    /* destroy the window explicitly */
    DestroyWindow( hWnd );
   
    return msg.wParam;
}
P-108077
« 1 »
  Strona 1 z 1