![]() |
OpenGL Pong
Wunderschönen guten Tag!
Bin ziemlich neu in Sachen OpenGL und bräuchte eure Hilfe bei meinem Facharbeitsprojekt. Das Problem ist, dass ich mit OpenGL die Schläger erstellt habe und die Bewegung auf die Tasten W/S (Spieler1) und Pfeiltasten hoch/runter (Spieler2) eingestellt habe, jedoch bewegt sich nichts. Hier etwas Quelltext, ich bereue schon meine dummen Anfängerfehler und bedanke mich schonmal! Schläger von einem Spieler:
Code:
OnKeyDown Ereignisse:
//Spieler 1
glTranslatef(-60, 0, 0); glTranslated (0, s1, 0); glBegin(GL_QUADS); glColor3f(0, 1, 0); glVertex3f(-1,1,-1); glColor3f(0, 1, 0); glVertex3f(-1,-9,-1); glColor3f(0, 1, 0); glVertex3f(1,-9,-1); glColor3f(0, 1, 0); glVertex3f(1,1,-1); glEnd;
Code:
Timer zum Bewegen der Schläger:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if Key = word('W') then Spieler1hoch := true; if Key = word('S') then Spieler1runter := true; if Key = VK_UP then Spieler2hoch := true; if Key = VK_DOWN then Spieler2runter := true; end;
Code:
procedure TForm1.Timer1Timer(Sender: TObject);
begin if Spieler1hoch then begin s1:= s1+5; Spieler1hoch:= false; if Spieler1runter then begin s1:= s1-5; Spieler1runter:= false; end; end; end; Grüße, Acid |
AW: OpenGL Pong
Ich habe von OpenGL keine Ahnung, aber wird da wirklich automatisch neu gezeichnet, wenn sich der Wert einer Variable ändert? Das kann ich mir nur schwer vorstellen, daher denke ich, Du müsstest im Timer auch eine Aktualisierung anstoßen.
[edit] P.S.: sry, willkommen in der DP :dp: [/edit] |
AW: OpenGL Pong
Ich bin da auch sehr neu, in der Schule haben wir das leider nicht gemacht, aber danke für den Denkanstoß!:)
|
AW: OpenGL Pong
Du musst deine Rendering-Funktion aus deinem Timer bzw. deiner Hauptschleife herraus aufrufen. Sonst tut sich da nichts. Du veränderst zuerst die Zustände und dann musst du OpenGL sagen, dass es die Änderungen ausgeben soll.
Guck mal hier: ![]() |
AW: OpenGL Pong
Zitat:
Er benötigt eine GLDraw procedure oder was auch immer in dem das GLWindow gelöscht die Matrix neu erstellt und das Window aktualisiert werden muss. Ich vermisse auch den Bezug zur Render Routine (GLDraw) gruss |
AW: OpenGL Pong
Emil, die Frage war eigentlich rhetorischer Natur ;). Es sollte ja wurscht sein, ob OpenGL oder GDI oder GDI+, wenn sich etwas Darstellungsrelevantes ändert, muss man eine Aktualisierung anstoßen.
|
AW: OpenGL Pong
Zitat:
Ah so hast natürlich recht.. gruss |
AW: OpenGL Pong
Delphi-Quellcode:
Entscheidend ist die 4. Zeile. Hier müsste z.B. deine Rendering-Methode aufgerufen werden.
procedure TForm1.Timer1Timer(Sender: TObject);
begin inc(FrameCount); Render; //4. Zeile!!! Aufruf der Rendering-Methode If FrameCount = 20 then begin ErrorHandler; FrameCount := 0; end; end; |
AW: OpenGL Pong
Könntet ihr mir das zumindest irgendwie im Prosatext verdeutlichen, denn ich kenn mich wirklich nicht mit OpenGL aus und hab mir erst vor kurzem ein paar Tutorials angeguckt.:cry:
Vielen Dank im Vorraus! |
AW: OpenGL Pong
Passt denn das Beispiel von FlatIron nicht?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz