Seite 1 von 1

ExamineKeyboard() und Xtreme3D.dll

Verfasst: 01.03.2005 00:09
von MVXA
Hallo!
Ich hab mal wieder ein kleines Problem, wo ich nicht weiter komme.

Sachverhalt
Ich benutze die Xtreme3D.dll für n paar 3D Animationen. klappt auch alles ganz wunderbar. Screen wird im Fenster und im Vollbildschirm Modus geöffnet und ich sehe auch die Animation. Für die Tastenabfrage benutze ich die PB Interne Lib.

Problem
Mein Problem ist nu, ich kann, wenn ich den Bildschirm im Vollbild modus öffne, die Funktion wie [c]KeyboardPushed(#PB_Key_Escape)[/c] aus der Lib nicht mehr benutzen. Rückgabe bleibt einfach 0. Im Fenstermodus funktioniert alles.

Frage an euch
Gibt es ne andere möglichkeit um komfortable den Input Tastatur abzufragen? Wenn nein, könnt ihr mir erklären warum es sich so merkwürdig verhält ?

Danke :allright:

Verfasst: 04.03.2005 23:32
von netfreak
ja es gibt noch den hier:

Code: Alles auswählen

GetAsyncKeyState_(VK_ESCAPE)
Am besten schaust mal hier:

http://msdn.microsoft.com/library/defau ... ystate.asp
und hier noch die einzelnen Tasten:
http://msdn.microsoft.com/library/defau ... yCodes.asp

Ich weiß aber net ob das auch im Vollbild Modus geht!
Am besten zeigst mal den Code wie du die ESC Taste abfragst!

mfg
netfreak

Verfasst: 05.03.2005 00:10
von MVXA
Eigentlich ganz Normal:

Code: Alles auswählen

    Repeat 
        ExamineKeyboard()
        ;*---
        If KeyboardReleased(#PB_Key_Escape) : Quit = #True : EndIf
        If ScreenMode\scrFullscreen = #False: WindowEvent(): EndIf
        
        ;If bolDebugMode = #True: X3D_SetText_(txtInfo, "FPS: " + Str(FPS)): EndIf
        
        FPS = X3D_Render_()  
    Until Quit = #True

Verfasst: 05.03.2005 12:56
von hardfalcon
Und der PB-Befehl zum Abfragen der Taste, die als letzte gedrückt wurde? Funzt der auch nicht? Oder liegt es vielleicht an der Xtreme3D.dll ? KAnn ja sein, dass die fehlerhaft ist...

Verfasst: 05.03.2005 12:57
von MVXA
Wenn ich des im Vollbild starte, bleibt KeyboardReleased(#PB_Key_Escape) immer 0. Hab ich im Debuger und mit direktem Paint auf den Screen überprüft.

Verfasst: 05.03.2005 12:59
von hardfalcon
Nein, ich meine weder KeyboardPushed() noch KeyboardReleased(). Da ist noch ein anderer PB-Befehl, der die Taste, die als letzte gedrückt wurde, zurückgibt. Werd gleich mal nachsehen, wie der heisst...

//EDIT: Der Befehl heisst

Code: Alles auswählen

KeyboardInkey()
PureBasic Hilfe hat geschrieben:Gibt das zuletzt eingegebene Zeichen zurück, sehr nützlich wenn eine einfache Tastatureingabe für ein Spiel (Name in einem HighScore, in einer Game-Konsole, etc.) erforderlich ist.

Der Befehl ExamineKeyboard() muss vor dieser Funktion aufgerufen werden, um den Tastatur-Status zu aktualisieren.

Verfasst: 05.03.2005 20:45
von Kaeru Gaman
KeyboardPushed/-Released/-Inkey sind zur benutzung im DX-Screen.

falls der Fullscreen-Mode von XTreme3D ein Vollbild-Fenster ist,
kann das nicht funktionieren.

mal rumtesten was was ist, evtl. kann man die Tastatur-Events des 3D-Fensters abfragen...

Verfasst: 05.03.2005 20:48
von MVXA
Ah, ich glaub, ich hab die Lösung. Die Xtreme3D Engine ist eine OpenGL Engine. Vielleicht blockiert das ja die Tastenevents o_O.

Verfasst: 10.03.2005 06:14
von Laurin
Die Lösung ist einfacher als ihr glaubt.

X3D ist eine OpenGL-Engine
ExamineKeyboard() benutzt DirectX.

Das kann beides nicht miteinander funktionieren, da beide den direkten und uneingeschränkten Hardwarezugriff brauchen um zu funktionieren. In deinem Fall nuckelt OpenGL schon dran, so dass DirectX eine Initialisierung von DirectInput (der Teil für die ganzen Eingaben von Maus, Tastatur, Joystick, sonstwas) abbricht.

Benutze lieber GetAsyncKeyState_() wie weiter oben beschrieben.


GReetz Laurin