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

Aktuelle Zeit: Fr Jul 18, 2025 16:38

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 25 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 07, 2004 00:22 
Offline
DGL Member

Registriert: Mo Apr 05, 2004 19:51
Beiträge: 105
Also, ich hab mich mal schlaugemacht zu dem Thema und bei NeHe vorbeigeschaut. Dort gibt es ein C++ Tutorial zum Thema Multisampling. Dort habe ich für manche der angezeigten Objekte von Hand das Multisampling deaktiviert und für andere aktiviert. Es funktioniert tadellos - es ist also definitiv möglich, für einzelne Objekte das Multisampling (= FSAA) an und auszuschalten (über glEnable(GL_MULTISAMPLE_ARB)). Der Initialisierungsprozess des Multisamplings ist aber mit meinem momentanen Kenntnisstand viel zu kompliziert zu durchschauen und ich weiss noch nicht einmal, ob das überhaupt möglich ist zusammen mit SDL, schließlich wird hier am Pixelformat geschraubt. Aber da ich den Initialisierungsprozess nicht wirklich verstehe (ganz besonders nicht, was SDL genau tut) kann ich das nicht so richtig beantworten. Wenn man das Fenster ohne SDL initialisiert, kann man SDL (und z.B. dessen Events) bestimmt nicht trotzdem verwenden, oder?

Meine ersten Versuche, das Multisampling in meiner Delphi-Anwendung zu aktivieren, sind entsprechend auch kläglichst gescheitert. Naja, falls sich jemand von euch jetzt plötzlich nach diesem Exkurs für das Thema interessiert, wäre ich für Code natürlich sehr dankbar. :)

Insgesamt muss ich dir, SOS, allerdings widersprechen, dass es besser ist, das FSAA dem Benutzer über die Display-Eigenschaften zu überlassen. Erstens war das schon immer nur als Notlösung gedacht (für Anwendungen, die FSAA nicht unterstützen) und zweitens kann man sehr fein kontrollieren was genau anti-aliased wird und was nicht (macht z.B. bei gestückelten Texturen, Text und/oder Menüs und definitiv auch z.B. bei Billboards in 3D-Anwendungen durchaus Sinn).
Man kann ja immer noch einen Schalter im Setup-Programm einbauen, der FSAA für das Programm aktiviert oder deaktiviert und auch die Qualität setzt. Zugegeben, all das ist ein gewisser Extraaufwand, aber es ist auch irgendwie professioneller und man gewinnt eben diese "Detailkontrolle" - womit dann auch solches Gewurschtel wie der 2 Pixel-Rand mit Alphakanal entfällt. Versteh mich nicht falsch, das ist keine schlechte Lösung, aber besser ist es sicherlich, es gleich über die FSAA-Kontrolle "richtig" zu machen. Für 2D-Anwendungen ist es natürlich superklasse - bei Sprites/Texturen kann ich kein FSAA gebrauchen, für Linien, Polygone etc. hingegen schon.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 07, 2004 21:26 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
MultiSampling <> FSAA - FSAA (Full Screen Antialiasing) kann ja schon per Definition nicht auf Primitiveebene funktionieren.
Multisampling ist eine Methode FSAA zu realisieren - es ist nicht die einzige, und es gibt noch andere Dinge, die man damit anstellen kann (u.a. mit den entsprechenden Extensions einzelne Primitive glätten).

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 07, 2004 22:34 
Offline
DGL Member

Registriert: Mo Apr 05, 2004 19:51
Beiträge: 105
Okay, dann habe ich die zwei Worte durcheinandergewürfelt, sorry.
Aber realisieren nicht aktuelle Grafikkarten ihr FSAA über Multisampling? Ich meine das FSAA, das man in den Display-Eigenschaften aktivieren kann (mit 2x, 4x, 8x, ...).


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 07, 2004 22:38 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Die meisten Karten ja. Die Parhelia z.B. nutzt Fragment Anti Aliasing, und die moderneren Radeons (9500 und besser) unterstützen unter MacOS (wegen anderer Treiberstruktur) auch noch Supersampling.

Was mich aber nach wie vor stört, ist die Tatsache das man selbst mit (w)gl_multisample_arb immernoch nicht genug Kontrolle über das AA hat. Da kann der User im Treiber mehr einstellen.

Was auch nicht zu vergessen ist : Wenn der User im Treiber das Anwendungs-AA ausser Kraft setzt und eigenen Einstellungen tätigt, dann ist das was du mit (w)gl_multisample_arb anforderst im Endeffekt umsonst. Von daher bin ich halt immernoch der Meinung das man die Wahl des AAs dem Nutzer überlassen sollte.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 07, 2004 23:20 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich persönlich wäre da als User bestimmt net gewillt irgendwas an meiner GRAKA zu schrauben. Schätze die meisten User machen das auch ungern. Da lieber nehmen sie schlechtere Qualität in kauf, als sich zu bemühen. Folge ist, dass viele Nutzer dann net die beste Qualität zu sehen bekommen. Und dass schlägt sich vielleicht auf ihre Meinung über das Spiel nieder.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 07, 2004 23:22 
Offline
DGL Member

Registriert: Mo Apr 05, 2004 19:51
Beiträge: 105
Ja, so richtig ausgereift ist die ganze Multisampling-Geschichte noch nicht. Für mich wäre es eben in meiner 2D-Anwendung sehr geschickt, wenn ich gezielt die ganze Sache an- und ausschalten kann. Aber wenn ich mich dann darauf verlasse, dass das auch so stimmt (und z.B. keine überlappenden Texturen erstelle sondern sie direkt nebeneinander lege), komme ich doch wieder in Probleme, sobald der User das im Grafikkartentreiber festsetzt.
Vermutlich wird es aber doch darauf hinauslaufen, dass ich die WGL-Erweiterung benutze. Ob ich dann noch Überlappungen in den Texturen verwende oder nicht, überlege ich mir noch.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 06, 2006 17:02 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich habe es gerade mal ausprobiert.
Ich hab einfach 2 Dreiecke gezeichnet und bei dem einen vorher glDisable(GL_MULTISAMPLE_ARB) ausgeführt, beim anderen glEnable(GL_MULTISAMPLE_ARB). Das ergebnis ist eindeutig.
Man kann das mitten während der Runtime wechseln.
Bild
Verwendet: SDL und OpenGL

(Sorry, mir ist gerade eben erst die 2. Seite aufgefallen. Das wurde schon gesagt :oops: )

Gruß Lord Horazont


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 23, 2007 16:16 
Offline
DGL Member

Registriert: Sa Feb 03, 2007 11:10
Beiträge: 26
Wohnort: Dingolfing
Ich hab gerade versucht, Multisampling zu aktivieren (glEnable(GL_MULTISAMPLE_ARB)), bekomme aber ein GL_INVALID_ENUM zurück. Woran kann das liegen? Unterstützt meine Grafikkarte das nicht? Muss ich irgendwelche Befehle davor ausführen? (Außer InitOpenGL usw.) Gibt es andere, leicht zu realisierende AA-Methoden?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 23, 2007 20:57 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
du kannst versuchen das ganze frame in eine textur zu rendern, und dann mehrfach um subpixel versetzt auf den bildschirm bringen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 23, 2007 22:44 
Offline
DGL Member

Registriert: Sa Feb 03, 2007 11:10
Beiträge: 26
Wohnort: Dingolfing
Ist aber auch nicht soo effizient... Am liebsten wäre mir Multisampling mit SDL. Wie kann ich das machen?


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 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 | 15 Queries | GZIP : On ]