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

Aktuelle Zeit: Fr Jul 18, 2025 19:19

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



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Apr 01, 2010 12:27 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:21
Beiträge: 19
Moin,

Gegeben folgender Shaderkopf (so oder so ähnlich bekannt aus dem GPU Partikelsystem 2):

Code:
#version 120

#extension GL_EXT_gpu_shader4 : require
#extension GL_EXT_geometry_shader4: require

varying out vec4 velocityOut;
...


In meinem Programm will ich mir die Varying Locations für Transform Feedback holen:

Code:
//glActiveVaryingNV(myUpdateShader->getID(), "velocityOut");
myLocMoveVelocity = glGetVaryingLocationNV(myUpdateShader->getID(), "velocityOut");
myLocMovePosition = glGetVaryingLocationNV(myUpdateShader->getID(), "gl_Position");


Bei gl_Position klappt das ganze (gibt 0 zurück), bei velocityOut gibt er mir jedoch -1 zurück. Auch glActiveVaryingNV macht keinen Unterschied. Ich bin darauf angewiesen eine vorgefertigte Shaderklasse zu benutzen und weiß leider nicht, ob es vielleicht am Kompilieren und Linken des Shaders liegt, da ich nur das Interface kenne.

Habe leider keine Idee woran das liegen könnte. Habe das Partikelsystem schon zu Hause am Laufen gehabt (mit OpenGL 3.0) und versuche es jetzt in der institutseigenen Simulationssoftware (OpenGL 2.1) einzubetten.

Gruß,
Marius


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Apr 01, 2010 12:46 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Ich kann nur sagen bei mir funktioniert das so. Ist den die entsprechende Extension für Transport-Feedback überhaupt verfügbar? Es gibt da verschiedene die man nicht mit einander mischen sollte.

Edit: Du erzwingst da GLSL 1.2, vielleicht solltest du 1.3 nehmen?

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Apr 01, 2010 13:06 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:21
Beiträge: 19
GL_NV_transform_feedback ist verfügbar und #version 130 verschafft keine Abhilfe :x


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Apr 01, 2010 13:18 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Rufst du glGetVaryingLocationNV vor oder nach dem linken auf? Bist du sicher das dieses getId() auch wirklich das Programm-Objekt zurückgibt? (die 0 von gl_Position könnte daher kommen, dass gl_Position immer 0 ist oder so)

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Apr 01, 2010 13:20 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:21
Beiträge: 19
Danach, aber beide Varianten führen auf das exakt gleiche Ergebnis.

Edit: Ich frag mal wegen GetID nach, aber das ist die einzige Funktion im Interface, die überhaupt sowas in der Art zurückgibt ;)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Apr 06, 2010 10:12 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:21
Beiträge: 19
Also getID() liefert wirklich den OpenGL Identifier :cry:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Apr 06, 2010 10:25 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Und bist du sicher das der Shader richtig compiliert und gelinkt wurde?

Also evtl macht die ShaderKlasse keine kontrolle ob es fehler gab beim compilieren..? Wenn du die ID hast einfach mal selbst überprüfen.

Bei meinen alten nVidia Karten war immer das problem das er das "#version" nicht kannte und deswegen nie compiliert hat - war eben ein syntax error.

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Apr 06, 2010 10:34 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:21
Beiträge: 19
Aya hat geschrieben:
Und bist du sicher das der Shader richtig compiliert und gelinkt wurde?

Also evtl macht die ShaderKlasse keine kontrolle ob es fehler gab beim compilieren..? Wenn du die ID hast einfach mal selbst überprüfen.

Bei meinen alten nVidia Karten war immer das problem das er das "#version" nicht kannte und deswegen nie compiliert hat - war eben ein syntax error.

Aya~


Normalerweise spuckt der automatisch alle Fehlermeldungen der Shader aus. Die Programm IDs sehen auch vernünftig aus. Die Karte ist übrigens eine 8800gtx und sollte das meines Wissens auch alles können :)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jul 17, 2012 11:40 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
wurde hier eine Lösung gefunden?? Ich stehe vor dem selben Problem..


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jul 17, 2012 15:16 
Offline
DGL Member
Benutzeravatar

Registriert: So Sep 26, 2010 12:54
Beiträge: 238
Wohnort: wieder in Berlin
Programmiersprache: Englisch
Unter Umständen hat der Compiler die Variable einfach wegcompiliert, da sie nicht benötigt/benutzt wurde....... prüfe das doch mal...


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


Wer ist online?

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