OpenGL-Canvas Event Probleme
Übersicht

![]() |
maximilianBetreff: OpenGL-Canvas Event Probleme |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja, also der Timer war auch nur zu Testzwecken drin, und dieses kleine "Fehlerdemonstrationsprogramm" ist eh nur aus anderen Codepassagen zusammengezimmert. ![]() 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. ![]() |
||
Variety is the spice of life. One day ignore people, next day annoy them. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group