6th May 2008, 11:30 PM
ABF I think I failed to get the idea across here.
Let's try a primer course on DirectX.
What exactly IS directx? It's an abstraction layer. Well yeah but that's hardly all that clear is it? Look at it this way. In the old days, in order to use a piece of hardware's features, you had to directly access that piece of hardware. For example, if you wanted to use a sound card's feature set, you had to know the ins and outs of that sound card. You had to know it's machine codes. Without those, you couldn't do anything. However, there are other ways. Drivers do take some of the stress out of that. DOS Drivers in particular allow someone to only need to know the specific codes to communicate with the drivers, and the drivers will then communicate with the hardware.
DirectX takes this to another level. (The same with other abstraction layers like OpenGL.) What DirectX does is communicate with drivers and hardware itself. A programmer only needs to know the codes to use directx. Ideally, this means that no matter WHAT hardware the computer has, the programmer's code is exactly the same. Telling the card to play a sound is done entirely by directx and is invisible to the program. It has no idea the card is even there, or what card is there, or how it would talk to one if they saw it. All it knows how to do is talk to directx. Now I said "ideally" because all this does is remove the need to learn machine code and work with drivers, but a programmer still needs to consider computers with different capabilities, hence low and high graphics modes. Sometimes they have to actually ignore directx in a sense and STILL need to design specifically for different hardware, in the sense of optimized code that runs better, but they should almost never have to directly communicate with a piece of hardware.
Now here's the thing. The old MS sound system is a primitive abstraction layer. It allowed a program to communicate with the layer instead of the hardware directly.
What I am saying is this. Anything that tries communicating with that layer, whether it's DOS or whatever, is going to get through. SB Audigy isn't designed for DOS, but all that means is the old machine codes won't work any more. It doesn't mean DOS games can't use the card in a way unrelated to machine codes, and an abstraction layer clears that up perfectly. WINDOWS is what is talking to the sound card, not the DOS game. The DOS game is just talking to the sound system, and then the sound system talks to the sound card. Since the sound system is part of windows, it knows all about the drivers and how to communicate with the card so long as that card is installed correctly in Windows.
I hope I've explained it well enough.
Let's try a primer course on DirectX.
What exactly IS directx? It's an abstraction layer. Well yeah but that's hardly all that clear is it? Look at it this way. In the old days, in order to use a piece of hardware's features, you had to directly access that piece of hardware. For example, if you wanted to use a sound card's feature set, you had to know the ins and outs of that sound card. You had to know it's machine codes. Without those, you couldn't do anything. However, there are other ways. Drivers do take some of the stress out of that. DOS Drivers in particular allow someone to only need to know the specific codes to communicate with the drivers, and the drivers will then communicate with the hardware.
DirectX takes this to another level. (The same with other abstraction layers like OpenGL.) What DirectX does is communicate with drivers and hardware itself. A programmer only needs to know the codes to use directx. Ideally, this means that no matter WHAT hardware the computer has, the programmer's code is exactly the same. Telling the card to play a sound is done entirely by directx and is invisible to the program. It has no idea the card is even there, or what card is there, or how it would talk to one if they saw it. All it knows how to do is talk to directx. Now I said "ideally" because all this does is remove the need to learn machine code and work with drivers, but a programmer still needs to consider computers with different capabilities, hence low and high graphics modes. Sometimes they have to actually ignore directx in a sense and STILL need to design specifically for different hardware, in the sense of optimized code that runs better, but they should almost never have to directly communicate with a piece of hardware.
Now here's the thing. The old MS sound system is a primitive abstraction layer. It allowed a program to communicate with the layer instead of the hardware directly.
What I am saying is this. Anything that tries communicating with that layer, whether it's DOS or whatever, is going to get through. SB Audigy isn't designed for DOS, but all that means is the old machine codes won't work any more. It doesn't mean DOS games can't use the card in a way unrelated to machine codes, and an abstraction layer clears that up perfectly. WINDOWS is what is talking to the sound card, not the DOS game. The DOS game is just talking to the sound system, and then the sound system talks to the sound card. Since the sound system is part of windows, it knows all about the drivers and how to communicate with the card so long as that card is installed correctly in Windows.
I hope I've explained it well enough.
"On two occasions, I have been asked [by members of Parliament], 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?' I am not able to rightly apprehend the kind of confusion of ideas that could provoke such a question." ~ Charles Babbage (1791-1871)