(Direct3D 9) Graka zeichnet im vollbildmodus farbige streifen
-
sag das der graphikkarte
das hab ich, aber die wollte nich zuhören

was sagt denn die debugausgabe von d3d?
Aaja... die debugausgabe... ist auch noch so eine schräge geschichte

D3DX9D.lib und DXERR9.lib sind eingebunden, Direct3D ist im Debug-Modus, ergebnis: der vertex buffer kann nicht gesperrt werden[was sonst einwandfrei klappt]!!! (fragt nicht nach dem "wieso", ich hab kA was da abgeht). Bei dieser konfiguration gibts nicht einmal farbige streifen...deswegen arbeite ich die ganze zeit mit der retail-version von direct3D

können diese symptome irgendwie zusammenhängen?
-
also, ich meine, was für eine todsünde soll ich denn an dieser stelle begangen haben????

pVertexBuffer->Lock(0,0,(void**)(&pLockedVertexBuffer), D3DLOCK_DISCARD);
-
überschreibst du den _ganzen_ buffer?
hFocusWindow 460044
hast du das hardgecodet!?
-
ganzer buffer? jojo, tue ich... aber was bringts, wenn der ned ma gesperrt werden kann?
hardgecodet???
nein... so bekloppt bin ich (noch) nich
des iss nur zum vergleich da, weil dieser parameter irgendwie zwei mal übergeben werden muss...
-
du bist lustig;) D3D sagt dir dass da was nicht stimmt, du erzaehlst uns aber unwichtiges zeug wie "Nun hab ich meiner meinung nach alles vollkommen richtig initialisiert, es werden auch keine fehler gemeldet, weder während des compilliervorgangs, noch während der laufzeit", obwohl du weisst dass dir d3d in den nacken springt *lol*.
fix dein problem, in der doku sollte stehen weshalb welche fehler auftreten, koennte an falscher groesse, format oder flags liegen, dass du nicht locken kannst.
-
Stell D3D auf Debug-Modus (DirectX Control Panel)!
Dann wirst du mit Tonnen von Informationen in der Debug-Ausgabe überschüttet.
Musst dir dann nur noch das raussuchen, wo er meckert.
-
D3DLOCK_DISCARD:
This is a valid option when using dynamic textures, dynamic vertex buffers, and dynamic index buffers.ähm, okay, jetzt, wo ich nochma drauf hingewiesen wurde, fällt mir auf, dass d3dlock_discard nicht mit normalen vertexbuffern verwendet werden kann. Das steht in meinem buch. das steht in der doku. alle scheinen zu wissen, dass das nicht geht.
aber DX hält sich leider nicht dran
Immerhin hat dieser offensichtlich fehlerhafte code auf 2/3 (!!!) der GraKA's einwandfrei funktioniert
wie sollte ich denn auf die idee kommen, in dem codeschnipsel nach fehlern zu suchen? 
Es ist echt n bissl schwierig zu lernen, wenn man für fehler nicht konsequent, sondern nachm zufallsprinzip "bestraft" wird...naja... egal... tut mir leid leute, bin nächstes mal aufmerksamer

Vielen dank für den tipp!edit:
ach ja übrigens...a) ich hab d3dx9d.lib gelinkt
b) ich hab die konfiguration auf debug eingestellt
c) ich habe Direct3D in den debugmode versetzt
d) ich hab die debug-ausgaben auf maximum hochgeschraubtich lass die anwendung ganz normal "ausführen", und werde jetzt trotzdem nicht von "tonnen von informationen überschüttet"...
was mach ich denn da falsch
?
-
Andrey schrieb:
aber DX hält sich leider nicht dran

