Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
Vinz hat geschrieben:
Meinst Du man sollte wissen, wie OpenGL aus den Vertices und den Matrizen die man ihm gibt, die einzelnen Pixel schafft. Da hab ich nämlich noch nicht so den Durchblick. Wie man die Polygone irgendwo hinkrigt ist mir aber klar, und dass die Normalen die Farbwerte entsprechen verändern usw.
z.B. aber doch eher Sachen wie Kamera, Culling, Blending etc. halt einfach ersma nen bissl rumspielen
Vinz hat geschrieben:
Aber um seine Vektoren zu verschieben,rotieren etc muss man doch nach wie vor irgendwie mit Matrizen arbeiten, oder? Gibts da dann vorgefertigte Funktionen oder muss man die 4x4 Matrizen jedes mal selber schreiben. Kleines Bsp für einen GLTranslate-Ersatz wäre hilfreich.
Jein, es gibt zwar einige Bibliotheken speziell für OGL die sowas machen. Da aber jede halbwegs brauchbare Mathe Bibliothek Helper für Matrizen hat sollte man eher diese nehmen und dann einfach loadmatrix verwenden.
Vinz hat geschrieben:
Wofür brauche ich eig Shader zwingend? Oder ist es für komplexe Projekte bloß handlicher. Soweit ich mitbekommen hab, ist es damit leicht, mehr Detail reinzubringen (Tesslation), was gibt es sonst noch?
Shader oder GPU-Kernel sind einfach nur kleine Programme die von der GPU ausgeführt werden. Die GPU bietet halt den großen Vorteil bzw Nachteil das sie sehr gut Parallel arbeiten kann. Zwingend erforderlich sind sie z.B. für komplexe Operation bei einzelnen Pixeln (z.b. einfach mal Bloom), da nur die GPU aus o.g. Grund genug Power bietet.
Meinst Du man sollte wissen, wie OpenGL aus den Vertices und den Matrizen die man ihm gibt, die einzelnen Pixel schafft. Da hab ich nämlich noch nicht so den Durchblick. Wie man die Polygone irgendwo hinkrigt ist mir aber klar, und dass die Normalen die Farbwerte entsprechen verändern usw.
z.B. aber doch eher Sachen wie Kamera, Culling, Blending etc. halt einfach ersma nen bissl rumspielen
Vinz hat geschrieben:
Alpha-Blending klappt bestens, Kamera mach ich mir mittlerweile selber, Culling bisher nur in Bezug auf Blickrichtung.
Also ich hab schon n kleines Game mit etwas Physik sogar, so isses nicht, gibt halt noch kein Ton und alles sieht sehr mathematisch aus (keine Modelle).
_________________ "Pixel, ich bin dein Vater." -Darf Shader
Gibts da dann vorgefertigte Funktionen oder muss man die 4x4 Matrizen jedes mal selber schreiben. Kleines Bsp für einen GLTranslate-Ersatz wäre hilfreich.
In einem größeren Projekt reichen die alten OpenGL-Mathefunktionen vorne und hinten nicht. Sie sind einfach zu unhandlich weil es keine fertigen Klassen für Vektoren und Matrizen gibt. Gerade in C++ kann man aber Operatoren überschreiben und damit wirklich deutlich übersichtlicheren Code produzieren. Da schreibst du eben einfach nur noch "Matrix * Vektor" statt einer 4x4 Doppelschleife. => Entweder selbst was schreiben oder eine Library suchen die das benötigte kann...bzw. eine Kombination aus beidem Naturgemäß empfehle ich da natürlich mein CoolMath.
Beispiele was man mit Shadern so anstellen kann finden sich im Wiki-Artikel Shader. Echte Beispielshader findest du in der Shadersammlung.
Ok, da ihr mich etwas verwirrt habt, muss ich jetzt noch ein paar allgemeine Fragen stellen:
"C und Pointer" oder "C++ und Objekte" oder "beides"? Was braucht man? Wozu genau?
Ab welcher Version von OpenGL kann ich Shader verwenden, ab welcher fallen meine vertrauten Befehle (Translate,Rotate..) weg, oder besser in welchen Versionen kann ich beides verwenden? OpenGL 4 scheidet übrigens aus, da meine GK das nicht kann.
Wie langsam sind die alten Befehle, verglichen mit Shadern? Wenn ich einen Shader in mein Programm einbringen will, dass mit den alten Befehlen läuft, wie geh ich ran? Geht es überhaupt? Möchte Shader möglichst langsam eilaufen lassen. Ich hätte gerne per Pixel Beleuchtung, ist die als ersten Shader zu empfehlen?
schönen Gruß
Vinz
_________________ "Pixel, ich bin dein Vater." -Darf Shader
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Vinz hat geschrieben:
Ab welcher Version von OpenGL kann ich Shader verwenden, ab welcher fallen meine vertrauten Befehle (Translate,Rotate..) weg, oder besser in welchen Versionen kann ich beides verwenden?
Pixel und Vertexshader gehen auf jeden fall ab OpenGL 2.0, schon vorher aber mit den passenden Erweiterungen GL_ARB_vertex_shader und GL_ARB_fragment_shader (und eventuell mehr).
Vinz hat geschrieben:
Wie langsam sind die alten Befehle, verglichen mit Shadern?
Da spielen eher die VBOs eine Rolle als die Shader, ich denke nicht, dass man bzgl. Shader vs. Fixed Pipeline da eine definitive Antwort geben kann. Zumal man bei aktuelleren Karten fast davon ausgehen können dürfte, dass die „Fixed Pipeline“ auch nur durch Shader emuliert wird.
Vinz hat geschrieben:
Wenn ich einen Shader in mein Programm einbringen will, dass mit den alten Befehlen läuft, wie geh ich ran? Geht es überhaupt?
Ja, das geht. Pixel+Vertexshader ersetzen nur die Transformation und Farbberechnung der Vertices bzw Fragmente. Du kannst also ohne Probleme alle alten OpenGL-Funktionen verwenden, aber deine Beleuchtung in nem Fragmentshader machen. Die alten OpenGL-Matrizen stehen dir auch im Vertexshader zur Verfügung.
Vinz hat geschrieben:
Möchte Shader möglichst langsam eilaufen lassen.Ich hätte gerne per Pixel Beleuchtung, ist die als ersten Shader zu empfehlen?
Ach, so schlimm sind die garnicht . Mein Tipp: Bau dir ein kleines Programm wo du ein oder zwei objekte mit ner Textur hast und live den Shader editieren kannst (also mit Texteingabefeld oder einem Button oder einem Hotkey um den Shader neu von der Festplatte zu laden). Dann kannst du im Betrieb rumexperimentieren und sparst dir viel Zeit und kannst schön lernen . Ansonsten ist Per Pixel Lighting wohl das einfachste (nach einfach Texturierung oder konstante Farbe) was du bekommen kannst, ja.
grüße
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my 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
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
zum rumspielen kannst du auch nen guten Videoplayer wie MPC (kp ob VLC mitlerweile auch schon nen Shadereditor hat) verwenden, dann merkste relativ schnell wies funktioniert
"C und Pointer" oder "C++ und Objekte" oder "beides"? Was braucht man? Wozu genau?
Also C++ ist eine Erweiterung von C die es dir erlaubt Objekt-Orientiert zu programmieren.
Wikipedia hat geschrieben:
Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee dabei ist, Daten und Funktionen, die auf diese Daten angewandt werden können, möglichst eng in einem sogenannten Objekt zusammenzufassen und nach außen hin zu kapseln, so dass Methoden fremder Objekte diese Daten nicht versehentlich manipulieren können.
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
Coolcat hat geschrieben:
Zitat:
"C und Pointer" oder "C++ und Objekte" oder "beides"? Was braucht man? Wozu genau?
Also C++ ist eine Erweiterung von C die es dir erlaubt Objekt-Orientiert zu programmieren.
Wikipedia hat geschrieben:
Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee dabei ist, Daten und Funktionen, die auf diese Daten angewandt werden können, möglichst eng in einem sogenannten Objekt zusammenzufassen und nach außen hin zu kapseln, so dass Methoden fremder Objekte diese Daten nicht versehentlich manipulieren können.
Ergänzend dazu noch: Du kannst alle 3, nennen wirs mal GCC Sprachen, ohne größere Probleme untereinander mischen (vorausgesetzt dein Compiler versteht sie). In vielen Fällen ist dies sogar unbedingt notwendig, und bietet sogar eine ganze Reihe von Voteilen. Problem ist allerdings das es für ObjC keine/kaum Literatur zur Sprache gibt, sondern immer nur zu den Frameworks.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Sehr lange Zeit war der c++ compiler nur ein übersetzer in c, denn alle c++ codes können in c wieder gegeben werden. C++ erspart nur tonnenweise code schreiben, wenn man objekt orientiert in c programmieren will. Die heutigen c++ compiler sind eigenständige compiler, die wesentlich effizienter binary code generieren können, als es erst nach c und dann von c nach binary code zu kompilieren.
Im Info Studium hat man in der regel 1-3 semester, in denen man in die Themen schnuppert und parallel noch kurse für oop, software design, betriebssystem spezifische entwicklung. Danach hat man ein gronen überblick aber programmieren kann man noch nicht ... .
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
yunharla hat geschrieben:
Du kannst alle 3, nennen wirs mal GCC Sprachen
Meinst du Java, Fortran und C++? Oder Ada, Go und c? Oder Obj-C++, Obj-C und Lto? Diese neun Sprachen frisst mein gcc (= gnu compiler collection) nämlich
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my 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
Mitglieder in diesem Forum: 0 Mitglieder und 20 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.