PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sdl...



Woolf
26-01-2003, 20:49
he leuz, ich hab ein XXXXXL problem:
wenn ich n sdl proggy schreib
und das mit opengl mach dann is die fps immer unter NULL

wiiesooooo kann ich cube normal spieln (wouter.fov120.com/cube)
und zb folgendes fps=unta NULL:


log("SDL: Audio, Video");
if(SDL_Init(SDL_INIT_TIMER | SDL_INIT_VIDEO) < 0) fatal(ERR_SDL, "SDL Error: %s\n", SDL_GetError());

log("SDL: Video");
if(SDL_InitSubSystem(SDL_INIT_VIDEO)<0) fatal(ERR_SDL, "SDL Error: %s\n", SDL_GetError());

log("SDL-GL");
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
if((screen=SDL_SetVideoMode(scr_w, scr_h, 0, SDL_OPENGL | fs | SDL_HWSURFACE))==NULL) fatal(ERR_SDL, "SDL Error: %s\n", SDL_GetError());

log("Video: Misc");
SDL_WM_SetCaption("HENG v0.01", NULL);
SDL_WM_GrabInput(SDL_GRAB_ON);
keyrepeat(false);
SDL_ShowCursor(0);

gl_init(width, height);
({
glVieport(...)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glMatrixMode(GL_MODELVIEW)
glLoadidentity()
})

for(;;)
{
static float rot = 0.0f;
rot += 0.9f;

glEnable(GL_DEPTH_TEST);
glClearColor(0.5f, 0.6f, 0.7f, 1.0f);
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

glLoadIdentity();

glLoadIdentity();
glTranslatef(0.0f, 0.0f, -10.0f);
glRotatefrot, 0.0f, 0.0f, 1.0f);
glColor3f(0.4f, 0.5f, 0.6f);
glBegin(GL_QUADS);
glVertex3f(-0.5f, 0.5f, 0.0f);
glVertex3f( 0.5f, 0.5f, 0.0f);
glVertex3f( 0.5f,-0.5f, 0.0f);
glVertex3f(-0.5f,-0.5f, 0.0f);
glEnd();


SDL_GL_SwapBuffers();
}


fps = unter null

wenn ich den initprozess von cube kopier und verwend
fps = unter null

wenn ich die nehe codes für sdl probier
fps = unter null

wenn ich n utility wie zb cone3d fürs fensta erstelln und gl init benutz
fps = unter null

wenn ich allerdings cube (sogar neukompiliert) start
fps = 100


genaue codes brauch ich nicht zeigen
ich habs genau nach dem netten büchele gmacht
aber es geht einfach nicht

wer unbedingt will....
datei main.cpp upgeloaded
(bitte keine kommentare zum programmier stil - das is auch nur n test)

ich hab mal vor kurzem die gl treiber zamkaut und irgendwie neu draufgeschmissen
aba daran kanns eh ned liegn sonst würd cube nämlich auch ned gehn *fg*

EDIT by anda_skoa: Bitte bei langen Codestücken die Codetags benutzen.

ReSeT
29-01-2003, 11:32
Ich verstehe die Frage zwar nicht ganz, aber ich glaube es hat sich schonmal jemand mit diesem Problem auseinandergesetzt.

http://www.gametutorials.com/Tutorials/OpenGL/OpenGL_Pg1.htm

Schau Dir mal das letzte Beispiel auf der Seite an, das behandelt Time bzw. Framebased Movement mit der SDL.

Woolf
30-01-2003, 10:07
JO nochmal kurz erklärt:

Es scheint als würde mein komplettes programm software gerendert werden und meine grafikkarte überflüssig zuschaun...

obwohl sich jetz überhaupt nichts mehr vom rendering und sdl init prozess unterscheidet
so ein beispiel proggy funkt ja auch nicht richtig (meistens)

ReSeT
30-01-2003, 13:02
Könnt ich den Header auch noch haben? Ohne isses 'n bisschen doof.

Woolf
30-01-2003, 18:08
Also ich hab das problem schon so halbwegs gelöst (hab mit glx ein fenster erstellt...)
und dabei festgestellt:

Wenn ich mit -lX11 linke dann hab ich glX version 1.4
wenn ich nicht mit X11 sondern nur mit -lXxf86vm linke
hab ich glX 1.2

BEI 1.2 hab ich direct rendering

BEI 1.4 nicht

CUBE linkt nicht mit X11

aber irgendwie schon weils mit dem sdl config dann automatisch gelinkt wird
linkt nämlich zu gar keinem X... im makefile

Heißt dass jetz dass meine grafik treiber zu alt sind?

Wenn ich jetz statt
`sdl-config --libs` -lXxf86vm -lGL -lGLU -lSDL_image
-lSDL -lpthread -lXxf86vm -lGL -lGLU -lSDL_image
schreib dann funzz ganz normal

soll ich das libX11.so zu libXxf86vm linken?
oder liegt das wirklich an treibern oder Xwin.........???