Brainer Napisano Listopad 16, 2007 Zgłoś Share Napisano Listopad 16, 2007 Witam. EDIT: Poradziłem sobie z tym - po prostu brakowało DLLa w systemie. Ale problem mam inny - nie mogę skorzystać z OpenGL. Inicjalizuję ekran tym kodem: constructor TBaseEngine.Create; begin FLastTick := 0; FWidth := 800; FHeight := 600; FTitle := ''; FScreen := nil; FFPSTickCounter := 0; FFPSCounter := 0; FCurrentFPS := 0; FMinimized := False; InitOpenGL(); FVideoFlags := SDL_OPENGL; FVideoFlags := FVideoFlags or SDL_DOUBLEBUF; FVideoFlags := FVideoFlags or SDL_HWPALETTE; FVideoFlags := FVideoFlags or SDL_SWSURFACE; FVideoFlags := FVideoFlags or SDL_RESIZABLE; end; I po próbie stworzenia okna wywala mi AV... :| Co zrobić? .: Brainer :. patrick.nusbaum@gmail.com Link do komentarza Udostępnij na innych stronach More sharing options...
TSr Napisano Listopad 17, 2007 Zgłoś Share Napisano Listopad 17, 2007 Zapodaje konstruktor z jednej mojej klasy, którą zacząłem pisać. W taki sposób podręcznikowo uruchamia sie OpenGl pod kontrolą SDL. Dopiero po tym można wywołać InitGL (chyba nie InitOpenGL). Bardziej rozbudowane (chyba lepsze) przykłady są w demach od JEDI-SDL. constructor TGraphMngr.Create(AWidth, AHeight: Cardinal); begin fWidth := AWidth; fHeight := AHeight; fVideoInfo := nil; if ( SDL_Init( SDL_INIT_VIDEO ) < 0 ) then begin ShowMessage (Format('Video initialization failed : %s', [SDL_GetError])); end; fVideoInfo := SDL_GetVideoInfo; if ( fVideoInfo = nil ) then begin ShowMessage(Format('Video query failed : %s', [SDL_GetError])); end; fBPP := fVideoInfo^.vfmt^.BitsPerPixel; SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 5 ); SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 5 ); SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 5 ); SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 ); SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); fFlags := SDL_OPENGL {or SDL_FULLSCREEN}; if ( SDL_SetVideoMode( fWidth, fHeight, fBPP, fFlags ) = nil ) then begin ShowMessage(Format('Video mode set failed : %s', [SDL_GetError])); end; end; Ubuntu.pl user #10593 Link do komentarza Udostępnij na innych stronach More sharing options...
Brainer Napisano Listopad 17, 2007 Autor Zgłoś Share Napisano Listopad 17, 2007 Okazało się, że problem leżał w inicjalizacji biblioteki dglOpenGL. Po prostu w klasie dziedziczącej z TBaseEngine brakowało mi dwóch ostatnich linijek kodu: procedure TTestEngine.AdditionalInit; begin InitOpenGL(); ReadExtensions(); ReadImplementationProperties(); end; Tak czy siak, dzięki za pomoc TSr. .: Brainer :. patrick.nusbaum@gmail.com Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.