AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OpenGL Pong

Ein Thema von acidrain · begonnen am 24. Mär 2012 · letzter Beitrag vom 24. Mär 2012
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
acidrain

Registriert seit: 18. Mär 2012
17 Beiträge
 
#1

OpenGL Pong

  Alt 24. Mär 2012, 12:43
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:
//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;
OnKeyDown Ereignisse:
Code:
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;
Timer zum Bewegen der Schläger:
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

AW: OpenGL Pong

  Alt 24. Mär 2012, 12:46
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 [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
acidrain

Registriert seit: 18. Mär 2012
17 Beiträge
 
#3

AW: OpenGL Pong

  Alt 24. Mär 2012, 12:49
Ich bin da auch sehr neu, in der Schule haben wir das leider nicht gemacht, aber danke für den Denkanstoß!
  Mit Zitat antworten Zitat
FlatIron

Registriert seit: 22. Mär 2012
13 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: OpenGL Pong

  Alt 24. Mär 2012, 12:54
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:

http://wiki.delphigl.com/index.php/Tutorial_Quickstart
Das bügeln wir schon aus
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: OpenGL Pong

  Alt 24. Mär 2012, 12:55
Zitat:
aber wird da wirklich automatisch neu gezeichnet
Definitiv nicht!
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

AW: OpenGL Pong

  Alt 24. Mär 2012, 12:57
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: OpenGL Pong

  Alt 24. Mär 2012, 12:58
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.

Ah so hast natürlich recht..

gruss
  Mit Zitat antworten Zitat
FlatIron

Registriert seit: 22. Mär 2012
13 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: OpenGL Pong

  Alt 24. Mär 2012, 12:59
Delphi-Quellcode:
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;
Entscheidend ist die 4. Zeile. Hier müsste z.B. deine Rendering-Methode aufgerufen werden.
Das bügeln wir schon aus
  Mit Zitat antworten Zitat
acidrain

Registriert seit: 18. Mär 2012
17 Beiträge
 
#9

AW: OpenGL Pong

  Alt 24. Mär 2012, 13:02
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.

Vielen Dank im Vorraus!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#10

AW: OpenGL Pong

  Alt 24. Mär 2012, 13:05
Passt denn das Beispiel von FlatIron nicht?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz