Path: chuka.playstation.co.uk!chuka.playstation.co.uk!chuka.playstation.co.uk!not-for-mail From: Lewis_Evans@Playstation.sony.com Newsgroups: scea.yaroze.programming.3d_graphics Subject: Hi-res mode seems to studder Date: 23 Jan 1998 10:12:37 -0000 Organization: Sony Computer Entertainment Europe - 119.SS5 Lines: 73 Sender: news@chuka.playstation.co.uk Message-ID: <6a9qel$smr1@emeka.playstation.co.uk> Reply-To: Lewis_Evans@Playstation.sony.com NNTP-Posting-Host: emeka.playstation.co.uk From: Lewis_Evans@Playstation.sony.com To: news@playstation.co.uk To: Lewis Evans cc: From: news @ playstation.co.uk Subject: Hi-res mode seems to studder:scea.yaroze.programming.3d_graphics From: "Kevin Davis" Newsgroups: scea.yaroze.programming.3d_graphics,scee.yaroze.programming.3d_graphics Subject: Hi-res mode seems to studder Xref: chuka.playstation.co.uk scea.yaroze.programming.3d_graphics:190 scee.yaroze.programming.3d_graphics:444 My program is using 640x480 resolution, however I sometimes have bad problems with the screen studdering. It almost looks like I'm not switching double buffers but I'm using GsGetActiveBuff() each time to switch between the buffers. I initialize the graphics like this: GsInitGraph(640 ,480, GsOFSGPU|GsINTER, 1, 0); // screen 640x480 When I switch to low-res mode (320x240) I haven't encountered this problem yet. Has anyone else overcome this problem? Kevin Your call to GsInitGraph is correct; it's also true that there is only _one_ buffer in VRAM, ie one area which is 640x480, the GPU handles the switching of odd/even lines each frame to effect double buffering. After your call to GsInitGraph, are you doing this: GsDefDispBuff(0,0,0,0); // different to the call under low-vertical-res programs There is another major reason why your program may shudder. Under vertical hi-res, which 640x480 definitely is, the double-buffer mechanism is dependent on VSync; the only way to avoid heavy flicker is to force the program to run at maximum frame rate (6o fps NTSC, 50 fps PAL). Hence, under hi-res interlace, the main loop used is often this: hsyncCount = VSync(0); ResetGraph(1); // if drawing hasn't finished yet, forget it, since we must keep up the frame rate rather than under a typical low-res main loop which says DrawSync(0); // make sure all drawing completes, we can afford to drop frames hsyncCount = VSync(0); // now wait for v-blnk Ie: under interlace, your program must run at max frame rate (50 or 60) or flicker is inevitable. If doing this involves too much drawing to be missed out on, you may be better off in low-res. The main reason lots of games are not done in hi-res is because of this necessity of maximum frame rate; basically, you can't draw as many things. Lewis