Direct3D and Hardware acceleration

Started by
4 comments, last by Klaatu 20 years, 4 months ago
I''ve been tracking a "weird" problem for about two weeks. Using DirectX 9, I nad several instances where a back buffer would not present to the screen after the primitives were rendered. It appeared like a timing issue since I could get the missing primitives to display if I "refreshed" the screen through an application mechanism. I''m using an NVidia TNT2 card; I have updated the drivers to the latest; I updated the DirectX SDK to the "summer" version; the device is created as D3DDEVTYPE_HAL. Yet, the problem(s) remained. For no apparent reason, I toned down the Hardware acceleration in Windows display properties applet to a setting that says "Disable all DirectDraw and Direct3D accelerations....". Now, the display problems no longer exist. What gives? Have I sacrificed performance to solve a problem? Gort...Klaatu, Barada Nikto!
Gort...Klaatu, Barada Nikto!
Advertisement
What flags do you create your vertex buffer with?
____________________________________________________________AAAAA: American Association Against Adobe AcrobatYou know you hate PDFs...
See below for snippet:

// Create the vertex buffer.
if( FAILED(pDirect3DDevice->CreateVertexBuffer(
numverts*sizeof(CUSTOMVERTEX), // length
D3DUSAGE_SOFTWAREPROCESSING | D3DUSAGE_WRITEONLY,// usage
D3DFVF_CUSTOMVERTEX, // vertex format
D3DPOOL_DEFAULT, // memory class
&pDirect3DVb, // ptr to intf.
NULL))) // reserved


Gort...Klaatu, Barada Nikto!
Gort...Klaatu, Barada Nikto!
I''ve noticed this on other nVidia cards (might happen on ATI, but we all have nVidia at work). Some polygons flicker, drawn sometimes, not other times. If you force Windows to pause by clicking on the title bar of the window, the image always looks perfect. It may be D3D, or it may be nVidia''s driver. I''ve never seen it in a small enough app to send to either nVidia or MS for an investigation.
quote:Original post by Klaatu
I''ve been tracking a "weird" problem for about two weeks. Using DirectX 9, I nad several instances where a back buffer would not present to the screen after the primitives were rendered. It appeared like a timing issue since I could get the missing primitives to display if I "refreshed" the screen through an application mechanism.

Just to make sure I understand: The back-buffer isn''t presented at all (i.e. the frame is skipped) or the presentation is delayed until you force it in some way?

Muhammad Haggag

As best I can tell, the frame is presented but never appears on the screen. To debug this, I created a function that would build a bitmap of the back buffer an instant before the Present() method is called. The bitmap contains a perfect image. The image, however, never makes it to the screen. I can force it to the screen with another function that basically recreates the image via a toolbar button. It''s almost like the I/O is getting blocked for some reason. And as I said, the problem disappears if I turn down the hardware acceleration within Windows XP.

Gort...Klaatu, Barada Nikto!
Gort...Klaatu, Barada Nikto!

This topic is closed to new replies.

Advertisement