[mdlug] Interesting information about Windows "7"
Aaron Kulkis
akulkis3 at hotpop.com
Thu Jan 31 13:45:15 EST 2008
Ingles, Raymond wrote:
>> From: Aaron Kulkis
>
>>> Well, the difference to the end-user is kind of academic.
>> > Either way, you need a particular set of cards to play the
>> > game, or you're SOL.
>
>> But modern windows games are written against the ActiveX
>> API. .. as more cards meet the minimum PERFORMANCE
>> specifications of the game, they too can be used to
>> play the game.
>
> Er, sort of. It's the same game as before - on a higher level, true, but
> from a practical perspective a specific set of cards are needed for the
> games. (It's DirectX, BTW - ActiveX is the horribly insecure web browser
> plugin scheme.)
But as long as a new card meets those minimum performance
and capability standards, it can be any architecture and
GPU the designer chooses, and the game will still work --
regardless of what hardware addresses the control registers,
etc. are placed at. The game is not written for the
specific hardware choices of these original cards, only
their abstract capabilities.
>
>> ActiveX is hardware neutral -- if it wasn't, then Windows games from 3
>> years ago which required what was then bleeding-edge hardware would be
>> completely unplayable on a new system with today's bleeding-edge
>> hardware.
>
> Emulation changes that somewhat. I can run Atari 2600 games on my Palm
> Pilot. I can run old DOS games without anything resembling an ISA Soundblaster
> card in the box. But yes, having an abstracted API helps a lot. The problem is,
> the DirectX API abstraction layer is paper-thin. Entirely too much dependence
> on the underlying hardware leaks through.
I won't doubt you on that point.
>
> Consider "Hardware Transform and Lighting", a key feature of modern games;
> essentially, matrix processing to handle large numbers of vertexes and polygons.
> In OpenGL, you don't have to do anything special to get the benefit of Hardware
> T&L - you just use the standard OpenGL calls, and if they're hardware-accelerated
> they'll operate much faster.
That's true.
If there's hardware acceleration, OpenGL uses it,
it not, then it falls back to the OpenGL libraries.
> In
DirectX, you have to have entirely different
> code paths.
Doesn't surprise me that Microsoft does something even as
simple as this the wrong way.
>
>> the game writer is writing for specific on-card capabilities...which again, is
>> NOT the same as writing for a specific hardware implementation (such as the
>> color palette begins at memory location 0xABCDEF00)
>
> It's a bit higher-level than hardcoded memory addresses, yes. But the implementation
> that Microsoft did - DirectX - leaves so much to be desired.
>
> In a way, you're right - it's possible, for example, to implement DirectX on top
> of OpenGL, as Wine does. However, because of the hardware lumps poking up through
> the API, it's *much* tougher than the converse, implenting OpenGL on top of DirectX.
>
Interesting.
>> That's the WHOLE PURPOSE of an operating system --
>> to abstract common, mass-produced hardware, so that
>> they are roughly interchangeable, to the extent of
>> the capabilities of the hardware (Nobody would expect
>> a 360x360 dpi CMYK printer to produce output on par
>> with a 1440x720 CcMmYK printer. And nobody expects
>> a 5 ppm printer to produce output at the speed of a
>> 20 ppm printer.)
>
> That's a decent analogy... except imagine that the call
> to produce a red dot on the low-res printer was entirely
> different from the call to produce a red dot on the high-res
> printer. DirectX forces that kind of knowledge onto the
> programmer in a rather large number of cases. It's gotten
> much better since the days Carmack slammed it - from what
> I hear, DirectX 9 is not half bad - but it's been a long,
> hard road to that point and the transition isn't quite
> complete yet.
That's amazing that they could go through 9 revisions
and still have such a developer-hostile API.
A simple execution-time initialization sequence could
fill in a function-address table (i.e. all calls are to
*funcp() instead of to func()), which is filled in
with either the "slow" way, or a short routine which
calls the hardware accelerated version.
Or even simpler, the vendor-supplied drivers could
provide the data for which functions are hardware
accelerated, and which are not.
It's not that difficult and I haven't programmed in
20 years. What's wrong with those people that they
can't come up with a simple, reliable solution like
this? The application/game programmer should NEVER
have to be aware of these things.
>
> Sincerely,
>
> Ray Ingles (313) 227-2317
>
> Spammers seem to assume that you are heavily in debt, under-endowed,
> impotent, jobless, without a college diploma, without insurance, in
> need of prepaid legal representation, and need to investigate those
> closest to you. In other words, they are selling to themselves!
Too true!
More information about the mdlug
mailing list