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

Aktuelle Zeit: Fr Jul 11, 2025 03:37

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di Nov 04, 2008 12:55 
Offline
DGL Member

Registriert: Do Okt 30, 2008 00:59
Beiträge: 30
ich habe mir eben den begriff opengl im wiki angeschaut und wollte nachfragen, was diese techniken bedeuten, bzw. was man damit zaubern kann. fangen wir zunächst enimal mit OpenGL 1.1 an:

* OpenGL 1.1 (1997)
o Vertex Arrays
o Texture Objects
o Polygon Offset

nach und nach werde ich neuere versionen hinzufügen, sobald alle fragen zur aktuell diskutierten version geklärt sind.

danke schonmal im voraus. ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 04, 2008 13:05 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 16, 2008 20:26
Beiträge: 158
Wohnort: Berlin
Programmiersprache: c++,c#,java,ruby,php
Wenn du schon im Wiki warst, wieso hast du da nicht gleich die entsprechenden Einträge dazu gelesen? ^^
Falls du das schon hast Entschuldigung, dann hab ich deine frage nicht ganz verstanden.

http://wiki.delphigl.com/index.php/glPolygonOffset
http://wiki.delphigl.com/index.php/Vertexarray
Das andere kann ich jedoch nicht direkt zuordnen xD

_________________
System: Phenom XII X4 955 3,21Ghz , GTX 560 TI, 4GB-Ram, Windows 7 64x


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 04, 2008 13:28 
Offline
DGL Member

Registriert: Do Okt 30, 2008 00:59
Beiträge: 30
danke, habe bisher nur auf http://de.wikipedia.org/wiki/OpenGL geschaut. ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 04, 2008 13:55 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Verwechsel bitte nicht das Wiki von DelphiGL (http://wiki.delphigl.com) mit den Wikis der Wikimedia Foundation wie zum Beispiel Wikipedia (http://de.wikipedia.org). Sowas geschieht öfter und führt zu interessanten missverständnissen.

Und zu Texture Objects: Das dürfte unter glGenTextures, glBindTexture und ähnlichem gefunden werden (die Texture Objects von 1.1 müsste ja einfach die assoziierung der Textur mit allen Eigenschaften und Einstellungen mit der Nummer, dem Objekt, sein, oder?)

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 04, 2008 14:30 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Texture Objects sind ganz normale Texturen. In OpenGL 1.0 gab es noch keine Texturen also wurden die Texture Objects eingeführt. Seit OpenGL 1.1 sind diese fundamentaler Bestandteil von OpenGL. Die heißen Objects, da Texturen über eine ID angesprochen werden. Sozusagen können dadurch im Treiber auch Objekte benutzt werden obwohl die Schnittstelle prozedural ist.

Polygon Offset dient dazu um die Tiefe eines Objektes anpassen zu können. Damit kann man dafür sorgen, dass ein Objekt gezeichnet wird was die selbe Tiefe hat. In erster Linie wird so etwas für normale grafische Darstellung verwendet. Wenn man zum Beispiel mit OpenGL Linien die Flächen eines Objektes nachzeichnen möchte. Aber dafür genügt es meistens einfach schon den Tiefentest anders einzustellen.


So viel dazu. Ich persönlich weiß gerade nicht ob ich diese Vorgehensweise allerdings so gut finde. Denn OpenGL wurde (meistens) immer weiter entwickelt. Mit jeder neuen Version wurde irgendetwas erweitert oder teilweise auch durch neuere Techniken ersetzt.

Texturen sind ein Beispiel für etwas was dauerhaft erweitert wird. Dort kamen unzählige neue Formate, neue Modis zum Zeichnen etc etc etc dazu. Vor OpenGL 1.4 mussten MipMaps zum Beispiel per Hand (oder über glu) generiert werden. Allerdings danach wurde das von der Grafikkarte erledigt. Wenn vorhanden sollte man so etwas auch nutzen. Texturen sind aber vergleichsweise harmlos. Viel schlimmer sind zum Beispiel die folgenden Punkte.

Die in OpeNGL eingebaute Selektion ist eigentlich bis heute das Einzige was OpenGL offiziell anbietet um ein gezeichnetes Objekt wieder ausfindig zu machen. Allerdings ist dieses angewendetet Verfahren nicht so glücklich für aktuelle Grafikkarten. Entsprechend ist sie zu Alternativen um ein vielfaches langsamer. Und der kleinste Fehler sorgt dafür, dass die Selektion eine Art Eigenleben entwickelt. Also absolut nicht zu empfehlen. Heutzutage sollte die Farbselection (hab gerade keinen Link) benutzt werden. Dabei handelt es sich aber eigentlich nur um einen Trick.

VertexArray und Compiled VertexArray sind Möglichkeiten die Daten deiner Geometrie in einem Speicher abzulegen und diesen dann zum Zeichnen zu benutzen. Das Problem da ist diese Technik basiert auf den Anfängen der Grafikhardware. Die Karten hatte da nur einen Speicher für Texturen und für den Bildinhalt. Seit knapp 10 Jahren oder so haben aber Karten auch einen Speicher für VertexDaten. Dazu gab es sowohl von NVidia als auch von ATI jeweils eigene Lösungen die wurden dann später zu VertexBufferObjects zusammengefasst und in Version 1.5 in den OpenGL Kern aufgenommen. Und selbst diese Technik ist so alt und verbreitet, dass man alle anderen Sachen getrost links liegen lassen darf. Selbst wenn die Hardware das nicht kann, dann emuliert der Treiber dies durch VertexArrays. Aber dadurch, dass die Daten auf der Karte liegen ist es um ein vielfaches schneller und bemmst die Grafikkarte nicht unnötig aus.

DisplayListen bringen heutzutage auch kaum noch Vorteile. Ja sie sind schneller als der Imediate Modus. Aber auch nur, weil für VertexDaten intern dann VertexBufferObjects benutzt werden. Aber man nimmt sich Flexibilität, da DisplayListen absolut statisch sind. Vor über 10 Jahren hatte man durch die Funktionsaufrufe etc einiges einsparen können.

Das sind nur ein paar Beispiele. Das kann man noch beliebig erweitern. Eines der Hauptprobleme an OpenGL ist es, dass man historischen Kram mit sich rumschleppen muss. Dort passiert es dann sehr leicht, dass man auf das falsche Pferd setzt. Was vor 10 Jahren noch Gang und Gebe war kann heute zwar noch "funktionieren" aber ist dann keines wegs mehr zeitgemäß oder praktikabel. Deswegen wäre es zu mindest aus meiner Sicht wohl besser, wenn du problemorientiert an OpenGL herangehst bzw nicht mit den ältesten Sachen anfängst sondern mit neueren technologien und im Bedarfsfall dann nach Alternativen suchst.

Ich möchte damit nicht sagen, dass es falsch ist sich mit den Sachen zu beschäftigen. Ganz im Gegenteil. Es ist sehr gut zu wissen was es alles gibt um evtl auch mal über seinen eigenen Tellerrand zu schauen. Nur solltest du besonders bei älteren Sachen sehr vorsichtig sein was deren Gültigkeit angeht. Es werden immer wieder Techniken über den Haufen geworfen um neuere einzuführen. Und den vollen Überblick über alles hat man als Einzelner wohl vermutlich nur selten.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 14 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.007s | 16 Queries | GZIP : On ]