AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia OpenGL trotz DoubleBuffer direkt...

OpenGL trotz DoubleBuffer direkt...

Ein Thema von BigAl · begonnen am 15. Nov 2014 · letzter Beitrag vom 16. Nov 2014
Antwort Antwort
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
515 Beiträge
 
Delphi 12 Athens
 
#1

AW: OpenGL trotz DoubleBuffer direkt...

  Alt 15. Nov 2014, 17:20
Hallo Jens01,

das mit den Tutorials habe ich mir angesehen. Da tun sich aber einige Probleme auf. Zum einen reden wir von > 100k Objekten. Die Objekte sind nur Linien. Ich will also schon selektieren, wenn ich schon in der Nähe des Objekts bin. Und lösen tut das mein ursprüngliches Problem auch irgendwie nicht: Wie zeichne ich temporäre Dinge, die ich dann ein und wieder ausblenden kann, ohne dass ich alles neu zeichnen muss...

Am ehesten - für die Selektion - würde wohl noch das mit glLoadName gehen. Da muss halt dann für jede Linie eine ID (Cardinal) abgelegt werden...

Gruß
Alex
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
675 Beiträge
 
#2

AW: OpenGL trotz DoubleBuffer direkt...

  Alt 15. Nov 2014, 17:54
Also das mit den 100k Linien kann ich Dir leider auch nicht lösen. Reduzieren kann man das vielleicht, dass man Linien, die nicht sichbar sind, ausläßt. Mit den VBOs (Vertex-Arrays ua.) könnte eine Lösung sein, da bin ich aber leider nicht so drin.
Das mit der Näherung löst man -soweit ich das weiss- mit unsichtbaren Objekten um die Linie herum.
Also bei einem zu selektierenden Punkt nimmt man eine unsichtbare Kugel, wobei der Punkt der Mittelpunkt der Kugel ist. Wenn jetzt die Kugel selektiert wird, dann.. eben der Punkt.

Ich glaub, dass ist so ähnlich wie bei den Kollision-Tutorials:
Tutorial Kollision 1-3
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
675 Beiträge
 
#3

AW: OpenGL trotz DoubleBuffer direkt...

  Alt 15. Nov 2014, 18:03
Moment, bei dem Selektionmodus kann man auch die Größe des selektieren Bereichs angeben. Mußt man genau gucken, ob dir sowas helfen kann.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
515 Beiträge
 
Delphi 12 Athens
 
#4

AW: OpenGL trotz DoubleBuffer direkt...

  Alt 15. Nov 2014, 18:34
Hallo Jens,

langsam wird's interessant. Ich habe gerade nochmal in den Tutorials rumgeschnüffelt. Wo meinst Du kann man im Selektionsmodus den Bereich angeben?

Alex
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
675 Beiträge
 
#5

AW: OpenGL trotz DoubleBuffer direkt...

  Alt 15. Nov 2014, 19:46
gluPickMatrix -> width, height
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
515 Beiträge
 
Delphi 12 Athens
 
#6

AW: OpenGL trotz DoubleBuffer direkt...

  Alt 15. Nov 2014, 20:13
Danke Jens! Da werde ich mal mit rumspielen...

Alex
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
515 Beiträge
 
Delphi 12 Athens
 
#7

AW: OpenGL trotz DoubleBuffer direkt...

  Alt 16. Nov 2014, 21:54
So, habe mal etwas mit den Funktionen zur Selektion rumgespielt. Allerdings muss ich sagen, dass meine selbstgeschriebene Funktion da wesentlich effektiver (und schneller) ist. Damit die vorgestellten Funktionen funktionieren muss ich jeder einzelnen Linie einen Namen geben. Dann muss ich für die Selektion die ganze Szene neu renderen...

Beim meiner Methode rechne ich einfach jede Linie mit gluProject in Bildschirmkoordinaten um. Dann prüfe ich, wie weit mein Punkt (X, Y) im 2D-Raum von der Linie entfernt ist. Alles was größer als meine erlaubte MaxDistance ist wird verworfen. Befindet sich mein Punkt außerhalb eines Rechtecks um die Linie (ebenfalls um max. Distance vergrößert) dann rechne ich schon gar nicht und verwerfe die Linie sofort. Der einzige Haken dabei ist, dass ich momentan auch verdeckte Linien selektieren kann...

Über mein eigentliches Problem - das Zeichnen eines Selektionsrahmens bzw. das hervorheben von Elementen - habe ich auch nochmal nachgedacht. Das Ganze wäre recht einfach, wenn man Zugriff auf die Hintergrundpuffer hätte und diese kombiniert in den Vordergrund stellen könnte. In einem Puffer befindet sich dann die bereits gerenderte Ansicht. In einem zweiten Puffer könnte man dann irgendwas zeichnen. Das ganze kombiniert sollte man dann in den Vordergrundpuffer übertragen können. Leider gibt es ja immer nur SwapBuffer und nicht irgendwie DrawBuffer oder so... Verflixt. Das Ganze macht mich noch kirre...

Alex
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:51 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