AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi OpenGl-Kurs
Tutorial durchsuchen
Ansicht
Themen-Optionen

OpenGl-Kurs

Ein Tutorial von Mr_T · begonnen am 2. Jun 2003 · letzter Beitrag vom 21. Apr 2005
Antwort Antwort
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

Re: OpenGl-Kurs

  Alt 8. Aug 2004, 08:36
@Mr_T
ich habe da auch noch ein kleines problchen:
(ch fange gerade mal wieder mit OpenGL an, zum ca 4 mal oder so)
ich wollte ein kleines spiel schreiben: skyraodes wo man sich nur nach vorne(die camara soll sich mitbewegen) nach hinten und zu seite bewegen können(die camera soll sich nicht mitbewegen)

dazu gabe ich folgenden code:
Delphi-Quellcode:
begin
  fps2 := fps2+1;
  glMatrixMode(GL_PROJECTION); // In die Projektionsmatrix wechseln
  glLoadIdentity; // Identitätsmatrix laden
  glViewPort(0, 50, ClientWidth, ClientHeight); // Viewport an Clientareal des Fensters anpassen
  gluPerspective(60, ClientWidth/ClientHeight, 1, 128); // Perspective, FOV und Tiefenreichweite setzen
  glMatrixMode(GL_MODELVIEW); //In die Modelansichtsmatrix wechseln

  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); // Farb- und Tiefenpuffer löschen
  glLoadIdentity; // Identitätsmatrix laden
  if mauspos = 1 then rotation := rotation + 1 * timefactor; //Rechtsdrehen
  if mauspos = 2 then rotation := rotation - 1 * timefactor; //Linksdrehen

  if GetAsyncKeyState(vk_up) <> 0 then begin // Nach oben Taste gedrückt? Ja: Bewegen

    ypos := ypos - cos(degtorad(rotation))*0.1*timefactor
  end;

  if GetAsyncKeyState(VK_Down) <> 0 then begin // Nach Unten Taste gedrückt? Ja: Bewegen
    ypos := ypos + cos(degtorad(rotation))*0.1*timefactor
  end;

// glBindTexture(GL_TEXTURE_2D, tex);

  glRotatef(rotation,0,1,0); //Die entgültige Drehung
  glTranslatef(0, 0, ypos); //Die entgültige Bewegung


  glbegin(gl_quads);
    glvertex3f(-1.4,-0.5,-3);
    glvertex3f(-0.2, 0.5,-3);

    glvertex3f( 0.2, 0.5,-3);
    glvertex3f( 1,-0.5,-3);
  glend;

  glTranslatef(0,1,0);
  glpopmatrix;

  glbegin(gl_quads);
    glvertex3f(-1,-0.2,-6);
    glvertex3f(-0.2, 0.2,-6);
    glvertex3f( 0.2, 0.2,-6);
    glvertex3f( 1,-0.2,-6);
  glend;

  // Hinteren Puffer nach vorne bringen
  SwapBuffers(DC);

  // Windows denken lassen, das wir noch nicht fertig wären
  Done := False;

  // Nummer des gezeichneten Frames erhöhen
  inc(Frames);

  // FPS aktualisieren

  if GetTickCount - StartTick >= 500 then begin
    FPS := Frames/(GetTickCount-StartTick)*1000;
    Frames := 0;
    StartTick := GetTickCount
  end;
doch leider bewegen sich die objekte mit bzw. die position verändern sich
(ich verwende eine vorlage von delphiGL.com)
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:33 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