Lukasz69 Napisano Styczeń 4, 2007 Zgłoszenie Share Napisano Styczeń 4, 2007 Zaczalem sie bawic w SDL + OpenGL we Free Pascalu. Mam problem - siedze nad tym juz 2 godziny i krew mnie zalewa - nic chyba sam nie wymysle wiec prosze o pomoc. Okno sie pojawia - SDL czyta klawisze i na esc wychodzi ale nie widze bryl ktore powinny zostac narysowane. Zapewne gdzies tam jest blad albo ja cos poknocilem - gdy daje gotowy ten tutorial dostarczony z headerami to program smiga - jednak moja wersja samodzielna troche okrojona juz nie dziala tak ladnie. Czemu? program test_sdl; uses sdl, gl, crt; procedure InitGL; begin glShadeModel(GL_SMOOTH); glClearColor(0.0,0.0,0.0,0.0); glClearDepth(1.0); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); end; procedure DrawGLScene; begin glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(-1.5,0.0,-6.0); glBegin(GL_TRIANGLES); glVertex3f(0.0,1.0,0.0); glVertex3f(-1.0,-1.0,0.0); glVertex3f(1.0,-1.0,0.0); glEnd(); glTranslatef(3.0,0.0,0.0); glBegin(GL_QUADS); glVertex3f(-1.0,1.0,0.0); glVertex3f(1.0,1.0,0.0); glVertex3f(1.0,-1.0,0.0); glVertex3f(-1.0,-1.0,0.0); glEnd(); SDL_GL_SwapBuffers(); end; var screen: PSDL_Surface; flags: Uint32; event:TSDL_Event; done: boolean; kl:Pchar; begin if SDL_Init(SDL_INIT_VIDEO)<0 then begin writeln('Wystapil blad inicjacji', SDL_GetError()); halt(1); end; SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8); flags:= SDL_OPENGL; screen:= SDL_SetVideoMode(1024, 756, 16, flags); if screen=nil then begin writeln('Wystapil blad inicjacji VIDEO', SDL_GetError()); halt(1); end; InitGL; done:=true; while done do begin SDL_WaitEvent(@event); case event.type_ of SDL_KEYDOWN : begin kl:=SDL_GetKeyName(event.key.keysym.sym); writeln('Nacisniet przycisk ',kl); if kl='escape' then done:=false; SDL_WM_SetCaption(kl,nil); end end; DrawGLScene; end; SDL_Quit(); end. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
broda Napisano Styczeń 5, 2007 Zgłoszenie Share Napisano Styczeń 5, 2007 bo pewne wyciales za duzo, wklej ten dzialajacy, przykladowy kod gdzies na pastebin, to zobaczymy dlaczego nie dziala Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Lukasz69 Napisano Styczeń 5, 2007 Autor Zgłoszenie Share Napisano Styczeń 5, 2007 Wczoraj siadlem do tego wieczorem i okazalo sie ze procedure wywolywana przy zmianie rozmiaru okna trzeba zostawic bo ona ustawia widok i perspektywe - za duzo wycialem - mam jednak nadzieje ze z biegiem czasu zalapie OpenGL. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
broda Napisano Styczeń 5, 2007 Zgłoszenie Share Napisano Styczeń 5, 2007 hehe, byłem tego pewien ogólnie jeśli nie potrzebujesz zmieniać rozmiaru okna to możesz spoko wrzucić te kilka linii do InitGL(), dodatkowo możesz w głównej pętli na końcu wstawić SDL_Delay(), żeby applikacja nie kosiła proca na 100% - to nieeleganckie, ale spadnie trochę wydajność pozdro Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Lukasz69 Napisano Styczeń 5, 2007 Autor Zgłoszenie Share Napisano Styczeń 5, 2007 Dzieki za podpowiedz. Z tym SDL_Delay tez dzieki. A jest jakis elegancki sposob niz SDL_Delay? W sumie nic jeszcze nie pisze powaznego ale na przyszlosc chce byc madrzejszy jak w dobry sposob opoznic petle. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
broda Napisano Styczeń 5, 2007 Zgłoszenie Share Napisano Styczeń 5, 2007 myśłe, że SDL_Delay() jest okej, Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się