Pokaż wyniki 1 do 3 z 3

Temat: Dodanie tylko kilka linijek do kodu --> pilnie

  1. #1

    Exclamation Dodanie tylko kilka linijek do kodu --> pilnie

    Mam pytanie --> mógłby mi ktoś do tego kodu co zaraz dam dodać taka opcję jak:
    Zapytanie uzytkownika o to czy włączyć fullscreen : Yes, No --> jesli yes to sie włączy jesli no to nie
    Oto kod:
    Kod:
    #define WIN32_LEAN_AND_MEAN
    
    /////////////////////
    //Pliki nazgłówkowe//
    /////////////////////
    #include<windows.h>
    #include<gl/gl.h>
    #include<gl/glu.h>
    #include<gl/glaux.h>
    
    ////////////////////
    //Zmienne globalne//
    ////////////////////
    bool fullScreen = true; //aplikacja rozpocznie sie w trybie pelnoekranowym
    float angle=0.0f;
    HDC g_HDC;              //kontekst urządzenia
    
    ///////////////////////////////////////////////////////////////
    //funkcja okreslająca format pikseli dla kontekstu urządzenia//
    ///////////////////////////////////////////////////////////////
    void SetupPixelFormat(HDC hDC)
    {
    int nPixelFormat;
    static PIXELFORMATDESCRIPTOR pfd = {
    sizeof(PIXELFORMATDESCRIPTOR), //rozmiar struktury
    1,                              //domyslna wersja
    PFD_DRAW_TO_WINDOW|             //grafika w oknie
    PFD_SUPPORT_OPENGL|             //grafika w Opengl
    PFD_DOUBLEBUFFER,               //podwójne buforowanie
    PFD_TYPE_RGBA,                  //tryb kolorów RGBA
    32,                             //32-bitowy opsi kolorów
    0, 0, 0, 0, 0, 0,               //nie specyfikuje bitów kolorów
    0,                              //bez bufora alfa
    0,                              //ignoruje bit przesuniecia
    0,                              //bez bufora akumulacji
    0, 0, 0, 0,                     //ignoruje bity akumulacji
    16,                             //16-bitowy bufor Z
    0,                              //bez bufora powielania
    0,                              //bez buforów pomocniczych
    PFD_MAIN_PLANE,                 //główna płaszczyzna rysowania
    0,                              //zarezerwowane
    0, 0, 0,};                      //ignoruje maski warstw
    
    //wybiera najodpowiedniejszy format pixeli
    nPixelFormat = ChoosePixelFormat(hDC, &pfd);
    
    //okresla format pixeli dla kontekstu urządzenia
    SetPixelFormat(hDC, nPixelFormat, &pfd);
    }
    
    //////////////////////
    //procedura okinkowa//
    //////////////////////
    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    static HGLRC hRC;         //kontekst tworzenia grafiki
    static HDC hDC;           //kontekst urzadzenia
    int width, height;        //szerokosc i wysokos okna
    
    switch(message)
    {
    case WM_CREATE:           //okno jest tworzone
    hDC = GetDC(hwnd);        //pobiera kontekst urządzenia dla okna
    g_HDC = hDC;
    SetupPixelFormat(hDC);    //wywołuje funkcję okreslająca format pixeli
    //tworzy kontekst tworzenia grafiki i czyni go bieżącym
    hRC = wglCreateContext(hDC);
    wglMakeCurrent(hDC, hRC);
    return 0;
    break;
    
    case WM_CLOSE:            //okno jest zamykane
    //dezaktywuje bieżący kontekst i usuwa go
    wglMakeCurrent(hDC, NULL);
    wglDeleteContext(hRC);
    //wstaiwa komunikat WM_QUIT do kolejki
    PostQuitMessage(0);
    return 0;
    break;
    
    case WM_SIZE:
    height = HIWORD(lParam);  //pobiera nową wysokosc i szerokos okna
    width = LOWORD(lParam);
    
    if (height==0){height =1;}
    //nadaje nowe wymiary oknu  OpenGl
    glViewport(0, 0, width, height);
    //okresla macierz rzutowania
    glMatrixMode(GL_PROJECTION);
    //resetuje macierz rzutowania
    glLoadIdentity();
    //wyznacza proporcje obrazu
    gluPerspective(45,(GLfloat)width/(GLfloat)height,1,1000);
    glMatrixMode(GL_MODELVIEW); //okresla macierz widoku modelu
    glLoadIdentity();
    return 0;
    break;
    
    default:
    break;
    }
    
    return (DefWindowProc(hwnd, message, wParam, lParam));
    }
    
    ///////////////////////////////////////////////////////
    //punkt w którym rozpoczyna sie wykonwyanie aplikacji//
    ///////////////////////////////////////////////////////
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {
    WNDCLASSEX windowClass;    //klasa okien
    HWND hwnd;                 //uchwyt okna
    MSG msg;                   //komunikat
    bool done;                 //znacznik zakonczenia aplikacji
    
    //definicja klasy okna
    windowClass.cbSize= sizeof(WNDCLASSEX);
    windowClass.style= CS_HREDRAW | CS_VREDRAW;
    windowClass.lpfnWndProc= WndProc;
    windowClass.cbClsExtra= 0;
    windowClass.cbWndExtra= 0;
    windowClass.hInstance= hInstance;
    windowClass.hIcon= LoadIcon(NULL, IDI_APPLICATION);//domyslna ikona
    windowClass.hCursor= LoadCursor(NULL, IDC_ARROW);  //domyslny kursor
    windowClass.hbrBackground= NULL;                   //bez tła
    windowClass.lpszMenuName= NULL;                    //bez menu
    windowClass.lpszClassName= "Moja Klasa";
    windowClass.hIconSm= LoadIcon(NULL, IDI_WINLOGO);  //logo windows
    //rejestruje klasę okna
    if(!RegisterClassEx(&windowClass))
    return 0;
    
    //tworzy okno
    hwnd = CreateWindowEx(NULL,                          //rozszerzony styl okna
    "Moja Klasa",                                      //nazwa klasy
    "Aplikacja OpenGl",                                //nazwa aplikacji
    WS_OVERLAPPEDWINDOW | WS_VISIBLE |
    WS_SYSMENU | WS_CLIPCHILDREN|
    WS_CLIPSIBLINGS,                                   //styl
    100, 100,                                          //współrzędne x,y
    600, 600,                                          //szerokosc i wysokosc
    NULL,                                              //uchwyt okna nadrzędnego
    NULL,                                              //uchwyt menu
    hInstance,                                         //instancja aplikacji
    NULL);                                             //bez dodatkowych parametrów
    
    //sprawdza czy utworzenie okna nie powiodło się w przeciwnym razie hwnd ma wartosc NULL
    if (!hwnd)
    return 0;
    
    ShowWindow(hwnd, SW_SHOW);                          //wyswietla okno
    UpdateWindow(hwnd);                                 //aktualizuje onko
    done=false;                                         //inicjuje zmienna warunku wykonania pętli
    
    //petla przetwarzania komunikatów
    while(!done)
    {
    PeekMessage(&msg, hwnd, NULL, NULL, PM_REMOVE);
    if (msg.message == WM_QUIT)                         //otrzymano komunikat WM_QUIT?
    {
    done = true;
    }
    else
    {
    
    /////////////////////////////////////
    //tworzy grafike/////////////////////
    //zeruje bufor ekranu i bufor głębi//
    /////////////////////////////////////
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();                                   //resetuje macierz widoku modelu
    
    angle = angle+1.1f;
    if (angle >=360)
    angle =0.0f;
    glTranslatef(0,0,-5);
    glRotatef(angle,0,0,1);
    glColor3f(1,0,0);
    glBegin(GL_TRIANGLES);
    glVertex3f(0,0,0);
    glVertex3f(1,0,0);
    glVertex3f(1,1,0);
    glEnd();
    SwapBuffers(g_HDC);                                 //przełącza bufory
    TranslateMessage(&msg);                             //tłumaczy komunikat i wysyła go do systemu
    DispatchMessage(&msg);
    }
    }
    return msg.wParam;
    }
    Za pomoc z góry dzieki

  2. #2
    Zarejestrowany
    Dec 2006
    Skąd
    Kielce
    Postów
    1,767

    Domyślnie

    polecam spróbować na jakimś forum zajmującym się programowaniem...
    najlepsze jakie znam to coderscity.net - prawie jak nie reklama...
    Agencja reklamy kielce (mały kilkudniowy case pozycjonerski )

  3. #3
    Zarejestrowany
    Feb 2007
    Skąd
    Kielce
    Postów
    131

    Domyślnie

    na samym poczatku funkcji glownej wywalasz pytanie i zczytujesz wybor ze strumienia oraz przypisujesz go z tego co widze zmiennej Fullscreen

    --------
    edit

    przyjrzalem sie troche i nie widze aby ta zmienna byla wogole uzywana, jesli chcesz stworzyc okno na caly ekran to przy wywolywaniu funkcji CreateWindowEx (polecam rozszerzone wersje - Ex na to wskazuje) we wspolrzednych podajesz 0 i 0 a w szerokosci i wysokosci wartosci pobrane za pomoca funkcji GetDeviceCaps
    Ostatnio edytowane przez pierzu : 05-27-2007 - 22:03
    "W życiu wszystko ma jakiś sens, tylko trzeba go odnaleźć. No i często ma on odmienne znaczenie dla różnych osób."

Podobne wątki

  1. interpretacja kodu Python
    By father in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 13
    Autor: 08-18-2008, 19:11
  2. Odpowiedzi: 3
    Autor: 08-09-2007, 00:50
  3. kilka programów
    By Sardihan in forum Hacking
    Odpowiedzi: 0
    Autor: 01-06-2007, 22:40
  4. Pytań kilka
    By dzejson in forum Newbie - dla początkujących!
    Odpowiedzi: 2
    Autor: 12-27-2006, 13:38
  5. ściaganie plików "tylko" dla użytkowników
    By kebab11 in forum Newbie - dla początkujących!
    Odpowiedzi: 13
    Autor: 12-13-2006, 09:09

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj