Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Jul 17, 2025 01:11

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 18 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
BeitragVerfasst: So Feb 26, 2006 17:33 
Offline
DGL Member

Registriert: So Feb 19, 2006 18:52
Beiträge: 110
Hallo,

ich bins schon wieder, sorry.

Nun hab ich ein neues Problem. Ich möchte auf meiner Scene die Begrenzungen der Länder darstellen.
Das sind ja nun ne ganze Menge punkte die da bei jeder Bewegung neu gezeichnet werden müsste.
Kann man das irgendwie anders lösen ?

In der Render Procedure wird ja die Scene immer mit

Code:
  1.  
  2.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  3.   glLoadIdentity;
  4.  


gelöscht. Hmm.....geht das überhaupt irgendwie ?

Matthias


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 26, 2006 18:43 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Die Frage richtet sich primär danach um wieviele Punkte es sich hier tatsächlich dreht. 100-1000 haut jede halbwegs morderne Grafikkarte ohne Probleme über den Jordan und Du brauchst Dir darum eigentlich weniger Sorgen machen. Der nächste Schritt wäre zu prüfen, ob gewisse Teile überhaupt Sichtbar sind. Sieht der Anwender sowieso nur den Bereich von 0 bis 20, so muss man ja nicht den Rest zeichnen. Sollte es wirklich um imens viele Punkte gehen muss man evtl. dazu übergehen das ganze vorzuberechnen und dann in Form einer Textur auftragen um die Anzahl der Punkte minimal zu halten.

Generell ist es jedoch ein absolut typisches Vorgehen die Szene jedes Mal neu zu zeichnen. Theoretisch könnte man das löschen der Szene auch weglassen und nur dann durchführen, wenn ein repaint ausgeführt wird oder sich tatsächlich etwas verändert hat. Das sollte man durchaus leistungstechnisch ziemlich merken. Sobald allerdings Animationen oder häufig Bewegungen vorkommen, wird das ständige löschen und "neuzeichnen" der bessere Weg sein.

Oha und nun habe ich auch noch glatt vergessen, dass man es noch sowas wie DisplayListen und VertexBuffer Objects gibt, die sich natürlich auch anbieten, wenn man besonders viele Triangles zur Grafikkarte befördern muss. Was das Beste "Preis/Leistungsverhältnis" ist, richtet sich jedoch noch der Anzahl der Punkte.

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 26, 2006 19:30 
Offline
DGL Member

Registriert: So Feb 19, 2006 18:52
Beiträge: 110
Hallo,

naja, alle Ländergrenzen sind schon recht viele Punkte, keine Ahnung wieviele das nun sind :-)

Ich werd aber mal schauen ob ich irgendwas mit diesem VertexBuffer anfangen kann.
Das klingt recht gut.

Danke
Matthias


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 27, 2006 01:46 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wenns auf alten Karten laufen soll könnten Displaylisten die bessere Wahl sein. VBOs sind vorallem dahingehend interessant, wenn sich die Punkte ändern würden. Bei statischen sachen, könnten Displaylisten hilfreich sein. Vertexarrays könnten auch noch hilfreich sein, da man relativ leicht LOD implementieren kann. (Indem man z.B. nur jeden 2. Vertex zeichnet)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 27, 2006 09:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Displaylisten bringen besonders auf neueren Karten recht viel, da diese Intern auch nur VBOs benutzen. Auf älteren Karten ohne native VBO Unterstützung bringen Displaylisten kaum einen Geschwindigkeitsvorteil. Der Treiber kann die Daten ja nun mal nicht auf der Karte ablegen. Also müssen sie immer übertragen werden. Das ist dann in etwa so schnell wie iterativ. Es bringt schon etwas nur nicht so viel wie man vielleicht erwarten würde.

Warum habe ich nativ geschrieben. NVidia emuliert auf älteren Karten die VBOs clientseitig. Sie sinn voll funktionsfähig aber keinen Deut schneller als reine VertexArrays.

Evtl kannst du auch hergehen und so machen wie Phobeus es am Rande empfohlen hatte. Mitunter lohnt es sich ja auch deine Punkte in eine Textur zu zeichnen und diese dann zu verwenden. Aber dazu wäre auch mal schön zu wissen was du überhaupt damit vor hast. Also welche Effekte etc??


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 27, 2006 12:25 
Offline
DGL Member

Registriert: So Feb 19, 2006 18:52
Beiträge: 110
Hallo,

also ich hab das jetzt tatsächlich mir einer Displaylist hinbekommen, sieht auch ganz gut aus und geht auch echt schnell.

Was ich damit machen will :

Aloso mein virtualler flieger ( Flugsimulator 2004 ) fliegt da nun so dahin und ich möchte sehen wo ich gerade bin.
Dazu zeichne ich die Ländergrenzen ein und sogenannte FIR Regionen. Sind so wie Zuständigkeitsbereichte von den Controllern. Ist für nichtflieger sicher nicht einfach zu verstehen, funktioniert aber so wie in der realität.
Kennt Ihr sicher, wenn im richtigen Flugzeugt die derzeitige Position auf einem Bildschirm angereigt wird.

Wisst Ihr was ich meine ?

Nun ist es ja in der wirklichkeit so, das immer alle Bereiche von Controllern besetzt sind, wär ja auch schlimm wenn nicht :-). In der Virtuellen Fliegerei gibts nun auch solche Controller, aber es ist eben nicht immer jeder Bereich besetzt, also kontrolliert. Also sollen man bereiche die Kontrolliert sind anders farbig dargestellt sein als solche die nicht kontrolliert sind, damit man weiss wann man sich bei einem Controller melden muss.

