OpenGL-Canvas Event Probleme

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

maximilian

Betreff: OpenGL-Canvas Event Probleme

BeitragSo, Mai 07, 2006 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe festgestellt, dass es ein paar Probleme gibt mit OGL wenn man einen Canvas-Hook kombiniert mit einer Eventschleife. Könntet ihr mal testen, ob, wenn ihr irgendwo aufs Canvas klickt, der Punkt sofort und ohne Verzögerung dort erscheint? Bei mir tut er das nämlich nicht, nur bei DX oder wenn ich alles in den Hook packe, was nicht meine Absicht ist.

Code: [AUSKLAPPEN]
SuperStrict

'SetGraphicsDriver D3D7Max2DDriver()
SetGraphicsDriver GLMax2DDriver()

Local window1:TGadget = CreateWindow("Canvas", 100, 100, 640, 480, Desktop(), WINDOW_TITLEBAR | WINDOW_RESIZABLE)

Global canvas1:TGadget = CreateCanvas(0, 0, ClientWidth(window1), ClientHeight(window1), window1)
SetGadgetLayout canvas1, 1, 1, 1, 1

Global box_x:Int, box_y:Int, in_canvas:Byte

CreateTimer 60
AddHook EmitEventHook, CanvasHook


Repeat

WaitEvent()

Select EventID()

Case EVENT_MOUSEENTER
in_canvas = True
Case EVENT_MOUSELEAVE
in_canvas = False
Case EVENT_MOUSEDOWN
If in_canvas = True Then
box_x = EventX()
box_y = EventY()
End If
Case EVENT_WINDOWCLOSE
End

End Select

Forever



Function CanvasHook:Object(id:Int, data:Object, context:Object)

Local event:TEvent = TEvent(data)

Select event.id

Case EVENT_GADGETPAINT
SetGraphics CanvasGraphics(canvas1)
SetViewport 0, 0, GraphicsWidth(), GraphicsHeight()
Cls
SetColor 255, 0, 0
DrawOval 0, 0, GraphicsWidth(), GraphicsHeight()
SetColor 255, 255, 255
DrawOval box_x-5, box_y-5, 10, 10
Flip
Case EVENT_TIMERTICK
RedrawGadget canvas1

End Select

Return data

End Function
Variety is the spice of life. One day ignore people, next day annoy them.

simi

BeitragSo, Mai 07, 2006 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
mh, merkwürdig....
Bei mir habe ich genau das gleiche Problem....

Allerdings ist deine methode sehr ineffizient:
Du zeichnest immer das Canvas neu, egal ob sich etwas geändert hat.... Am besten vergisst du den Timer einfach, und zeichnest einfach das Canvas neu, wenn auf das Canvas geklickt wurde (nur dann gibts ja etwas neues).

cu simi

maximilian

BeitragSo, Mai 07, 2006 15:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, also der Timer war auch nur zu Testzwecken drin, und dieses kleine "Fehlerdemonstrationsprogramm" ist eh nur aus anderen Codepassagen zusammengezimmert. Rolling Eyes

Ist wirklich sehr komisch. Was mich noch interessieren würde, wäre auf welchen Betriebssystemen das passiert. hamZta nämlich hatte auf seinem Mac keine Probleme damit. Neutral
Variety is the spice of life. One day ignore people, next day annoy them.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group