dmx81 Temat założony przez niniejszego użytkownika |
[OpenGL +Qt] tworze nowy projekt, a laduje sie stary... » 2010-10-25 22:47:02 tworze nowy projekt, calkiem czysty, buduje, aby sprawdzic czy wszystko dobrze poustawialem (praktycznie jest pusty) - a laduje sie poprzedni projekt, mimo zamkniecia programu(kreatora) i uruchomienia ponownie (wybieram utworz nowy projekt...i znowu mam poprzedni), co jest nie tak?
PS>> juz rozwiazalem, w nowym jeszcze nie bylo czyszczenia bufora (swoja droga, nie wiedzialem, ze cos tam trzyma po zamknieciu programu, jak temu zapobiec, czyscic przez glClear(...)?? czy jakos inaczej? |
|
VND |
» 2010-10-26 00:24:14 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); |
|
dmx81 Temat założony przez niniejszego użytkownika |
» 2010-10-26 00:34:17 tak, uzywam tego, ale w paintGL() na poczatku funkcji, czyli przed narysowaniem ... czy powinienem uzyc tego, wychodzac z programu? |
|
VND |
» 2010-10-26 02:36:39 Powinieneś to mieć jako pierwszą instrukcję funkcji rysującej. Czyścisz tylny bufor zawsze przed narysowaniem kolejnej klatki, aby rysować na "czystej kartce papieru" bez śmieci z poprzedniego rysowania.
Jeśli w programie wykonasz SwapBuffers() przed wyczyszczeniem to dostaniesz właśnie taki efekt jak opisałeś. Wtedy dodatkowo wyczyść bufor wcześniej np: w InitGL() czy podobnej.
|
|
dmx81 Temat założony przez niniejszego użytkownika |
» 2010-10-26 08:42:58 rozumiem :) i tak wlasnie robie, glClear(bufory color i depth) i rysuje po "czystej" kartce, ale chodzi mi jeszcze o cos innego - o to, czy wychodzac z programu nie powinno byc to usuniete rowniez z bufora? bo skoro wylacze program, zalacze od nowa inny, ktory jeszcze nic nie rysuje, a w buforze siedzi obraz z poprzedniego programu, to chyba zle?bo zajmuje ciagle pamiec? czy to raczej normalna sprawa, ze moze sobie tam siedziec , az do momentu, kiedy inny program bedzie chcial uzyc bufora(i sam go sobie posprzata ?) mam nadzieje, ze wiesz, o co mi chodzi, dzieki
(ps. tu jawnie nie uzywam swapBuffers(), okno QGLWidget pewnie zalatwia sprawe - daje tylko repaint() przy eventach, ew. mozna uzyt timerow i polaczyc timeout z repaint() - taki mechanizm znam w Qt) |
|
VND |
» 2010-10-27 00:21:31 O czyszczenie martwi się uruchomiony program. Ty nie tworzysz tych buforów, ani nie likwidujesz co najwyżej wypełniasz wartościami jakie ustawisz w glClear'NazwaBufora'. Tak czy siak coś tam zawsze jest. O poprawne wyświetlanie - czyli np: nie przełączanie buforów przed wyczyszczeniem, martwi się aktualnie uruchomiona aplikacja.
Nie używam Qt, o SwapBuffers wspomniałem, bo tak czy inaczej kiedyś musisz to wywołać jawnie czy nie (inaczej nic nie zobaczysz) ;) Chyba, że używasz trybu bez back-buffora, ale nie sądzę. |
|
« 1 » |