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

Aktuelle Zeit: Do Aug 07, 2025 09:18

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



Ein neues Thema erstellen Auf das Thema antworten  [ 43 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: Shader, Texturen und C++
BeitragVerfasst: Do Sep 01, 2005 13:32 
Offline
DGL Member

Registriert: Mo Aug 15, 2005 11:45
Beiträge: 29
Wohnort: Neuenkirchen
Hallo,

offen gestanden wusste ich nicht so recht, in welches Forum ich diesen Beitrag stellen sollten. Dann habe ich mich mal für dieses hier entschieden ! ;)

Also ich habe eine Frage zu dem GLSL Tutorial von Sascha Willems auf der wiki.delphigl.com Seite.
Hier wird, ziemlich weit unten, ein Beispiel gezeigt, in dem 4 Texturen (RGB / Wasser / Sand / Gras) über die Shader verarbeitet werden. Soweit - sogut !
Nun würde mich aber interessieren, wie ich mit den Texturen in C++ arbeiten muss (Einbinden, Aufrufen, etc.). Denn leider habe ich bislang kein geeignetes "Komplett-Beispiel" hierzu gefunden.

Vielleicht kann mir ja jemand von euch hierbei ein wenig unter die Arme greifen, oder mir evtl. sagen in welche Richtungen ich meine "Google-Suchen" verfeinern sollten. Denn den Shadercode ansich habe ich soweit wohl verstanden - zumindest hoffe ich das ! :D

Mfg

Sebastian !!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 01, 2005 13:42 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Auf meiner Seite hab ich mal ne Demo zur Anleitung von Sascha gemacht. Die is zwar auch in Delphi geschrieben, aber wenn du dir den Code mal anschaust, dürfte eigentlich (wie immer bei OGL-Codes) alles leicht zu portieren sein.

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 01, 2005 14:50 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 13, 2004 11:00
Beiträge: 229
Wohnort: Steinhude
schau mal auf nehe oder auf die deutschen übersetzungen von den tutorials auf http://www.joachimrohde.com/. dort müssten entsprechende tutorials zu finden sein


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 01, 2005 15:17 
Offline
DGL Member

Registriert: Mo Aug 15, 2005 11:45
Beiträge: 29
Wohnort: Neuenkirchen
Mmh, die NeHe Tutorials kenne ich wohl. Das Problem ist vielmehr, dass diese ja reine OpenGl Anwendungen erklären und hierbei keine Shader berücksichtigen. Und das Texturen-Handling ist ja bei der Verwendung von Shadern ein wenig anders.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 01, 2005 19:54 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 13, 2004 11:00
Beiträge: 229
Wohnort: Steinhude
das texturhandling unterscheidet sich fast überhaupt nicht. Der einzige unterschied ist, dass du die nummern der verwendeten texturunitsüber glUniform*ARB in samplervariablen des fragmentshaders übergibst
ach ja und zum thema nehe: http://nehe.gamedev.net/data/articles/article.asp?article=21


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 03, 2005 17:14 
Offline
DGL Member

Registriert: Mo Aug 15, 2005 11:45
Beiträge: 29
Wohnort: Neuenkirchen
So, ich habe mir das alles nochmal angeschaut, nur leider mit wenig Erfolg.
Mir ist nach wie vor klar, wie ich mit den Texturen in den Shadern arbeiten muss. Nur am OpenGL Programm hapert es noch ein wenig.

Es gibt ja verschiedene Befehle, die ich in diversen Beispielen schon gefunden habe:

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture0); //neu
glUniform1iARB(glGetUniformLocationARB(p, "Texture0"), 0);


Oben genannte brauche ich ja auf jedenfall. Aber wo und wie muss ich jetzt meine Textur einbinden, z.B. eine textur.jpg ?
Sorry das ich mich so "dumm" anstelle, nur ist das alles komplettes Neuland für mich und ich muss mich erstmal zurecht finden ! ;)

Mfg

Sebastian


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 03, 2005 21:04 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 13, 2004 11:00
Beiträge: 229
Wohnort: Steinhude
versteh ich das richtig, dass dein problem nichts mit dem shader zu tun hat, sondern nur das laden von texturen ist?
in dem fall such dir bei nehe ein Tutorial zum thema texture mapping.

ansonsten ist mir nicht ganz klar, wo genau das problem liegt


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Sep 05, 2005 11:52 
Offline
DGL Member

Registriert: Mo Aug 15, 2005 11:45
Beiträge: 29
Wohnort: Neuenkirchen
Heisst das denn, das ich so oder so eine "Hilfsfunktion" z.B. LoadTexture() brauche um eine Textur laden zu können ?
So habe ich das nämlich nun verstanden...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Sep 05, 2005 11:57 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Jepp, sowas brauchst du... *im Netz sucht*
Texture-Loader von NeHe

Alternativ kannst du dir natürlich auch selber nen Loader schreiben

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Sep 05, 2005 18:00 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 26, 2002 22:12
Beiträge: 259
Wohnort: Dresden
Du kannst dir diese Hilfsfunktion oder Hilfsklasse auch selbst schreiben. Beispielsweise ein Bitmap oder eine TARGA-Datei zu laden ist nicht weiter schwierig. Bei PNG und JPEG wird es schon schwerer. Schau dir einfach mal die Datei-Spezifikationen an.

Hast du die Daten im Arbeitsspeicher musst du nur noch glTexImage2D oder gluBuild2DMipmaps aufrufen und eventuelle Texturparameter setzen. Dann kannst du die Texturen mittels des OpenGL-Namens, den dir glGenTextures liefert eindeutig identifizieren und mittels glBindTexture binden.
Dieses Thema wird in einem Einsteigertutorial von uns behandelt. Dort kannst du gern noch einmal nachblättern. Lass
Alle Hilfsfunktionen bzw. Hilfsklassen machen nichts weiter als diese Funktionen möglichst so einfach zu kapseln, dass man Texturen mit wenigen Aufrufen laden und nutzen kann.

_________________
Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 09, 2005 11:11 
Offline
DGL Member

Registriert: Mo Aug 15, 2005 11:45
Beiträge: 29
Wohnort: Neuenkirchen
Hallo,

ich bin`s mal wieder ! ;)

So, zunächst einmal danke für die vorhergegangenen Antworten. Ich habe nun einen gut zu gebrauchenden TextureLoader gefunden, der all das macht, was ich von ihm möchte ! Juppie ! :D

Nun komm ich aber direkt zum nächsten Thema: Ich habe nun z.B. ein rechteckiges Bild (Textur) mit 256x256 Pixeln. Durch den Fragmentshader wird bei diesem Bild eine Art "Weichzeichnugsfilter" durchgeführt. Nun ist die Frage "Was mache ich mit dem Ergebnis ?".

Gibt es eine Möglichkeit das neu generierte Bild abspeichern zu lassen ?

Mfg & Ein erholsames Wochenende

Sebastian


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 09, 2005 13:53 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 13, 2004 11:00
Beiträge: 229
Wohnort: Steinhude
http://wiki.delphigl.com/index.php/Screenshot
wär eine möglichkeit, wenn du das ganze auf dem bildschirm hast.
ansonsten über pixelbufferobjects oder GL_EXT_framebuffer_object in eine texture rendern und mit GlGetTexImage aus der graka holen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 09, 2005 14:59 
Offline
DGL Member

Registriert: Mo Aug 15, 2005 11:45
Beiträge: 29
Wohnort: Neuenkirchen
Mmmh, danke. Das sind doch schon mal ein paar Ansätze. Werde mich gleich mal am Montag damit auseinandersetzen. Nun ist erstmal Wochenende ! :)

Mfg

Sebastian


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 13, 2005 12:01 
Offline
DGL Member

Registriert: Mo Aug 15, 2005 11:45
Beiträge: 29
Wohnort: Neuenkirchen
Hallo,

ich habe mir das nun alles mal angesehen und mir ist das noch nicht so wirklich klar.

Ich habe ein OpenGL Fenster mit einem Bildchen 256x256 Pixel, dieses möchte ich nun gerne als neues Bitmap abspeichern.
Kann mir wohl jemand die notwendigen Schritte in eigenen Worten erklären ?

Aus den Dokumentationen von glReadPixel und glGetTexImage bin ich noch nicht so wirklich schlau geworden.

Mfg

Sebastian


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 13, 2005 12:26 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also glReadPixel ließt die angezeigten Pixel (des Fensters) in einen Speicherbereich und glGetTexImage liefert dir den Inhalt der Textur zurück. Bei glGetTexImage spielt es keine Rolle ob die Textur dargestellt wird oder nicht. Solltest du einen PixelBuffer oder ein Framebuffer Object benutzen so liefert dir glGetTexImage den Inhalt des entsprechenden Objektes zurück. Wenn ich Grizzly richtig verstanden habe. (Habe das selber noch net gemacht).

Wenn es wenigstens ein wenig auf Geschwindigkeit ankommt würde ich wohl den Weg über PixelBuffer bzw. FrameBuffer Object wählen und dann mit glGetTexImage mir die Textur zurückgeben lassen.

Wenn aber Geschwindigkeit sehr egal ist kannst du Problemlos mit glReadPixel arbeiten. Dadurch kannst du die Verwaltung der OpenGL Objekte sparen.

Den Speicherbereich müsstest du dann wieder laut Fileformatspezifikation auf die Platte schreiben und dann haste nen Bild.


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


Wer ist online?

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