Game Development Community

Nasty D3D fullscreen rendering issue

by Richard McKinney · in Torque Game Engine · 03/05/2007 (11:39 am) · 3 replies

We're seeing a pretty huge issue with the D3D renderer in full screen on multiple machines that is proving to be very difficult to track down.


This is what we're seeing (this shot has the console down):

img453.imageshack.us/img453/5126/d3dbugscreenshotky7.th.jpg
It happens only in D3D when going from windowed mode to full screen mode. There is nothing out of the ordinary in the console log when the display device gets set (it looks identical when the problem does and does not happen). The issue is easiest to reproduce when starting up in OpenGL windowed mode, changing to d3d windowed mode, and then going to full screen. At first we thought we could ignore it since we're not allowing renderer changing at runtime, but it happens even when you start up in D3D sometimes (which will be the case when an accelerated OGL device can't be found on older machines during initialization). The effect never appears in windowed mode, only fullscreen. I reproduced it in our game first, then in Marble Blast Gold, then in the Orc Town demo project with stock binaries that ships with TGE, all on the first try, but it can be somewhat volatile when trying to subsequently reproduce in the same session. This problem also exists in stock TGB (where it's even more likely you'll be forced into D3D mode because of Intel video cards and defaultPrefs.cs).


Here's a shot of the stock TGE orc town demo:

img403.imageshack.us/img403/2776/torquedemod3dfullerroruh5.th.jpg
I've tried forcing a different pixel format on device creation (since it just uses the first one all the time in D3D), refreshing textures after window creation, forcing a 60hz refresh rate in the ChangeDisplaySettings() call (since it almost looks like it's using a video mode it can't support), disabling double buffering, switching between 16 and 32 bit surfaces and a bunch of other random changes to no avail. Also, when I move my cursor across the screen from left to right, I can see it move all the way across twice, as if it's displaying the right half over the left half in a not so straightforward way.

Any clue as to what's going on here, how to fix it, or where to focus to try and fix it? We've seen it so far on an ATI Radeon x300 and an ATI Radeon x1900 with several driver variations. NVidia cards haven't seen the same issue, but given the same setup have displayed the entire Canvas using only the upper 50% of the screen, which is only slightly better.


Thanks for any insight.

#1
03/06/2007 (3:00 am)
The best way to fix it is not using D3D at all.
Its drastically slower than the OpenGL end (1/3 to 1/5 of OpenGLs speed, even with the worst ATI drivers you could have actually) and luckily today most cards are able to use OpenGL usefully at the level Torque uses it.
#2
03/06/2007 (7:42 am)
I would certainly rather be able to use OpenGL across the board. I'm not the one choosing it though, nor am I providing an option for our users to choose it (okay so I am actually choosing it here so I can test it :)).. It's a fallback for cards which do not report having accelerated OpenGL support (which we have encountered quite a few of, either due to settings on their machine, old drivers, or crappy video cards). This is pretty much the only issue remaining with the D3D renderer on our current game, and it's still pretty useful to us.
#3
04/20/2007 (8:01 pm)
You're not alone Richard. I've had the same problem for quite a while now on my Radeon 9600.