AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Erkennen wenn object den Boden berührt (OpenGL)
Thema durchsuchen
Ansicht
Themen-Optionen

Erkennen wenn object den Boden berührt (OpenGL)

Ein Thema von EWeiss · begonnen am 17. Jul 2008 · letzter Beitrag vom 17. Jul 2008
 
EWeiss
(Gast)

n/a Beiträge
 
#3

Re: Erkennen wenn object den Boden berührt (OpenGL)

  Alt 17. Jul 2008, 07:01
Zitat von DGL-luke:
Die glColor-Aufrufe sehen übrigens recht redundant aus

Also, das was du hier machst, ist ja praktisch Collision Detection.

Such dir da n Algorithmus aus dem Internet, um einen Kreis gegen eine Oberfläche zu kollidieren.

Allerdings würde ich dir empfehlen, dafür Metaobjekte zu definieren, und nicht direkt mit den Grafikroutinen zu arbeiten.

Allerdings sehe ich hier auch nirgends, wo du die Position der CD festlegst...
Zitat:
Die glColor-Aufrufe sehen übrigens recht redundant aus
ja könnte praktisch so vorgehen

Delphi-Quellcode:
  glBegin(GL_QUADS);
    glColor4f(0.0, 0.0, 0.0, 0.7);
    glVertex3f(-15, 0, 15);
    glVertex3f(-15, 0,-15);
    glVertex3f( 15, 0,-15);
    glVertex3f( 15, 0, 15);
  glEnd();
  glDisable(GL_BLEND);
Da eh alle gleich sind habe das versäumt war vorher nicht so
Durch das ändern weil sich die Farben immer verändert haben habe ich die 3 zeilen nicht entfernt
Danke für den Hinweis.

Ja werd da mla im Internet was suchen da was selbst zu machen wäre dann doch zu aufwendig.

EDIT:
Allerdings sehe ich hier auch nirgends, wo du die Position der CD festlegst...
Die hat ja keinen festen punkt da sie routiert.

Aber hier wird sie festgelegt wenn du das meinst

Delphi-Quellcode:
function RenderCompactDisc(This_Mod: PWinAMPVisModule): integer;
Var
  Y : GLFloat;
  I : integer;

begin
  
  // Reset the matrix:
  glLoadIdentity;

  Inc(rDisk);
  if rDisk > 3780 then
    rDisk := 180;


  BackGroundBeat := 0;
  for I := 0 to 9 do
    BackGroundBeat := BackgroundBeat + This_Mod^.spectrumData[0][I] +
                                       This_Mod^.spectrumData[1][I];
  BackgroundBeat := BackgroundBeat / 10 / 32;

  if BounceBeat then
    Y := BackGroundBeat
  else
    Y := 0;

  if ShowCover then
    // Move our cd 34 units into the screen:
    glTranslatef(0, 4, -34 +Y)
  else
    glTranslatef(0, 0, -DiskPosition+Y);

  if rDisk > 180 then // If more than 2 seconds has passed:
  begin
    // Rotate our geometry a little around each axis:
    glRotatef((rDisk - 180+Y) * 0.8 , 1, 0, 0);
    glRotatef((rDisk - 180+Y) * 1 , 0, 1, 0);
    glRotatef((rDisk - 180+Y) * 0.1 , 0, 0, 1);
  end;

  Result := 0;

end;
gruss Emil
  Mit Zitat antworten Zitat
 


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 13:12 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