No BLT with DX8?

Started by
82 comments, last by Gazza 23 years, 6 months ago
quote:
If I recall correctly, the official reasoning behind not having any dd upgrade is that they honestly couldn''t think of anything new to implement with DD, and instead decided to focus on the new stuff like shaders and the advancement of d3dx (which will probably be used as a standard wrapper (all it really is) for those just beginning, since they decided to completely wax retained mode (yeah!)).


Personally I can think of a few things that I''ve heard people ask for in DD. Hardware accelerated alpha blits, accelerated 2D scaling/filtering, no need to differentiate between 15/16-bit color modes, etc. etc.

Anyways, I''m not a hardware person so I don''t know how todays cards do 2D but theres not a lot of information on this. Are todays cards faster at 3D than 2D?? I wouldn''t think so, I''d assume that a simple blit from VMEM to VMEM would still be faster than rendering a quad or 2 tris then texturing it, because you wouldn''t need to pass any vertice info over the BUS... but maybe passing the X/Y coords in 2D would be the equivalent of this.

------------
- outRider -
Advertisement
Hi,

I''m working on a 2D game. The game needs to run on computers
which do not have a 3d accelarated videocard (S3 Trio 64 or something like that)

What about the speed, if I use DX8 3D to emulate my 2D Sprite etc.

Is it much slower than using DX7 DD?

Thanx.

DarkStar
Hmmm, I''m kinda looking forward to this all 3d thing. And if you guys freak out about all 3d, using the DirectDraw interface in DX7 and make 2D. Nothing is going to change you guys except Direct3D is going to get better. You can make 2d as if nothing change using dx7, and now you can make better 3d using dx8. Heck, if done right, you can also make better 2d using 3d. Can you say 2.5D programs suddenly making an entrance??

-Blackstream

Imagine Mario. Imagine Mario jumping. Imagine Mario missing the ledge. Imagine Scrambled Eggs. Imagine Mario.
-Blackstream Will you, won't you, will you, won't you, won't you take my virus?-The Mad HackerBlackstream's Webpage
Basically, if you want to do 2D and support older graphics cards, then use Direct Draw from DX7 (As it will still be available in future DirectX releases).
If you are targeting modern hardware, then use the 3D hardware - it is considerably faster to render with polygons than by doing blits. Most modern cards are very bad at doing 2D operations.

In fact, you will probably find that if you run some 2D operations on two cards, the fancy 3D card will probably run slower than the old 2D card.
.. and

Also think about the way things are rendered. Doing a 2D blit involves stopping whatever the card is doing, uploading your data, and then resuming operation.
Sending 3D polygons to the card often results in an immediate return because the polys will be batched and rendered by the card while your program is doing something else.
Think about how you optimize your code to run on Pentium systems (i.e. considering the cache, pipeline stall etc.). You can do similar with 3D hardware which makes things go a lot faster. You can gain almost an extra frame in performance because you throw your list of polys at the card, and get on with the next frame while the card is rendering them.
Hi

But what about the situations where i need to combine the new DX8 Features with 2D Operations, like dynamically changing textures.
I am writing on a game which draws damage on textures, and it can''t be that efficient if i change my render Target all the time. And there is also to much overhead, when i render an black triangle on the correct position to it, just to get one black Pixel ! (Ok i would get the Advantage that i can slowly make areas darker when using alphablending :-))
But in case i don''t wan''t that ? is there any chance to do that with DX8 ?

Lars
--------> http://www.larswolter.de <---------
I can almost guarantee that you wont be able to mix DX8 graphics with DX7 graphics. You can still use DX7 3D with DX7 2D of course, but that would be it.

- Houdini
- Houdini
From the info on the way DX8 is structured, the D3D8 interfaces will not expose the old D3D or DD interfaces, although there is nothing to stop you using DirectDrawCreate/DirectDrawCreateEx and then QueryInterfaceing. To create a D3D interface there is a D3D8Create function. To create the device there is a D3DDEVICEDESC or something that takes whether you want double or triple buffering, your resolution and colour depth etc. if you want a Z-Buffer, and how big your viewport is going to be.
There is nothing to stop you from using the old interfaces.
There is also something quite cool in DX8. Programmeable vertex and pixel shaders. There is a sort of abstract ASM language for programming shaders to light vertices and individual pixels. This makes Phong lighting and shading possible, along with any other perculiar lighting models you may want. You will most likely not have to program pixel or vertex shaders if you don''t want to, there will be defaults, but this is quite a cool option.


Please state the nature of the debugging emergency.


sharewaregames.20m.com

Paulcoz - you rock.
I agree with Lars W.
There has to be some way of accessing memory of testure or surfaces or whatever, else how can you draw onto them? All your classy water effects, holes appering in textures as they are shot, particle systems - Microsoft wants to break all this because it wants to rush out a BRAND NEW, extra good 3D engine and can''t be arsed to write 2D code into it too?

Surely you can still Lock surfaces etc.?

And what people were saying about DirectDraw being "had to set up". Well yes, it''s flexible, but you write (or copy) the functions once and use them everytime. It''s boilerplate code and it''s very easy.


Oh well, Whatever, Nevermind
Oh well, Whatever, Nevermind

This topic is closed to new replies.

Advertisement