Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#8

Re: Linie zeichen OpenGL

  Alt 17. Mai 2008, 11:11
Mein problem ist dies.
Ich versuche ein objekt zu identifizieren auf dem ich eine aktion ausführen kann wenn denn mal gefunden.

Dafür benutze ich

Delphi-Quellcode:
      if IntersectedPolygonf(vQuad, vLine, 4 , nil) then
      begin
        glColor3f(1.0, 0.0, 0.0);
        // Dieses Quad liegt unter der Maus
      end
Das mit der Linie habe ich verworfen und benutze zum testen lediglich eine Farbe die sich verändert
wenn das Objekt getroffen wird.

Es wird aber nicht getroffen .. deshalb mein ansatz mit dem zeichnen der Linien
was aber nicht geht da ich mehrere Viewports auf der Oberfläsche habe.


Delphi-Quellcode:
  // Kamera ausrichten, damit man was sieht
  glTranslatef(0, -7, -30);

  // Maus verarbeiten
  if FMousePos.X > 0 then
  begin
  if FMousePos.X < 50 then
     ListAngle := ListAngle - pi/4 * ADeltaTime
  else
  if FMousePos.X > _FNormal.Image1.Width - 50 then
     ListAngle := ListAngle + pi/4 * ADeltaTime;
  end;

  vLine[0] := Vector_Make3f(0, 7, 30); // die von glTanslate, nur mal -1
  vLine[1] := MousePosToOpenGl(FMousePos.X, FMousePos.Y);
Diese abfrage MousePosToOpenGl sollte mir eigentlich die korrekte position der Maus zum OpenGL Window zurückgeben
was sie aber nicht tut.
Finde einfache den Fehler nicht.

Deshalb meine überlegung das mal gegenzuprüfen mit einer Linie
welche von der oberen linken ecke zur aktuellen Mausposition gezogen wird damit ich sehen kann ob das Objekt getroffen wird.

Aber leider geht das mit der aktuellen Kameraposition nicht.

Zitat:
Dan übergebe doch alle x, y, z statt nur x, y
habe ich
über glVertex3f

gruss Emil
  Mit Zitat antworten Zitat