![]() |
|
#1
|
|||
|
|||
Is the 120Hz projector the only device that's connected?
Is it s depthQ projector? if yes, then we have one sitting here at Worldviz for trouble-shooting. the only problem i have seen with the depthq is that it will NOT render stereo in 120 HZ if you have another device connected. so make sure that the ONLY device conneted to the graphics card is the projector. |
#2
|
|||
|
|||
I do have a second device (an standard analog monitor) connected to the video card, which has two independent DVI-I ports. After much exploration, it seems, however, that the video card bandwidth is narrower than I had expected. So turning down the resolution on the projector helped solved the problem, as did putting both devices at the same refresh rate (there must be some savings at the GPU).
So now viz.go(viz.QUAD_BUFFER) runs fine at 120 Hz. But I started to do some frame time logging with the following code: Code:
import viz import viztask def onFrameUpdate(event): global frameTime global frameInterval frameTime += [event.time] frameInterval += [event.elapsed] def collectFrames(): print 'Collecting frame times ...' viz.callback(viz.UPDATE_EVENT,onFrameUpdate) yield viztask.waitTime(60) print 'Finished collection.' viz.callback(viz.UPDATE_EVENT,None) yield writeFile() def writeFile(): file = open('frametime.txt','wt') file.write('frameTime = (') for i in frameTime: file.write(str(i)+',') file.write(')\n') file.write('frameInterval = (') for i in frameInterval: file.write(str(i)+',') file.write(')\n') yield file.flush() file.close() viz.quit() frameTime =[] frameInterval = [] viz.go(viz.QUAD_BUFFER) viztask.schedule(collectFrames()) |
#3
|
|||
|
|||
How precise do you expect the timing to be? When I log the elapsed time between frames it doesn't fluctuate more than 1ms from the expected rate. Either way, Windows does not run at real-time rates so your process can be interrupted by other processes at any time. You can tell Windows to give your process a real-time priority by using the following code:
Code:
import win32process import win32con win32process.SetPriorityClass(win32process.GetCurrentProcess(),win32con.REALTIME_PRIORITY_CLASS) |
#4
|
|||
|
|||
If the maximum deviation from the expected value were within 1 ms I would be happy. On my system it is not. At 120 Hz, the expected frame interval is around 8.333 ms. On one run, where the frame rate never noticeably dropped below 120 Hz, I get values in the range from 3.862 ms to 21.94 ms (see the attached histogram). Granted the variation is small; the standard deviation is 0.579 ms. (In the attached figure, counts above 20 are truncated.) However, the longer and shorter values, if accurate, suggest that frames are occasionally being dropped or skipped.
|
#5
|
|||
|
|||
Your code includes calls to disk every frame, right? You should try storing your timing info into an array and then after a set number of frames, write/flush to disk.
|
![]() |
Thread Tools | |
Display Modes | Rate This Thread |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Linking problems with Live Character | Frank Verberne | Vizard | 5 | 06-04-2008 11:42 AM |
frame rate lock? | kgarr | Vizard | 1 | 02-23-2006 12:34 PM |
quad buffered stereo? | halley | Vizard | 2 | 10-19-2005 12:28 PM |