ja und gott haellt sich nicht daran dass jeder der ohne zu schauen ueber die strasse laeuft dann auch plattgefahren wird...
microsoft denkt sich doch diese abhaengigkeiten nicht aus um dann einfach nur jeden der die regeln bricht zu bestrafen. es ist einfach nur eine eigenschaft auf die man sich geeinigt hat, wenn ein treiberhersteller das als optimierung nutzen moechte, kackt dein programm halt ab.
Es ist echt n bissl schwierig zu lernen, wenn man für fehler nicht konsequent, sondern nachm zufallsprinzip "bestraft" wird...
stell einfach deinen compiler und dein d3d auf debug und entwickel nicht in release/retail, dann wirst du bestraft, dafuer sind die modis da.
@tomas
den tip gab es hier schon und er hatte darauf auch schon geantwortet
-
..mal eine Frage zwischendurch.. wo befindet sich das DirectX Control Panel und wie kann ich D3D auf den Debugmodus umstellen?(Falls es hilft, ich nutze Visual C++ 2005 Express Edition und das DirectX SDK von Februar)
Danke im Voraus!
-
Start > Programme > Microsoft DirectX SDK > DirectX Utilities > DirectX Control Panel
-
oh man, wo ist der smiley, der sich mit dem hammer auf den kopf haut??
danke!
-
iop schrieb:
...und wie kann ich D3D auf den Debugmodus umstellen?...
das ist mir mittlerweile klar, das habt ihr mir schon mal vor etwa nem halben jahr erklärt
, nur irgendwie wars da schon zu spät, weil ich zu dem zeitpunkt alle fehler mit der logfile und den ganzen "DXGetError..."-funktionen grad wieder ausgebeult hab...aber wo landen denn jetzt die ganzen ausgaben von DX, der ja eigentlich andauernd "meckern" sollte, wenn fehler vorhanden sind? In dem "debug" fensterchen erscheint bei mir (hab MS VS 6.0) zumindest gar nichts...

-
Auch die Debug Libs gelinkt?
-
Andrey schrieb:
a) ich hab d3dx9d.lib gelinkt
b) ich hab die konfiguration auf debug eingestellt
c) ich habe Direct3D in den debugmode versetzt
d) ich hab die debug-ausgaben auf maximum hochgeschraubtwas für debug lib_s_ gibts denn sonst noch?

-
#define D3D_DEBUG_INFO
aber wenn du gar keine debugausgabe bekommst, wird das auch net viel helfen.
hab MS VS 6.0
welche sdk version hast du?
MS hat den support für MSVS6 nämlich eingestellt...
-
"Microsoft DirectX SDK 9.0 Update Summer 2004" heisst das ganze bei mir...
MS hat den support für MSVS6 nämlich eingestellt...
bedeutet das jetzt, dass MSVS 6.0 sich selbst sabotiert?

-
hm, mit summer 2004 sollte es afaik eigentlich gehen...
-
"sollte es" "sollte es" "sollte es"...
ja sollte es, aber letztendlich endet alles wie immer damit, dass ich hier völlig umsonst herumnerve, um schlieslich die fehler alleine mit der logfile gradzubiegen zu dürfen
Naja, egal...Irgendwie scheint's jetzt zu funktionieren, ich lass erstma einfach alles wie es ist, und mach mit den interessanteren teilen des programms weiter, anstatt mich da weiterhin mit der initialisierung herumzuprügeln, 100%-ig wirds wohl nie funktionieren... aber ist ja auch egal, bis ich damit fertig bin, ist das alles sowieso schon hoffnungslos veraltet^^

Danke leute!

-
hast du auch wirklich im output fenster geschaut?
mein VS minimiert das nämlich wenn ich das programm starte...
-
khm... hab jetzt den ganzen kram einfach neuinstalliert, und das gesamte projekt neukompiliert, jetzt erscheint im "Debug" fenster tatsächlich was!

(verdammt, warum hab ichs nich gleich getan?
)naja, wie auch immer... Jetzt funktioniert's, aber ebn nur dann, wenn mit dem programm alles mehr oder weniger glatt läuft.
Und was ist jetzt, wenn das doofe programm die graka voll wegfetzt, und die gar nix mehr anzeigt, bis der rechner komplett neugestartet wird? Kann ich die debug ausgaben in irgendeine datei umleiten? das muss doch irgendwie gehen! Kann mir aber irgendjemand mal sagen wie?
...thx @ all...