GUI Design gut?
-
GUIFreak schrieb:
Ich geb wirklich alles frei was auch nur annähernd mit Direct3D in Verbindung kommt.
Wenn du das tätest würde die Debug Runtime nicht schreien dass du vergisst was freizugeben...
-
Also, wenn ich tatsächlich was vergessen hätte, was nimtm bei 2 Dreiecken dann 80-110 kb in Anspruch?
Und das seltsame ist, wenn ich alle Release() weglasse schwankt der Wert im Debuger immer noch zwischen 80 und 110kb....
Wenn ich das ganze jetzt als 64-Bit Programm installiere bleibt der Debuger ruhig.
Wird dann tatsächlich alles freigegeben, oder gibts für 64-Bit keine D3D Debug Runtime?
-
Ich arbeite im Moment auch an einem Projekt mit D3D (9), und da kommen keinerlei Meldungen wenn ich alles freigebe (und wenn ich nicht alles freigebe kommen genau so die "MemFini" Meldungen). Ist auch ein 32 Bit Programm. Viel mehr kann ich dazu nicht sagen.
Poste mal deinen Code, vielleicht findet sich jemand der da mal drübersieht
-
Hmm,
ich wollte den Code mal kürzen, damit der einfacher zu lesen ist, und shcon hat sich das Problem in Luft aufgelöst....
Ich probier jetzt nochmal nen bisschen rum, ob ich genau die Quelle finde, ansonsten lade ich einfach alles hoch.
-
Fehler gefunden.
Da kamen sich WinApi und DirectX an irgendeiner abgelegenen Stelle irgendwie in die Quere
Hab das ganze jetzt eleganter gelöst.
-
GUIFreak schrieb:
Da kamen sich WinApi und DirectX an irgendeiner abgelegenen Stelle irgendwie in die Quere
Das halte ich jetzt fast für ein Gerücht
-
hustbaer schrieb:
Das halte ich jetzt fast für ein Gerücht
Nun gut, kann auch an meiner schlechten Programmierung legen, aber hauptsache Problem gelöst
Jetzt wollte ich mir DirectInput ein bisschen rumspielen, damit man mit meinem GUI auch was anfangen kann, nur irgendwie bekomme ich da keine Debug Version von. Im DirectX Control Panel ist alles grau unterlegt.
Bild
Das ganze ist übrigens auch bei DirectX10/11 bei mir so.
Bild
-
Debug Runtimes installieren.
-
DirectInput ist veraltet und sollte, außer für entsprechende Joysticks, nichtmehr verwendet werden. Nimm stattdessen Windows Messages.
-
dot schrieb:
DirectInput ist veraltet und sollte, außer für entsprechende Joysticks, nichtmehr verwendet werden. Nimm stattdessen Windows Messages.
Öhm... google sagt mir das alles genau andersrum. Windows Messages sollen unnötig langsam sein und mit DirectInput bietet direkten Hardwarezugriff.
Auch liest an, dass das ganze nicht veraltet ist, sonder nur bei Version 8 stekcen geblieben ist, da ab da keine nennenwerten tollen Neuerungen bei Eongabegeräten kamen.
-
GUIFreak schrieb:
Öhm... google sagt mir das alles genau andersrum. Windows Messages sollen unnötig langsam sein und mit DirectInput bietet direkten Hardwarezugriff.
Auch liest an, dass das ganze nicht veraltet ist, sonder nur bei Version 8 stekcen geblieben ist, da ab da keine nennenwerten tollen Neuerungen bei Eongabegeräten kamen.Dann googlest du falsch:
http://msdn.microsoft.com/en-us/library/ee418864.aspx#DirectInput schrieb:
DirectInput creates a second thread to read WM_INPUT data, and using the DirectInput APIs will add more overhead than simply reading WM_INPUT directly. DirectInput is only useful for reading data from DirectInput joysticks; however, if you only need to support the Xbox 360 controller for Windows, then use XInput instead. Overall, using DirectInput offers no advantages when reading data from mouse or keyboard devices, and the use of DirectInput in these scenarios is discouraged.
http://en.wikipedia.org/wiki/DirectInput schrieb:
Microsoft recommends that new applications make use of the Windows message loop for keyboard and mouse input instead of DirectInput
-
Deutsche Wikipedia schrieb:
Der Zugriff über DirectInput umgeht das Windows Message System (das heißt Ereignis-, Melde- und Warteschlangen) und erfolgt direkt auf die Hardware; ein Geschwindigkeitsvorteil gegenüber der Win-32 API.
directxtutorial.com schrieb:
First of all, Windows does not send you data about actual keystrokes. Instead, you get what the result of the keystroke should be in a typical application. For instance, you can't tell which ENTER key was pressed, and you can't tell if the user is pressing numbers on the keypad or on the full keyboard. DirectInput gives you raw data, meaning you get a signal when a specific button is down, regardless of that button's meaning.
Second, Windows filters most keystrokes with keyboard repeat delays. If you want to override this, DirectInput is the simplest way.
Third, while the Windows mouse is fast enough, getting information about where the mouse is located can be slow, and can result in mouse lag. If you have ever played a game with mouse lag, you'll know how bad that can be. It usually is enough to make you stop playing for that reason alone. DirectInput bypasses normal Windows functions and gets information from the mouse directly. There's no input lag at all.
Das waren Beispiele dafür, was ich alles gelesen habe, aber irgendwie scheint das ziemlicher Mist zu sein
Sollte das bei der Wikipedia nicht mal geändert werden, denn so wie ich es jetzt verstanden habe, benutzt DirectInput ja die MessageQueue...
-
GUIFreak schrieb:
Das waren Beispiele dafür, was ich alles gelesen habe, aber irgendwie scheint das ziemlicher Mist zu sein
Ist es
DirectInput ist schon seit langer Zeit deprecated. Verwend stattdessen Windowsmessages, die sparen dir auch viel Ärger weil sie sich autom. um so viele Dinge kümmern, denk einfach mal an so Kleinigkeiten wie die Repeat Rate wenn du eine Taste gedrückt hältsts, usw.
-
Ich hab noch ein Problem... WUHU
Wenn ich bei jedem Renderdurchlauf die Textur neu zeichne, wird auch alles korrekt angezeigt. Wenn ich jezt ber z.B. nur ganz am Anfang des Programmes auf die Textur zeichne, und ich sie dann einfach nur rendern will, ist sie immer leer.
-
Problem tritt nach 3 mal neu kompilieren wie von WUnderhand nicht mehr auf...