Blitz3D Openscreen bug in Windows 7

Archives Forums/Blitz3D Bug Reports/Blitz3D Openscreen bug in Windows 7

(tu) ENAY(Posted 2010) [#1]
I am not sure if this has been reported before but there seems to be a problem with creating a window once fullscreen has been initiated.


Graphics3D 800,600,0,1
Graphics3D 800,600,0,1

Repeat
	Cls
	Text 10,10,"Hello"
	Flip
Until KeyHit(1)


Whilst to look at the code it may seem very trivial. What's the point in trying to call Graphics3D twice? Well basically this means any Blitz games that allow you to change screen resolution or colour depth ingame will fail when you try to do so and are now broken. The problem definitely happens when you try to go fullscreen because changing the code to:-

Graphics3D 800,600,0,2
Graphics3D 800,600,0,1

or anything crazy like

Graphics3D 800,600,0,2
Graphics3D 800,600,0,2
Graphics3D 800,600,0,2
Graphics3D 800,600,0,2
Graphics3D 800,600,0,2
Graphics3D 800,600,0,1

will not throw an error.

This problem happens on 3 Windows 7 machines and also my VIS Mirage 3 on a crappy Vista laptop, but works fine in XP.
Try running this code on your machine and see if it bombs out with an unable to set graphics mode error as well.


GfK(Posted 2010) [#2]
Don't have Blitz3D installed any more but have you tried sticking an EndGraphics() in first?

[edit] Just installed 1.106 to test. All working fine here, even without EndGraphics().

Nvidia 8500GT 512MB, Windows 7.

Last edited 2010


(tu) ENAY(Posted 2010) [#3]
Hi Dave, ok I tried:-

Graphics3D 800,600,0,1
EndGraphics()
Graphics3D 800,600,0,1

Repeat
	Cls
	Text 10,10,"Hello"
	Flip
Until KeyHit(1)


but still the same. As far as I was aware though sticking in EndGraphics() simply reverts back to text mode (command line Print command etc) and has nothing to do with actually shutting a window.

Last edited 2010


SLotman(Posted 2010) [#4]
I don't think there's a problem... all my games can change resolution and they do work on win7.

I think EndGraphics is the key here too... otherwise, you're just trying to create on fullscreen window on top of another - and that's not possible ;)


(tu) ENAY(Posted 2010) [#5]
Well it doesn't still work for me no matter what I try. Are your Win7's 64 bit?

Last edited 2010


Tab(Posted 2010) [#6]
Working fine here.


GfK(Posted 2010) [#7]
No, mine's 32-bit Windows 7. Which is potty cos my system is 64-bit. :)


SLotman(Posted 2010) [#8]
I am on win7 64 bits. No problem here.

Maybe a driver issue?


(tu) ENAY(Posted 2010) [#9]
Nice, so yet again I've got a Blitz3D bug that only happens to me. Have been trying everything I can think of and still nothing. Downloaded all updated drivers too.

I guess back to the drawing board again. :(

hhttp://www.enaysoft.co.uk/parp/Graphics3Dbug.jpg

Last edited 2010


SLotman(Posted 2010) [#10]
Are you sure your card supports 800x600 in fullscreen? (I've seen some that don't!)

Try something like this:

intModes=CountGfxModes()

If GfxMode3DExists (800,600,32)
	Graphics3D 800,600,32, 1

	Print "There are " + intModes + "graphic modes available:"
	
	; Display all modes including width, height, and color depth
	For t = 1 To intModes
	   Print "Mode " + t + ":" + GfxModeWidth(t) + "x" + GfxModeHeight(t) + " x " + GfxModeDepth(t) +" bpp"
	   Delay 100
	Next

	WaitKey()
Else
	RuntimeError "nope, 800x600 is not supported"
End If

End


Also, make sure to have the latest B3D (1.106)


_PJ_(Posted 2010) [#11]
Maybe it's chaqnging too quick? I kow that sounds silly, but it's something maybe to consider?



Graphics3D 800,600
Delay 500
ClearWorld True,True,True
EndGraphics
Delay 500
Graphics3D 800,600



(tu) ENAY(Posted 2010) [#12]
Hi guys, thanks for your suggestions :)

I tried your code Malice but it was still the same.

There isn't any problem with the screen resolution, the problem occurs in 1024x768 as well. Basically any resolution and only once a full screen resolution has already been set. The following code works for example

Graphics3D 800,600,0,1
;Graphics3D 800,600,0,1

Repeat
	Cls
	Text 10,10,"Hello"
	Flip
Until KeyHit(1)



It is only when you try to call a new Graphics3D command again once that a full screen resolution has been set that the problem occurs, starting in any screen resolution and then opening into a new screen resolution (same or old) that the problem occurs.

Yes, using latest B3D (1.106)

I am convinced this is a bug with certain gfx cards in B3D. If I manually set the Graphics3D commands all to xres,yes,depth,2 instead of xres,yes,depth,1 (basically windows mode) then everything runs fine. Also runs fine if I leave the code as it is and run in debug mode since that also runs in windowed mode too.

I guess I will just have to change all the code and take out instances of screen resolutions being changed in order to fix the problem since as it stands there is absolutely nothing I can do to fix this.


SLotman(Posted 2010) [#13]
Try my code, which actually passes a value for the bit depth, instead of 0. Maybe there lies the culprit. It could be detecting the 'max resolution' wrong once it's in fullscreen already.

or just try graphics3d 800,600,32,1 twice and see if it works. (or ,16 or ,24 depending on what your desktop bpp is)


(tu) ENAY(Posted 2010) [#14]
Hi Slotman, when I tried your code it detected a valid resolution but then failed when trying to open it a second time. THe code originally uses
Graphics3D 800,600 only

I only put the 0,1 and other such code in there etc after the resolution to stop it going to windowed mode or full screen when I didn't want it too when I had debug on and to show here that it wasn't a colour depth resolution (or even resolution based for that matter) just that I was calling the command twice and it failing.

Turns out that it doesn't matter what values I put in after the resolution as it always fails no matter what. So Graphics3D 800,600 twice is enough to make it fail, I will probably have to come back to this later for now, but I will post back if I ever figure out what was wrong.