AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia OpenGL trotz DoubleBuffer direkt...
Thema durchsuchen
Ansicht
Themen-Optionen

OpenGL trotz DoubleBuffer direkt...

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

Registriert seit: 14. Apr 2009
673 Beiträge
 
#1

AW: OpenGL trotz DoubleBuffer direkt...

  Alt 15. Nov 2014, 15:08
Also ich mache das so. Da ich noch zusätzlich DDP benutze, rendere ich so 20x pro Durchgang und das funktioniert ganz gut.
Rechnest Du die Positionen der Linien vielleicht jedesmal noch mit aus bei einem Renderdurchgang?
Benutzt Du VBOs?

Wie selektierst Du?
Achtung: Bin kein Informatiker sondern komme vom Bau.

Geändert von Jens01 (15. Nov 2014 um 15:13 Uhr)
  Mit Zitat antworten Zitat
BigAl

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

AW: OpenGL trotz DoubleBuffer direkt...

  Alt 15. Nov 2014, 16:39
Estmal vielen Dank für Eure Antworten. Da tun sich ja gleich noch ein paar Fragen auf :

1. @BUG: Was verstehst Du unter "modernem OpenGL"? Ja, momentan schiebe ich alle Linien bei jedem Rendervorgang auf die Grafikkarte.
2. @Jens01: Was meinst Du mit VBOs? Vertex-Arrays die auf der Grafikkarte gespeichert sind und dann abgerufen werden?
3. @Jens01: DDP?

Die selektierten Objekte rechne ich mir anhand meines Modells aus. Ich habe ja sämtliche Anfangs- und Endpunkte meiner Linien. Jeden Anfangs- und Endpunkt rechne ich dann mit gluProject in Bildschirmkoordinaten um. Dann berechne ich den Abstand meines Mauszeigers zur Linie. Meine Funktion hat als Parameter "MaxDistance" in Pixel. Aus allen Linien nehme ich dann die, die innerhalb der Distanz ist und der Maus am nächsten ist. Ist recht aufwändig. Habe da aber leider noch keine andere Idee. Mir fehlt halt auch noch etwas das Gefühl für die umfangreichen Datenmengen. Die Alternative wäre gluUnproject. Allerdings bin ich noch nicht ganz dahintergestiegen wie ich da mit den Z-Koordinaten verfahren soll...

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
Online

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

AW: OpenGL trotz DoubleBuffer direkt...

  Alt 15. Nov 2014, 16:55
Zitat:
Die selektierten Objekte rechne ich mir anhand meines Modells aus. ...
Aah, OpenGL hat einen eigenen Selektionsmodus. Dieser ist wohl für die Zukunft nicht mehr unterstützt und soll angeblich auch langsam sein, aber bei mir funktioniert der noch ganz gut.
Das andere ist dies Colorpicking, da gibt man jedem Objekt eine eindeutige Farbe und rendert so einmal blind durch und kann dann anhand der Pixelfarbe am Selektionspunkt auf das Objekt zurückschließen. Colorpicking geht wohl mit Shader und ohne.
Tutorials :
-Tutorial Selection
-Tutorial Objektselektion
-Tutorial ColorPicking Shader

P.S.: DDP ist eine Art, transparente Objekte darzustellen.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
BigAl

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

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
Online

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

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
Online

Registriert seit: 14. Apr 2009
673 Beiträge
 
#6

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
504 Beiträge
 
Delphi 12 Athens
 
#7

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
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#8

AW: OpenGL trotz DoubleBuffer direkt...

  Alt 15. Nov 2014, 17:14
1. @BUG: Was verstehst Du unter "modernem OpenGL"? Ja, momentan schiebe ich alle Linien bei jedem Rendervorgang auf die Grafikkarte.
Es gibt einige Funktionen, die veraltet sind und aus Performance-Gründen nicht mehr benutzt werden sollten ... z.B. glBegin/glEnd. Hier und hier findest du einiges an Material.
  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 17:56 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