DirectX required

BlitzMax Forums/BlitzMax Programming/DirectX required

Steve Elliott(Posted 2005) [#1]
Last night I did a FPS comparison on my 1.7Ghz Celeron second computer and was amazed to see 1 FPS - my 3.2Ghz Pentium 4 machine was giving me 545 FPS as a comparison (monitor refresh off). I updated the drivers and managed to get about 10 FPS.

Now my game is currently running at 1280 X 1024 in 32-bit colour - but it's only a 2d chess program! I know A chess program doesn't have to run at that resolution but I'm going for high quality. Using 1024 X 768 gave me 38 FPS against 712 FPS. Obviously it's actually 2d in 3d and I'm taking advantage of the alpha transparency effects, scaling and rotation, but the difference is far more than expected and as I want to try and sell this at some stage is quite worrying.

The graphics card on the Celeron is an Intel graphics card and so is poor - but 1 FPS! OpenGL is undersupported on PC compared to mac and I personally thought the switch was a mistake - although I could understand the switch for cross compatibility.

Is anybody currently writing a DirectX module? Because I think one is necessary for slower graphics cards at least. Even if it's a driver issue - does every potential customer of games we write have to download drivers to get even a useable frame rate?

Hopefully I'll come up with some optimizations and I certainly will offer lower resolutions. But I'm a bit concerned for software developed with BlitzMax at this moment.


teamonkey(Posted 2005) [#2]
Hang on - is this the same program writted in DirectX and OpenGL that you're comparing? Otherwise what are you comparing?

Now my game is currently running at 1280 X 1024 in 32-bit colour

Hmmm. 5MB of video RAM for the front buffer, another 5 for the back buffer, plus memory for textures, perhaps a Z-buffer and some additional overhead too. If that video card's only got 16MB it's going to have real problems whether you use OpenGL or DirectX. 32MB and you'll probably still have problems. Does it have its own onboard RAM or is it sharing system RAM?


Steve Elliott(Posted 2005) [#3]
Just saying that myself and others on this site have mentioned the extremely poor performance (1-6 FPS or so) of standard OpenGL drivers.

Some potential customers will simply not download new graphics drivers if the current one's work fine - just to try a demo of your game. A choice of either DirectX or OpenGL modules for Windows versions would therefore be welcome.

I take your point about memory though - I'll look into it.

[edit]
Hmmm changing from 32 to 16 bit colour made a massive difference - 45 FPS AT 1280 x 1024. Gave me quite a scare those initial frame rates - didn't expect such a difference between computer's. I still think that as DirectX is the better supported on PC a module should be produced.
[edit]


Xip(Posted 2005) [#4]
hmm, well... it might be a litel bit old school, but dosent the old Blitz3D engine exists as an DLL ?
if so, it shodent be to hard to implement it into bmax.

but ther is alot of reasons for mark shosing gl insted of dx, exept for linux/mac platform support, ther is a big difference in the language strukture, and if im not rememvering it all wrong, gl has looked very mutsh like it does now for a verly long time, but the dx api has shanged alot from version to version, this means that it is no point on updating the old Blitz3D engine, he has to start all over from scratsh, and i dont think that will happen att marks disk for a while.

for what its worth, i whod very mutsh like to se an DX engine insted of GL, and if someone do creates a dx9 wrapper module, i will be the first to try it out! :)

i shod mention, that i am no expert at GL api(hell i suck big times), and it was many years since i looked at a DX source example, so i might be all wrong ;)

the hole bmax language screams "write your self your own wrapper". ... so i think gl was an exelent pick for crossplatform, and if you only want to use win platform(for whatever reason), you can most likely find a nice DX engine here very soon at this community.


Robert(Posted 2005) [#5]
I have to say that OpenGL seems to work well on most PCs that I have tried it on.

The one thing I do notice about OpenGL (and it may just be in my mind here) is that the colours look nicer. It is difficult to explain why, but they just seem more vibrant.

I know that certain other DirectX-based languages produce atrocious results on Intel graphics cards too.


AdrianT(Posted 2005) [#6]
hardly any of the samples run well on my old PC, particularly the more visualy appealing games liek Rockout, which needs half of the features disabled to achieve playable framerates on a Geforce 2.

I know were talking about an old card, but this does cause problems for people wanting a successful indie games business.


Gabriel(Posted 2005) [#7]
hardly any of the samples run well on my old PC, particularly the more visualy appealing games liek Rockout, which needs half of the features disabled to achieve playable framerates on a Geforce 2.


I get nightmares when people say things like this. Or I would if I hadn't decided to stick with B3D for my 2d projects. I mean, Nvidia are generally considered to have the best OpenGL drivers of the main five manufacturers and the geforce 2 ( even if it were an MX ) is more than capable of playing some pretty recent 3d games, let alone simple 2d stuff like Rockout.

There's no two ways about it, OpenGL is less reliable on Windows than DirectX. If the biggest indies like Reflexive are having to write software engines because they're getting too many people unable to play the game, that should tell you all you need to know about OpenGL reliability.

BUT.. why is BlitzMax more prone to these slowness problems even than other OpenGL-based engines? It's only using OpenGL 1.2, right? Is that the problem?


FlameDuck(Posted 2005) [#8]
I think we need a VESA interface too. I know the Matrox Millenium is an old card, but won't somebody think of the children?


Steve Elliott(Posted 2005) [#9]
*sigh*


Gabriel(Posted 2005) [#10]
I think we need a VESA interface too. I know the Matrox Millenium is an old card, but won't somebody think of the children?


Boy you got tired of Blitz fast. All that time you couldn't run B3d on your tablet PC and before the final version of BMax is out, you're ready to fall on your sword and have Blitz not worry about supporting your videocard.


Russell(Posted 2005) [#11]
DX is a bee-eyetch (b***h) to program for for many reasons and I don't blame Mark one bit for ditching it. M$ has been rewriting DX in almost every revision...and it is not any easier to work with from what I hear.

Too bad there isn't a 'Blitz mode' like on the old Amiga Blitz, so we could write drivers ourselves that bang the hardware directly while our game is playing...

Anyway, like someone else pointed out, this is not the official version yet, so hang on a little while longer.

It's a shame that OGL is becoming less and less supported in graphics cards in favor of DX (thanks to Microsoft's relentless 'marketing' of it - read that anyway you like :^/ ).

Is OGL fairly fast on the mac and linux? If so, then maybe a directx wrapper, as mentioned, would be ideal for the windows platform.

Russell


FlameDuck(Posted 2005) [#12]
All that time you couldn't run B3d on your tablet PC and before the final version of BMax is out, you're ready to fall on your sword and have Blitz not worry about supporting your videocard.
As opposed to Blitz3D, BlitzMAX does (mostly) work on my TabletPC. At least as far as Graphics and OpenGL is concerned. More importantly it also works on my old GeForce 1, my Intel motherboard built-in graphics chipset and even (although somewhat slowly) on my S3 Savage 2000 (which is mostly due to the graphics card not being very good). In fact on the 7 computers I had access to (one being an NT4 machine with an ATi Rage-IIc) on which I have tried it, BlitzMAX executables work flawlessly. On the same seven machines Blitz3D executables fail on three systems. The TabletPC, the NT4 box, and the S3 Savage 2000 box.

So you'll excuse me (I'm sure) if I seem a little sceptical?

It's a shame that OGL is becoming less and less supported in graphics cards in favor of DX
I hear a lot of people claiming it, but actual evidence seems to indicate to the contrary. OpenGL failures are usually cause by obsolete drivers, not bleeding edge ones.

If so, then maybe a directx wrapper, as mentioned, would be ideal for the windows platform.
A DirectX wrapper is not an ideal solution to any problem. DirectX is on it's way out anyway, it's only a matter of time. Microsoft already have the successor lined up. Any more work on DirectX is a wate of time, IMHO.


TeraBit(Posted 2005) [#13]
The pervasiveness of the Quake engines (which have been around for some time now) really pushed a lot of manufacturers to release more sensible OGL drivers. If the GFX card drivers are reasonably recent, it's likely that OpenGL will run fairly well, if they're not recent, then a DX9 interface would likely fail just as miserably.


Steve Elliott(Posted 2005) [#14]

OpenGL failures are usually cause by obsolete drivers, not bleeding edge ones.



My original quote...


Some potential customers will simply not download new graphics drivers if the current one's work fine - just to try a demo of your game.



On Mac this apparently isn't a problem - potentially it is on Windows.

Just let Windows users select at compile time what they want to compile for - DirectX or OpenGL.


Scienthsine(Posted 2005) [#15]
Ya know, I've played alot of AAA games where I've had problems in one way or another. What's the first thing you see when you click the trouble-shooting portion of the site? "Make sure you have the latest drivers."

I don't think it's that big of a deal to require the latest OpenGL drivers. Just last week I had to go to a friends house and force Warcraft III to use openGL via commandline because it had problems with DX. (Geforce of some sort, forgot to look...)

I like OpenGL, so bleh!


col(Posted 2005) [#16]
My 2 pennies worth :-

Just to mention, that this 'latest version' paradigm isn't limited to drivers. I've just bought Half-Life2, and although this is an absolutely superb piece of software engineering, the first thing I noticed is that you can't even play the game without a Internet connection - Even if you want to play in 'Offline Mode', you still need the 'net connection to play (security verification with a 'steam' account). On top of this, the game also automatically checks for the latest available updates and patches.

Imagine the scenario - I just bought the game, I NEED a 'net connection to play it (the are hacks, but I'm talking 'from the box' here), then it does about a 10 minute download to bring me 'up to date'. All this to play a game! in single player mode.

tut. And people are complaining about updating drivers manually. I don't know, just accept that the world moves on and moves very quickly, so try not to lag behind. The updates are there for genuine reasons - the main reasons are stability and compatability. Just gonna have to accept it I'm afraid.


Dreamora(Posted 2005) [#17]
the autoupdate can be deactivated.
Just shows the reason for most of the problems: the user in front of the pc


Gabriel(Posted 2005) [#18]
Ya know, I've played alot of AAA games where I've had problems in one way or another. What's the first thing you see when you click the trouble-shooting portion of the site? "Make sure you have the latest drivers."


And since no one is writing AAA games in Blitz, this is relevant how?


And people are complaining about updating drivers manually.


No they're not. Reread the original post.


I don't know, just accept that the world moves on and moves very quickly, so try not to lag behind.


Again, you've missed Steve's point completely. The casual games world doesn't move on anything like as quickly as you seem to think.


FlameDuck(Posted 2005) [#19]
My original quote...

Some potential customers will simply not download new graphics drivers if the current one's work fine - just to try a demo of your game.
Well if their current (as in the ones they have on their computers) drivers work fine, I fail to see the problem...

On Mac this apparently isn't a problem - potentially it is on Windows.
Even if that where the case (which I still have not seen any concrete evidence that suggests) - it is a problem of which the significance approaches zero, as time passes.

In any case it is partially an issue on Mac aswell. Appearently they don't all do fullscreen OpenGL all that well.


Michael Reitzenstein(Posted 2005) [#20]
I know were talking about an old card, but this does cause problems for people wanting a successful indie games business.

I think it's just a badly built demo - my game runs at 200+ fps on my GF2 MX, which is under half the fill rate of a standard GF2, and I certainly haven't spent a lot of time optimising it.

I hear a lot of people claiming it, but actual evidence seems to indicate to the contrary. OpenGL failures are usually cause by obsolete drivers, not bleeding edge ones.

Definitely. If your end user has up to date drivers installed, it's extremely unlikely that he'll have any problems running your game, even if he's got and old/obscure card. Obsolete drivers, on the other hand, are the problem, and lots of people seem to have them installed.

A DirectX wrapper is not an ideal solution to any problem. DirectX is on it's way out anyway, it's only a matter of time. Microsoft already have the successor lined up. Any more work on DirectX is a wate of time, IMHO.

Well, a (for example) DirectX 7 game should work on Microsoft operating systems for a long time to come. There'd be a *huge* uproar if Longhorn didn't support DirectX 7 applications.

Microsoft actually spends a lot of resources to make its operating systems backwards compatible. They even disassembled Sim City (which wouldn't work on Windows 95), found the bug (where it used memory after freeing it), and fixed it by detecting when Sim City runs, and allowing it to write to memory that had been freed! Something like disallowing older DirectX versions would be totally unlike anything they've done in the past.

And right here, right now, DirectX 7 has a much, much higher success rate than OpenGL on every day machines. And they both have a pretty much 100% success rate if the user downloads new drivers, so either is OK.

The pervasiveness of the Quake engines (which have been around for some time now) really pushed a lot of manufacturers to release more sensible OGL drivers. If the GFX card drivers are reasonably recent, it's likely that OpenGL will run fairly well, if they're not recent, then a DX9 interface would likely fail just as miserably.

Well DirectX 9 would be suicide as well. Its install base compared to DirectX 7+ is tiny.

Ya know, I've played alot of AAA games where I've had problems in one way or another. What's the first thing you see when you click the trouble-shooting portion of the site? "Make sure you have the latest drivers."

Yeah, but if you're making small downloadable games, doing everything the AAA games are doing would be suicide. People will just download another game if they can't get yours to run, unless it's *really* special.

The updates are there for genuine reasons - the main reasons are stability and compatability. Just gonna have to accept it I'm afraid.

We, as developers, accept that. Our systems are usually nice and up to date with all the necessary patches. Our target audience (as in mine and anyone else with the same) simply isn't like that though. They don't fix things that don't appear to be broken - and if your game is the only one of ten that doesn't work, your game, not their system, will appear to be at fault. Even if your game would run with proper drivers.


AdrianT(Posted 2005) [#21]
yeah, most of the paid work I do with blitz isn't really for indie games, and I don't think I'd make something that didn't target a Geforce 3 or higher as a recommended video card. and certainly not lower than a geforce 2 unless it was part of the conditions of my contract. Just takes the fun out of making games and leaves you with better things to do to make money.

Having the flexibility you want is my main concern, and GL has pretty poor art tool support for higher end features. Even ATI and Nvidia tools don't support GL very well for game dev.

Besides which 95% of blitz users are mostly trying to have fyun and be crative rather than make money selling indie games.


NeuralizR(Posted 2005) [#22]
I can't believe this thread is still continuing on about bad and/or unreliable OpenGL support on Windows... did anybody care to notice that when the original poster switched from 32bit to 16bit there was a drastic speed increase? Someone else mentioned the amount of video memory being an issue because of the screen size chosen in conjunction with the pixel depth.

To me, it's pretty clear that the settings chosen were using too much memory and causing the frame buffer(s) to be stored in main memory, not on the card, how it was intended to work.

Not that I think this is the proper thread for a flame war either but, ATi has great support for OpenGL and IIRC it beats ATi's cards beat nVidia's cards in every OpenGL benchmark (and also have more extensions supported) whereas nVidia is in bed with Microsoft and tries to keep the King of Direct3D title locked down tightly. (though again, ATi is usually first to support new DirectX features and sometimes even has better performance using DX than NV does, lol)

I think the case against "install base" for DX9 is shaky at best. If you're releasing a NEW game or any kind of 3D application, requiring the latest version of whatever standard and easily accessible 3D API is a no brainer. Why should Blitz be held back because some people are afraid of new technology. DX9 works for old hardware too, even if the features aren't supported by the hardware, which is a completely seperate issue and the developer doesn't have to use them. *sigh*

Again, back in discussion of the original poster... You say you're using OpenGL for 2D... but I'm assuming you're just thinking the same thing I am, that BMax is using OpenGL for it's normal 2D stuff? or...

I'm not sure how BMax is handling 2D... I've been too lazy to look at the modules. :x If it is, maybe you're just using too many high resolution textures and they're being converted to whatever your current pixel depth is before being displayed, which would ALSO use up a ton of memory and require lots of additional writes to the video memory from off-card, which if you weren't using AGP, this'd be a pretty big problem I think.

Dunno, I'm not an expert, but I'd sure like to keep this thread ON TOPIC! ><;


AdrianT(Posted 2005) [#23]
GL wouldn't even have half the extras it has if DX didn't get them first. And what it has are mostly afterthoughts slapped on haphazardly without much regard with compatibility. If you just want vanilla graphics with no real effects you may do well.

BTW as far as GL Goes, most 3D apps don't run well on ATI cards if at all when running in GL mode thanks to poor unstable drivers. However 3D Apps are starting to use D3D more and more these days thanks to the pixel and vertex shaders.

In my experience ATI is generaly faster than Nvidia with D3D not GL. Can't be bothered to check right now though.


FlameDuck(Posted 2005) [#24]
Well, a (for example) DirectX 7 game should work on Microsoft operating systems for a long time to come.
True. But a wrapper (ie. one that translates OpenGL calls into Direct3D) is not an ideal solution, or even one that should be considered.

GL wouldn't even have half the extras it has if DX didn't get them first.
You are mistaken about the order in which new functionality is added to APIs. OpenGL is litterally years ahead of DirectX, because up and until DX9, DirectX functionality was limited to whatever functionality Microsoft decided to implement, where as OpenGL via. generic extensions allow manufacturers to extend the API with their own functionality. As such, my 4 year old FireGL card has functionality my X600XT doesn't.

BTW as far as GL Goes, most 3D apps don't run well on ATI cards if at all when running in GL mode thanks to poor unstable drivers.
I have no complaints. My X600XT runs all the software I need to.

However 3D Apps are starting to use D3D more and more these days thanks to the pixel and vertex shaders.
Another OpenGL first functionality.


BlitzSupport(Posted 2005) [#25]

as far as GL Goes, most 3D apps don't run well on ATI cards if at all when running in GL mode thanks to poor unstable drivers


I haven't run into OpenGL problems on my ATI card. The only reason I can think that might happen with modern ATI cards is where the developer has only used Nvidia-specific features.


AdrianT(Posted 2005) [#26]
You are mistaken about the order in which new functionality is added to APIs. OpenGL is litterally years ahead of DirectX


thats funny, as I only recall GL being ahead in the early DX5 - 7 days, after which DirectX walked all over GL as far as pixel shaders, vertex shaders, and all the fancy FX were starting to take for granted.

3D apps are all migrating to D3D for the extra features that won't be standard across the board in GL for quite some time. I blame it on the fact that GL was never developed with artists and games in mind, and was primarily developed for science, engineering where DX was developed primarily for games and realtime visual effects. Something that the board that defined GL specs didn't care about.

thats why today, all the easy to use pixel and vertex, multitexturing tools are almost exclusively D3D. Thats what the majority of developers use. DDS textures, .FX shaders etc are pretty much industry standard, but getting the user friendly artist tools to create the GL equivalent is next to impossible.

If you hang out on 3D forums for 3D apps, you will find that ATI drivers have the least compatibility for apps like XSI, Maya and 3dsmax. It's only in the last few months that ATI have even tried to address the issue.


teamonkey(Posted 2005) [#27]
DDS textures, .FX shaders etc are pretty much industry standard, but getting the user friendly artist tools to create the GL equivalent is next to impossible.

Cg? Rendermonkey?


Steve Elliott(Posted 2005) [#28]

I think it's just a badly built demo.



Hang-on a sec it's running at 545 FPS on my fast computer - 1 FPS initially on my slow computer - less than 10 even with new drivers. I think I've got a right to question that.


GW(Posted 2005) [#29]

ATi has great support for OpenGL and IIRC it beats ATi's cards beat nVidia's cards in every OpenGL benchmark


I've think you've got it the other way around. When doom 3 came out there was a big uproar from ATI owners about the poor performance. ATI released a press release saying that they were aware of the poor opengl performance and were in the process or writing a new opengl driver from scratch.


Eikon(Posted 2005) [#30]

Steve Elliott:
Hang-on a sec it's running at 545 FPS on my fast computer - 1 FPS initially on my slow computer - less than 10 even with new drivers. I think I've got a right to question that.

Theres nothing strange going on here, and it's certainly not OpenGL's fault. Earlier you said your program ran at 1280 x 1024 in 32-bit color, which means you're likely using at least 16 - 32MBs of video memory. You can't expect an integrated Intel card that has no vram to run this at a decent speed. System memory is dirt slow even in DirectX. The results would be almost exactly the same. The solution is to code a 640x480 mode.

* edit *
Forgot to mention that since that Intel card shares system memory, it will run a lot slower if you have other programs open. Close everything except your EXE and test FPS again.


xlsior(Posted 2005) [#31]
Forgot to mention that since that Intel card shares system memory, it will run a lot slower if you have other programs open. Close everything except your EXE and test FPS again


Also -- if I remember correctly, you can specify the amount of RAM to set aside for the video adapter in the computer BIOS on most systems with the onboard Intel GFX chipset.


RexRhino(Posted 2005) [#32]
xlsior:
The Intel GFX chipset can use less that 64megs, but it cannot use more.


Steve Elliott(Posted 2005) [#33]

Theres nothing strange going on here, and it's certainly not OpenGL's fault. Earlier you said your program ran at 1280 x 1024 in 32-bit color, which means you're likely using at least 16 - 32MBs of video memory.



Yes I know, the memory problem was highlighted before - just explaining why I questioned it. And a 'bad demo' response was not constructive.


The solution is to code a 640x480 mode.



Always intended to - it was just a test (see link). ;-)

www.elliottproductions.co.uk/temp/screenshot1.jpg


xlsior(Posted 2005) [#34]
You may want to consider making 16-bit color the default, with the option of bumping it up to 32-bit color...

Much bigger chance your program will work decently on many mid-range machines.


Bot Builder(Posted 2005) [#35]
just saw something i don't think was ever mentioned.
Just saying that myself and others on this site have mentioned the extremely poor performance (1-6 FPS or so) of standard OpenGL drivers.
Yeah, no duh. The standard XP drivers are software emulations of ogl, simply to promote DX in favour of ogl. At that point it doesn't even matter what card you have, its gonna be dog slow. Which is why you need drivers from the vendor to expect any decent fps. As far as i know there's no problem on linux/mac as they use ogl by default anyway.


FlameDuck(Posted 2005) [#36]
thats funny, as I only recall GL being ahead in the early DX5 - 7 days, after which DirectX walked all over GL as far as pixel shaders, vertex shaders, and all the fancy FX were starting to take for granted.
OpenGL was ahead of DirectX up until version 9. You see until version 9 DirectX was rigid, and Mircosoft dictated it's functionality.

OpenGL on the other hand allowed (and still does, but so does DirectX now) third parties to write extensions to the API. These extensions allowed you to do all kinds of neat things, most noticably such things as "implement all those funky things, well before Microsoft programmers get around to it".

I blame it on the fact that GL was never developed with artists and games in mind, and was primarily developed for science, engineering where DX was developed primarily for games and realtime visual effects.
Wrong again. OpenGL was originally developed by SGI, Sillicon Graphics Inc. by industry demand. It was most certainly developed for artists and games (or simulators if you want).

Some time later, the OpenGL Architecture Review Board was formed, and all the major players (incl. Microsoft incidently) got to determine where OpenGL would move in the future. Microsoft have since left the ARB, paving the way for it's other members to finally get something done, without having to bother with Microsofts agenda.


Who was John Galt?(Posted 2005) [#37]
Haven't read the entire thread, but all the samples run perfectly on my GeForce2, and at a decent frame rate.


Robert(Posted 2005) [#38]
There is a stunning amount of FUD in this thread.

Both ATI and NVIDIA, who provide the graphics chipsets for the vast majority of PCs nowadays, support OpenGL very well. What is all the fuss about?

All of the 2D demos that come with BlitzMAX run fine on my laptop which only has an old 16MB ATI graphics card, and very little in the way of modern features, and I don't ever have recent drivers installed on the card.


Steve Elliott(Posted 2005) [#39]
Frame rate is no longer an issue as I said on my 2nd post - runs fine in 16-bit mode. Although a bit slower than I was expecting.


The standard XP drivers are software emulations of ogl, simply to promote DX in favour of ogl.



Even if it's a driver problem a lot of people will not download drivers just for a demo - you and I might - but not everybody.


Robert(Posted 2005) [#40]
The standard XP drivers are software emulations of ogl, simply to promote DX in favour of ogl.


That is very misleading. No 3D hardware will work properly without drivers from the manufacturer. DirectX requires drivers just the same as OpenGL. Any store-brought machine should already have proper drivers installed. No manufacturer is going to deliberately produce a machine which has sub-par performance.

I should also point out that installing new drivers is ridiculously easy on the Windows platform, and I think it is very likely that people *would* update their drivers to play a demo - especially since it will improve 3D performance of the rest of their machine.


Steve Elliott(Posted 2005) [#41]

I think it is very likely that people *would* update their drivers to play a demo - especially since it will improve 3D performance of the rest of their machine.



I disagree - someone trys a demo, it runs unplayably slow - they uninstall it.

Anyway as I said it runs ok now and it seems the slow computer is probably as slow as it gets (horrible Intel graphics). So I shouldn't have any problems as far as speed goes - we'll see when I release a 2 player beta.


Zenith(Posted 2005) [#42]
Blah, I say screw customers who are ignorant of how to use their computers! ;)


skidracer(Posted 2005) [#43]
That is very misleading. No 3D hardware will work properly without drivers from the manufacturer. DirectX requires drivers just the same as OpenGL. Any store-brought machine should already have proper drivers installed. No manufacturer is going to deliberately produce a machine which has sub-par performance.


The fact is Microsoft forced ATI and NVidia to remove hardware OpenGL support from the drivers that ship with XP while spending significant resources ensuring all graphics cards include certified DX support.

Installing drivers from hardware manufacturers also has the following problems:

* many clicks to find the correct driver followed by mega sized download
* DX support in latest drivers often problematic compared to MS certified drivers
* non Doom3 compatible cards unlikely to have glitch free OpenGL support due to lack of benchmarks / industry certification etc.


xlsior(Posted 2005) [#44]
Skidracer: The fact is Microsoft forced ATI and NVidia to remove hardware OpenGL support from the drivers that ship with XP while spending significant resources ensuring all graphics cards include certified DX support.

Installing drivers from hardware manufacturers also has the following problems:

-snip-



All of which re-iterates that DirectX really is the way to go on Windows. :-?


FlameDuck(Posted 2005) [#45]
All of which re-iterates that DirectX really is the way to go on Windows. :-?
Except it isn't because DirectX is too much of a moving target (and thus provides a whole bunch of other problems), and having to rewrite everything from scratch every time Microsoft decide to release a new major version is not a viable alternative for most shareware type businesses.

It doesn't matter for "AAA" developers, because nobody is going to care if they can't play "Panzer General III" 5 years after it was released - shareware is different, if you're still in business 5 years down the line you are going to want to: a) still get sales from your older titles (again something mainstream developers couldn't care less about) b) want said older titles to work on all computers, not just the ones that where state of the art 5 years ago.

Thus DirectX is not a good choice. For shareware developers it isn't economically viable to have to rewrite the program every time Microsoft get 2 generations ahead of you with the latest version of DirectX (particularly since you don't have to).

OpenGL is great in that regards, becuase it provides true backwards compatibility. Not by just bunching all the old crap with the new crap, but by having a consistant interface, and extending upon it as nessecary to provide new functionality. That OpenGL game you played 5 years ago (Quake2 for instance) will still work today - the same cannot be said for DirectX.


Dreamora(Posted 2005) [#46]
You don't have to rewrite as DX is downward compatible (at least until DX7. Earlier DX were a large bunch of problems anyway).
you only have to rewrite if you want to use new technology.


Michael Reitzenstein(Posted 2005) [#47]

Thus DirectX is not a good choice. For shareware developers it isn't economically viable to have to rewrite the program every time Microsoft get 2 generations ahead of you with the latest version of DirectX (particularly since you don't have to).

DirectX is a superior solution to OpenGL for shareware on the PC. OpenGL simply doesn't have the install base, on either new or old PCs, to match DirectX.

Whether or not it's worth porting or initially developing in DirectX is another debate; OpenGL on PC and Mac will usually have much more reach than DirectX on PC.


FlameDuck(Posted 2005) [#48]
DirectX is a superior solution to OpenGL for shareware on the PC.
Which version tho'? The version I hear everyone suggest is DX5, because it's the first one that has decent 3D and was included with Windows 98 (I believe). Problem is the legacy support for DirectX 5 was dropped in DX9, which only has legacy support for DirectX7 and 8 - and even that doesn't work particularly well.

So how are you going to keep making sure that your old games keep working on DirectX9? Never mind when Microsoft decide to aggressively push XNA and XNA Studio. What then?


Michael Reitzenstein(Posted 2005) [#49]
Which version tho'? The version I hear everyone suggest is DX5, because it's the first one that has decent 3D and was included with Windows 98 (I believe). Problem is the legacy support for DirectX 5 was dropped in DX9, which only has legacy support for DirectX7 and 8 - and even that doesn't work particularly well.

So how are you going to keep making sure that your old games keep working on DirectX9? Never mind when Microsoft decide to aggressively push XNA and XNA Studio. What then?

DirectX 7 is a good balance. DirectX 5 programs (Counter Strike for example) will run under DirectX 9, they just aren't officially supported. Even with all of the problems you hint at, it's nothing compared to the massive failure rates you'll get as a result of using OpenGL.


FlameDuck(Posted 2005) [#50]
DirectX 5 programs (Counter Strike for example) will run under DirectX 9
CounterStrike uses the Half-life engine, which is based on the Quake 2 Engine, and thus probably uses OpenGL or the Quake2 software renderer (it works on the FireGL card, which seems to suggest that it is not using DirectX, since there are no DirectX drivers for said card). Try playing "Incubation" or "Panzer General 3D" both DirectX 5 games, neither work (Incubation just "crashes to desktop" before it's even started, PG3 says something about not being able to create a surface of depth -1 or something equally rediculous, and then exits).

I agree DirectX 7 is a good balance (for now at least, since DirectX 7 is still distributed as part of DX).

As for massive failure rates with OpenGL, people keep saying it, but I haven't seen any evidence that supports it actually happening, and thus can only comment based on my own personal experience with both OpenGL and DirectX, although I acknowledge that I am probably more technically inclinded and more persistent at trying new and interesting games than most "average" users.

When James' Rockout demo was released to the public there where what? 10 reported incidents where out-of-date drivers was the main point of failure for low performance (the other was the rotating background killing the fillrate)?

Sure it's an issue, but hardly a massive failure rate by anyones measuring stick, and nowhere near the 50% that everyone keeps attributing to "someone I know". At most it's a marginal inconvenience.

However given BlitzMAXes open and modular approach to putting power in the hands of developers it would be a trivial matter (compared to for example writting a general purpose OpenGL wrapper for DirectX) for the so inclined to provide a third party DirectX renderer, if it was indeed a viable business option, it could infact be the start of an enterprising young individuals career.

Ofcourse I know that Mark is the über coder, and no-one but him writes flawless code, so no-one is going to actually buy said 3rd party module because "waiting for an official BRL module" somehow seems like the more sensible choice.

Anyway BRL will eventually run out of stuff to do some time after Maplet2 (as far as I can tell), and by then, if the demand (and thus expected sales) is great enough to justify the cost of development, I'm sure BRL will do that next. After all BRL is a business, and there's no place for religion when you're making money. Unless you're one of those TV preachers ofcourse, but I digress...


xlsior(Posted 2005) [#51]
When James' Rockout demo was released to the public there where what? 10 reported incidents where out-of-date drivers was the main point of failure for low performance (the other was the rotating background killing the fillrate)?


Keep in mind though, that pretty much everyone who tried those demos who you heard from were blitz programmers themselves.

Programmers tend to have higher end machines than your average mom&dad that go out and buy a cheap dell with onboard intel video, and who still consider their computer up-to-date four years later because the guy at Best Buy who sold it to them said it was the best thing since sliced bread. However, those people DO happen to be the big target market for little shareware games, which is what many people use Blitz for.


Robert(Posted 2005) [#52]
The fact is Microsoft forced ATI and NVidia to remove hardware OpenGL support from the drivers that ship with XP while spending significant resources ensuring all graphics cards include certified DX support.


The DirectX drivers supplied with XP don't work properly either. I had NVidia GeForce 3 cards crashing left, right and center with the default drivers, with DirectX apps. I had to download and install NVidia's own drivers to get them to work.

The vast majority of PC's out there are store-brought. As I mentioned before, they should have the proper drivers from the manufacturer since any ones shipped with the OS will be both sub-par and incompatible with newer cards.

Edit: I agree that there is a danger of OpenGL getting left behind DirectX in terms of features. But lets face it though, hardly anyone here could make use of such features. Only a relatively small number of developers have taken Blitz3D to its limits.


FlameDuck(Posted 2005) [#53]
Programmers tend to have higher end machines than your average mom&dad that go out and buy a cheap dell with onboard intel video, and who still consider their computer up-to-date four years later because the guy at Best Buy who sold it to them said it was the best thing since sliced bread.
First of all it was my impression that you could not buy Dell computers at Walmart or Best Buy type stores.

Secondly Intel have excellent OpenGL support for any "Extreme" brand chipsets (i8xx and up I believe, so roughly anything P4 or better, or bought in the last 3 years time) and these drivers are included with the other "Chipset" drivers.

Thirdly my *Compaq* TabletPC is still running the same drivers it shipped with over 2 years ago, and its GeForce2Go runs BlitzMAX executables just fine (within reason ofcourse, despite what you might think to the contrary, it's not a particularly high-end machine in terms of raw power, having a "mobile" graphics chipset with 16 megs of memory and a 1Ghz CPU that has to realtime emulate the Pentium instruction set).

Now if it'll work on a bloody Compaq, it'll work on pretty much everything, wouldn't you agree?


xlsior(Posted 2005) [#54]
Now if it'll work on a bloody Compaq, it'll work on pretty much everything, wouldn't you agree?


Sure. Too bad it didn't work on my Compaq laptop.

(that is 'not working' as in so slow it becomes unworkable)


Eikon(Posted 2005) [#55]
Secondly Intel have excellent OpenGL support for any "Extreme" brand chipsets (i8xx and up I believe, so roughly anything P4 or better, or bought in the last 3 years time) and these drivers are included with the other "Chipset" drivers.

Have to respectfully disagree with you there. I have the newest drivers for my work PC's Intel Extreme card, and though they gave a great improvement from the original drivers, I still can't run my simple 2D side scroller at a decent framerate. 3D stuff like Terabit's OpenGL cube example runs at about a half a frame a second. While the basic support may be there, the speed certainly isn't. I believe any card without it's own vram is in for a real beating when it comes to Max.


AdrianT(Posted 2005) [#56]
well regardless, my experience with DX as an artist has been way better than with openGL. Just because everything is right there out of the box and its just getting easier.

Maya, 3dsmax etc are starting to drop Gl for DX9 rendering, and you can load and save DX shader FX files, DDS compressed textures and whatever without a line of code.

GL plain sucks for 3rd party tools. My hope is that DX goes cross platform. Since Xbox 2 is on powerPC I woudn't be surprised to see a cross platform API. As far as linux goes, it's not a big deal as linux still hasn't gotten anywhere in all these years.


xlsior(Posted 2005) [#57]
My hope is that DX goes cross platform. Since Xbox 2 is on powerPC I woudn't be surprised to see a cross platform API


That will never happen -- Microsoft has too much of a vested interest locking people into windows, and will fight tooth and nail against making it easier for people to switch over to alternative platforms.

After all, the easier it is for a developer to do a simple port of a PC game to the Mac, the more games there will be for the mac. The more games there are on the mac, the more people might choose one over a windows PC, crumbling the fringes of Microsoft's empire.
Microsoft's entire business phylosophy is based on one thing: consumer lock-in.

Look at VisualBasic: it's entire design, based around the runtime libraries was created to make it portable and platform independent -- but a decade and a half later, microsoft has not persued runtime libraries for anything but windows.


AdrianT(Posted 2005) [#58]
yeah and there's already a NT based non consumer OS for the mac, so who knows where MS are going with that. going to powerPC processors was a bit of a surprise for most people so the future might be pretty interesting.


Michael Reitzenstein(Posted 2005) [#59]
CounterStrike uses the Half-life engine, which is based on the Quake 2 Engine, and thus probably uses OpenGL or the Quake2 software renderer (it works on the FireGL card, which seems to suggest that it is not using DirectX, since there are no DirectX drivers for said card).

Blah blah blah. I wouldn't have said Counter Strike if it didn't know it came with a DirectX renderer (it comes with DX, GL and software), would I?

Sure it's an issue, but hardly a massive failure rate by anyones measuring stick, and nowhere near the 50% that everyone keeps attributing to "someone I know". At most it's a marginal inconvenience.

"Someone I know" is Puppy Games (http://www.puppygames.net) and they get a 65% success rate for OpenGL on Windows. 35% *is* a massive failure rate. Totally unacceptable.

Ofcourse I know that Mark is the über coder, and no-one but him writes flawless code, so no-one is going to actually buy said 3rd party module because "waiting for an official BRL module" somehow seems like the more sensible choice.

Using third party libs before they've been proven is a dangerous game. Mark has the Blitz3D engine, which presumably a DirectX module would be based on, which *is* a proven stable and compatible engine.

Another proven engine is the Popcap game framework. That is a real possibility.

Anyway BRL will eventually run out of stuff to do some time after Maplet2 (as far as I can tell), and by then, if the demand (and thus expected sales) is great enough to justify the cost of development, I'm sure BRL will do that next. After all BRL is a business, and there's no place for religion when you're making money.

Where does religion come into it? This *is* about business.


teamonkey(Posted 2005) [#60]
"Someone I know" is Puppy Games (http://www.puppygames.net) and they get a 65% success rate for OpenGL on Windows. 35% *is* a massive failure rate. Totally unacceptable.

I'm not sure that's the case any more. For a while, Nvidia had their OpenGL drivers as a separate download which confused a lot of users. I remember that PrinceC mentioned in the Alien Flux postmortem that that was the biggest cause of failure. They stopped doing that over a year ago and everything's bundled in to one package now.


Michael Reitzenstein(Posted 2005) [#61]
I'm not sure that's the case any more.

It's still the case and that's still about his failure rate. The end user has to download at least one nVidia driver for that to make a difference!


Muttley(Posted 2005) [#62]
yeah and there's already a NT based non consumer OS for the mac, so who knows where MS are going with that. going to powerPC processors was a bit of a surprise for most people so the future might be pretty interesting.

That's just the XBox 2 dev kit (Apple Mac G5 running a version of NT). I very much doubt Microsoft will be doing anything else with it, especially as NT 4.0 is no longer supported by them as of last December.

Muttley


SillyPutty(Posted 2005) [#63]
hmm all of this is quite worrying now, as I am a newb, that is, OpenGL vs DirectX, I hate discussions like this, but it seems the impact is a big one.

?


Michael Reitzenstein(Posted 2005) [#64]
If you're not at the point of actually finishing/selling your game, you shouldn't let it concern you. With a system like BlitzMax's Max2D, you can develop using OpenGL rendering and then switch to DirectX rendering when a module is created.


SillyPutty(Posted 2005) [#65]
yeah, I realise that :)

just interested and vexed is all :)


FlameDuck(Posted 2005) [#66]
"Someone I know" is Puppy Games (http://www.puppygames.net) and they get a 65% success rate for OpenGL on Windows. 35% *is* a massive failure rate. Totally unacceptable.
What is their solution then? I was not able to find it on thier site, nor was I able to confirm the failure rate.

Using third party libs before they've been proven is a dangerous game.
Were that true, new technology would never have a chance to be proven and people would still be using DirectX 3 and software renderers. Nothing ventured, nothing gained.

Mark has the Blitz3D engine, which presumably a DirectX module would be based on, which *is* a proven stable and compatible engine.
You forgot "that as far as we know might blow up whhen applied to the BlitzMAX framework". Unless you're advocating sticking to Blitz3D for now, which I wholeheartedly agree with, if you need DirectX.

Another proven engine is the Popcap game framework. That is a real possibility.
Not for 3D. In either case the popcap framework gets much worse performance on my TabletPC than BlitzMAX, so it's not in itself a magic bullet solution for everyone.

Where does religion come into it? This *is* about business.
What's the problem then?

I hate discussions like this, but it seems the impact is a big one.
I like them. If there really is a problem, then it's important to uncover it early on.


AdrianT(Posted 2005) [#67]
er, I know its an Xbox2 dev kit, but Xbox 2 comes in 3 flavours. Basic, Basic +HD, and a SSF shuttle like windows PC, all built on the same powerPC architecture.

All 3 systems were confirmed by MS a while back, the question is will it be able to run x86 compatible software. They are working on getting Xbox 1 stuff to run on Xbox2 but to my knowledge they arent there yet.

But since the new XboxPC is classed as an entry level PC, will certainly be interesting to see what happens in the next couple of years.


Dreamora(Posted 2005) [#68]
MS still follows the same targets as with the launch of XBox:
Get the games away from Windows as they are the largest source for stability problems etc.

so I don't think they will stop their progress in this direction until all Windows Devs have changed to XBox :)


teamonkey(Posted 2005) [#69]
What is their solution then? I was not able to find it on thier site, nor was I able to confirm the failure rate.

No solution, I think. I PM'd princec this morning and he said that Puppygames' target market doesn't really make that a problem, since those who are in to pseudo-3D shooters will have better drivers (or will upgrade them) and those who aren't won't buy the game even if they do upgrade.

Xbox 2 comes in 3 flavours. Basic, Basic +HD, and a SSF shuttle like windows PC, all built on the same powerPC architecture

The top-end XBox will probably be more like those Media Centre PCs you see nowadays with Tivo-like functionality and heavily locked down. I really doubt that you'll be able to run anything on them that hasn't been Microsoft certified to run on that system. It'll probably run Word and IE well enough though :)


FlameDuck(Posted 2005) [#70]
No solution, I think. I PM'd princec this morning and he said that Puppygames' target market doesn't really make that a problem,
I'm having a little trouble interpreting that response. If their target audience are someone who "has better drivers" yet they still manage to get a 35% failure rate, that's indeed rather alarming! (I'm assuming this failure rate is from buying customers? Hard to know when you don't know the mathematical principles applied to the statistics).

All 3 systems were confirmed by MS a while back, the question is will it be able to run x86 compatible software.
No. The question is "will it be able to execute win32PE binaries, or will they simply refuse to run for no good reason.

They are working on getting Xbox 1 stuff to run on Xbox2 but to my knowledge they arent there yet.
They have VirtualPC. It's not going to be much of a challenge, because unlike everyone else Microsoft are free to make XBox 1 enumalters and if the hardware specs are anywhere near accurate, the XBox2 will certainly have the processing power to deal with an emulator.


teamonkey(Posted 2005) [#71]
I'm having a little trouble interpreting that response. If their target audience are someone who "has better drivers" yet they still manage to get a 35% failure rate, that's indeed rather alarming! (I'm assuming this failure rate is from buying customers? Hard to know when you don't know the mathematical principles applied to the statistics).

Alien Flux reports (or at least it did when it first came out) some quite excellent driver stats when you purchase it IIRC. From what I can gather it should be quite possible to see the number of people who tried two different driver versions before unlocking the full version and you should also be able to see what proportion of people with more recent drivers bought the game.

I like that idea. Every Windows game developer should have access to driver stats :)


Michael Reitzenstein(Posted 2005) [#72]
Cas is a firm believer that those that aren't willing to update their drivers to play his game are unlikely to pay for it anyway - so he doesn't see a 35% failure rate as anything to worry about.

Also, his cost of porting to DirectX is so high that even I wouldn't consider it if I were in his position, so there isn't really anything he can do about it.


jhague(Posted 2005) [#73]
If you isolate your low-level driver calls into one module, then it's easy to port to a different API. You shouldn't have OpenGL calls peppered throughout your code. For example, if you use the max2d module for graphics, then you can switch to DirectX simply by re-engineering that single module. That's no big deal, if you're serious.


dynaman(Posted 2005) [#74]
Mark had posted somewhere that the 3D module would be for directx as well as opengl, so it looks like we get the best of both worlds.


Steve Elliott(Posted 2005) [#75]

Mark had posted somewhere that the 3D module would be for directx as well as opengl, so it looks like we get the best of both worlds.



Are you sure? The nearest quote to that is this...


...so that when/if we come out with a DX/whatever driver, stuff will just work. - Mark Sibly



No commitment there.


skidracer(Posted 2005) [#76]
here


Steve Elliott(Posted 2005) [#77]
Thanks skidracer - I guess this thread can now be closed.


FlameDuck(Posted 2005) [#78]
Mark had posted somewhere that the 3D module would be for directx as well as opengl, so it looks like we get the best of both worlds.
Except he said it will be using DirectX 9 and I believe the current problem is that people don't upgrade theiur drivers. Thus any drivers that don't work properly under OpenGL are likely to run equally poor under DirectX9, and as such, does not eliminate (much of) the problem, as far as I can tell.

Maybe I'm just missing something.


dynaman(Posted 2005) [#79]
> Except he said it will be using DirectX 9 and I believe the current problem is that people don't upgrade theiur drivers.

Well then there is always blitz3d.


Michael Reitzenstein(Posted 2005) [#80]
I kind of think that 'It may or may not be compatible with non-shader hardware' means that Max3D isn't exactly intended to be as compatable with as much hardware as possible. Max2D is a different story.


FlameDuck(Posted 2005) [#81]
Well then there is always blitz3d.
Blitz3D IMHO is no longer a contender. The ease at which you can form complex structures and have them actually working in BlitzMAX in a couple of minutes, eliminates Blitz3D as a serious contender.

Max2D is a different story.
Still. If people are not inclined to "download new drivers to get your game working" there is no way in hell they're going to "download new drivers and DirectX 9 to get your game working".

Incidently I see no mention of how (or even if) this will effect "Max2D" functionality.


Michael Reitzenstein(Posted 2005) [#82]
Still. If people are not inclined to "download new drivers to get your game working" there is no way in hell they're going to "download new drivers and DirectX 9 to get your game working".

Er... exactly?


xlsior(Posted 2005) [#83]
Still. If people are not inclined to "download new drivers to get your game working" there is no way in hell they're going to "download new drivers and DirectX 9 to get your game working".


The point is that Many people already have the directX 9 drivers installed, and that they are a lot less likely to NEED to latest videocard drivers with DirectX simply because historically video card makers have given significantly better treatment to DirectX support than openGL support.

My own laptop for example, I'm looking at a difference of several hundred FPS for directX, and 5-8 FPS for a similar program using OpenGL.


teamonkey(Posted 2005) [#84]
The point is that Many people already have the directX 9 drivers installed, and that they are a lot less likely to NEED to latest videocard drivers with DirectX simply because historically video card makers have given significantly better treatment to DirectX support than openGL support.

If they've got DX9 drivers installed for their card they've already got OpenGL support unless they've got a low-end Intel or SIS card more than three years old. The problem is the people who don't have recent drivers, who only have the version of DX (7 or 8) that's bundled with Windows, and have the same drivers they bought with their PC a couple of years ago.

My own laptop for example, I'm looking at a difference of several hundred FPS for directX, and 5-8 FPS for a similar program using OpenGL.

What laptop, what video card, and what application?