DirectDraw with different video cards

Started by
6 comments, last by Awwnelson 21 years, 10 months ago
I''ve been having trouble with my blitter on different video cards. It works fine on my card (voodoo 3 2000), but on some other cards, it seems like the card scales the bitmap before it takes out the given color for the color key, causing the "invisible" color to show up on the edges of the sprite. And one of the images does this even when I don''t scale it. Does this sound familiar to anybody? What can I do to keep this from happening?
Advertisement
I''ve seen the invisible color show up on the edge of a sprite, in fact the whole sprite was ''slightly'' blurred. I have a Geforce2 GTS, and I believe that bilinear filtering is turned on in hardware by default. The way I got around it was to replace my calls to Blt with BltFast. I''m sure there are other ways around it, but that worked for me. Lemme know if that helps.
Unfortunately, I need some of the features of Blt, like scaling and directdraw clipping. I wonder if there''s a way to detect GeForce cards or others with bilinear filtering automatically turned on and turn it off.
I know you can enumerate devices and their caps in D3D but im not positive that library is available in Ddraw. You might want to check out the docs. Hope that helps
-Koz
small quote from the dx docs that should help you.
quote:
Applications cannot control the type of scaling done by the driver, except by setting the DDBLTFX_ARITHSTRETCHY flag in the dwDDFX member of the DDBLTFX structure passed to Blt. This flag requests that arithmetic stretching be done on the y-axis. Arithmetic stretching on the x-axis and arithmetic shrinking are not currently supported in the DirectDraw API, but a driver may perform them by default.
okay, I tried the DDBLTFX_ARITHSTRETCHY flag, that didn''t work. you can enumerate devices and their caps in ddraw, but I wouldn''t even know what i''d be looking for. btw, I also noticed that the objects don''t scale the same way on different cards...there probably isn''t any way to control that, right? I''m totally lost here....
c''mon doesn''t anybody know about this? I can''t be the only person who''s had this problem.
did you try the emulation?
function DirecctDrawCreateEx, parameter lpGUID, pass DDCREATE_EMULATIONONLY.
this will disable haware supported features.

This topic is closed to new replies.

Advertisement