Is echt ein bischen kompliziert oder ? :-)

Naja, es geht ja schon und mit ein bischen mehr Übung und natürlich Eurer Hilfe bekomm ich das sicher hin.

Derzeit ist meine Welt immer noch flach wie so ne Briefmarke. Jetzt kommt der nächste schritt das die Welt erst mal rund werden muss, also rund wie Kugel.

Mal sehen ob ich das hinbekomme. Ich weiss noch nicht so recht wie ich da drauf dann die Punkte berechne.

Matthias


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 27, 2006 12:43 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Na, hier treffen sich ja scheinbar gleich zwei komplexe Welten auf einmal. Damit verbundene Mathematik muss man leider immer wieder selbst machen. Aber wenn das ganze mal läuft, fühl dich durchaus dazu genötigt hier evtl. einmal mit ner Demo, Bilder und einem Text darüber zu berichten, k?

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 27, 2006 13:30 
Offline
DGL Member

Registriert: So Feb 19, 2006 18:52
Beiträge: 110
Hallöchen,

natürlich, kein Problem. Das wird zwar ein recht komplexes Programm, aber ich bin auch gewillt meine Erfahrungen ( auch Beispiele ) beim erlenen von OGL hier zur Verfügung zu stellen !

Ich probier grad mit dem Beispiel einer Spere herum, aber es will nicht so aussehen wie auf dem Bild ganz links oder ganz recht, rechts aber ( logisch ) ohne Texturen. Die brauch ich ja auch nicht.

Aber warum sind da die Linien von den breitenkreisen nicht drin ? Hab das Beispiel hier genommen
http://wiki.delphigl.com/index.php/Kugel

Hier ist ein Beispiel dafür ... man sollte hier einen Vermerk ( speziel für Anfänger eben ) hinzufügen wie ein TVector3f definiert wird :-)

Es ist für einen Anfänger frustrierend wenn man endlich ein Beispiel gefunden hat, es voller Hoffnung erst mal so reinkopiert wie es ist und hofft das es geht und dann kommt da ne Fehlermeldung .....


Matthias


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 27, 2006 14:19 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Nun deine Koordinaten sind Kugelkoordinaten soweit ich das weiß. D.h. sie sind nur dann exekt (abstandsmäßig) wenn sie auf einer Kugeloberfläche aufgetragen werden. Was du also brauchen wirst ist eine Funktion, welche dir diese Koordinaten in 3D-Koordinaten umrechnet und zurückliefert. Da die Erde ziemlich groß ist, muss das dann auch noch verdammt genau sein, also 64Bit Wertebereich schätz ich.

Um double zu verwenden musst du "d" verwenden. Siehe Funktions_Anhang.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 27, 2006 14:51 
Offline
DGL Member

Registriert: So Feb 19, 2006 18:52
Beiträge: 110
Hallo,

naja, zur Zeit hakts an der Formel.
Wenn ich ne Kugel hab mit dem Ursprung bei 0,0,0 und einem Radius von ( einfach mal ) 50.
Wie kann ich denn da ne Linie aussen auf die Kugel bringen.
Das ist hier erst mal die Frage :-)

Matthias


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 27, 2006 17:28 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Also di linie wird garantiert nicht gekrümmt. Soviel kann ich schon jetzt sagen (das wäre auch zuviel aufwand, und nicht wirklich nützlich). Nehmen wir mal an die Kugel ist groß genug. Da fällt es nicht auf wenn die Linie gerade ist. Viel wichtiger ist es die Position der Eckpunkte auf der Oberfläche erstmal zu ermitteln.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 27, 2006 17:35 
Offline
DGL Member

Registriert: So Feb 19, 2006 18:52
Beiträge: 110
Hallo,

genau so ist es .... , sagte ich soch, ich versuch die Formel zu finden.


Matthias


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 27, 2006 17:48 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Sorry, da hab ich dich wohl falsch verstanden. Aber somit ist der Weg schonmal klar ;)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 27, 2006 23:17 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 14, 2004 18:56
Beiträge: 804
Wohnort: GER/OBB/TÖL-WOR/Greiling
Die Linie sollte ja auf eine kreisbahn liegen... man bekommt die zwei Punkte also, indem man Punkte auf einem Kreis ausrechnet, das sollte wohl mit den Winkelfunktionen (sin(gibt y-wert) und cos(gibt x-wert)) hinhauen. und am besten degtorad nicht vergessen ;)

(Also einfach in meinetwegen 10°-Abstand Punkte ausrechnen und zu Linien verbinden, schlag ich mal vor.)

EDIT: Ach ja: z-Werte bekommst du dann wohl auch mit den Winkelfunktionen, wenn du dir als entsprechenden Kreis "den Äquator" nimmst.

_________________
Bild

"User Error. Replace User and hit Continue."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 28, 2006 01:19 
Offline
DGL Member

Registriert: So Feb 19, 2006 18:52
Beiträge: 110
Hallo,

gut gemeint, aber ich hab keine Ahnung wie ich das machen soll. Sorry

Ich hab in der Wiki was gefunden, aber irgendwie geht das nicht wirklich.
Ich denek ich verwechsle da was mit den Achsen oder so, echt keine Ahnung.

Ich wollte erat man Kugel hinbekommen, schon das geht irgendwie nicht wirklich.

Matthias


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 18 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 14 Queries | GZIP : On ]