AntTweakBar Grafik Fehler im Spiel

09/15/2013 12:24 Excepti0n#1
Hallo,

und zwar habe ich derzeit folgende Problematik,
ich habe die EndScene Funktion eines Spieles per MS Detours gehooked, soweit so gut.
Nun habe ich mir die AntTweakBar Library besorgt, eingebunden etc. und rufe diese in meiner gehookten EndScene auf:

Code:
HRESULT D3DHook::EndSceneHook(LPDIRECT3DDEVICE9 pDevice)
{
	Interface.Show(pDevice);
	return pEndScene(pDevice);
}
Code:
void D3DInterface::Show(LPDIRECT3DDEVICE9 pDevice)
{
	if(!_tw_created)
	{
		TwInit(TW_DIRECT3D9, pDevice);
		TwWindowSize(300, 600);
		
		TwBar *bar = TwNewBar("Test");
	
		_tw_created = true;
	}

	TwDraw();
}
Das AntTweakBar Fenster erscheint, allerdings geht die Grafik im Spiel kaputt. :confused:
Hier ein Bild davon:


Wenn ich allerdings ohne diese Library im Spiel Rechtecke, Sprites oder sonstiges zeichne, funktioniert alles einwandfrei.

Weiß jemand woran das liegen könnte?

MfG


Edit: Es liegt am Spiel, allerdings weiß ich nicht wieso, in einem anderen Spiel funktioniert es.
09/18/2013 13:22 Flyff_Service#2
Ich kann da jetzt nur einen Fehler erkennen und zwar verstehst du nicht wofür die TwWindowSize Funktion gedacht ist. Und diese Funktion solltest du eigentlich nicht manuell ausführen, sondern dass der Tweakbar durch die MessageProc, mithilfe der Funktion TwEventWin, überlassen.

[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]
09/18/2013 14:24 Excepti0n#3
Quote:
Originally Posted by Flyff_Service View Post
Ich kann da jetzt nur einen Fehler erkennen und zwar verstehst du nicht wofür die TwWindowSize Funktion gedacht ist. Und diese Funktion solltest du eigentlich nicht manuell ausführen, sondern dass der Tweakbar durch die MessageProc, mithilfe der Funktion TwEventWin, überlassen.

[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]

Doc:

Quote:
Call this function to inform AntTweakBar of the size of the application graphics window, or to restore AntTweakBar graphics resources (after a fullscreen switch for instance).
Ausschnitt aus der Howto:
Quote:
Then you tell the size of the graphic window to AntTweakBar by calling TwWindowSize
TwWindowSize(myWindowWidth, myWindowHeight);
Also ist dort kein Fehler, dass mit dem TwEventWin ist noch garnicht von nöten, solange das Problem weiterhin besteht.

In anderen Spielen funktioniert es ja einwandfrei, ich glaube es liegt ja an den Renderstates, aber das abspeichern & wiederherstellen hat nur einige Grafikfehler behoben, längst noch nicht alle.
09/18/2013 14:44 Flyff_Service#4
Quote:
when the size of the application graphics window has changed, or when the graphics context has been restored (if graphics mode has changed for instance).
Quote:
The size must be the actual client size of the graphics window, excluding system menu and other decorations.
Quote:
Note that if you are using SDL, GLUT, GLFW or Windows (DirectX), the library provides some helper functions to handle events like window resizing.
Ich glaube kaum, dass das Spiel in der Auflösung von 600x300 läuft. Die Größe der Tweakbar setzt du mit TwDefine und nicht mit TwWindowSize. Wenn du der Meinung bist es läge an den Renderstates dann setze diese doch einfach.
09/18/2013 16:12 Omdi#5
Versuchs mal [Only registered and activated users can see links. Click Here To Register...].
Hast du sonst noch irgendwelche Render States gesetzt?
09/18/2013 16:40 Excepti0n#6
Quote:
Originally Posted by Flyff_Service View Post
Ich glaube kaum, dass das Spiel in der Auflösung von 600x300 läuft. Die Größe der Tweakbar setzt du mit TwDefine und nicht mit TwWindowSize. Wenn du der Meinung bist es läge an den Renderstates dann setze diese doch einfach.
Ok, dann habe ich wohl nicht aufmerksam gelesen, das mit der Größe sollte jetzt stimmen.

Quote:
Originally Posted by Omdihar View Post
Versuchs mal [Only registered and activated users can see links. Click Here To Register...].
Hast du sonst noch irgendwelche Render States gesetzt?

Ich selber habe keine Render States gesetzt, allerdings habe ich wie schon erwähnt die Standart States vor dem Zeichnen gespeichert & nachher wiederhergestellt, es werden dadurch nur einige "Grafikfehler" vermieden.
09/19/2013 20:07 Omdi#7
Versuch mal den Stencil Buffer via SetRenderState auszuschalten.
09/21/2013 18:59 MrSm!th#8
Stateblocks zum Speichern und Wiederherstellen der Renderstates wirken oft Wunder.