DGL
https://delphigl.com/forum/

Transform Feedback... oder auch nicht
https://delphigl.com/forum/viewtopic.php?f=20&t=10420
Seite 1 von 1

Autor:  breakdancingYoda [ Sa Mai 05, 2012 12:24 ]
Betreff des Beitrags:  Transform Feedback... oder auch nicht

Hallo Community,
ich sitze vor meinem Partikelsystem basierend auf Transform Feedback. Doch immer beim Aufruf von glBeginTransformFeedbackNV(); wird der GL-Fehler "invalid operation" erzeugt. Hier der relevante Code:

Code:
  1. [...]
  2. FPrgmUpdate.Bind;
  3. [...]
  4. glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0, FBuffers[FOutBuffer].ID);
  5. FPrgmUpdate.TransformVaryingsLoc(4, @FTransformVars[0],       // ruft nur glTransformFeedbackVaryingsNV()für das Update-Program auf
  6.                                  GL_INTERLEAVED_ATTRIBS);   
  7. glBeginTransformFeedback(GL_POINTS);                          // Erzeugt "invalid operation"
  8. [...] 

Das Programm wird erfolgreich gelinkt, die 4 FTransformVars[] werden mittels glGetVaryingLocationNV() ausgelesen und haben korrekte Werte.
Der Quellcode des Geometry-Shaders (der Vertex-Shader reicht einfach nur die Daten weiter):

Code:
  1. #version 150
  2. [...]
  3. layout(points) in;
  4. layout(points, max_vertices = 1) out; 
  5.  
  6. out vec4 PosAndSize;                        // Varyings für Transform Feedback
  7. out vec4 VelAndLife;
  8. out vec4 Color;
  9. out vec4 Data;
  10. [...]
  11.  
  12. PosAndSize = ~~~;
  13. VelAndLife = ~~~;
  14. Color = ~~~;
  15. Data = ~~~;
  16. EmitVertex();
  17.  

Ich verstehe nicht was da genau die invalid operation ist, vor allem da ich ein anderes Partikelsystem mit dem gleichen relevantem Code habe, das einwandfrei läuft.
Ich würde mich über jede Hilfe freuen...

Autor:  Coolcat [ Sa Mai 05, 2012 13:50 ]
Betreff des Beitrags:  Re: Transform Feedback... oder auch nicht

Es ist häufig hilfreich einen Blick in die Spec zu werfen:
http://www.opengl.org/registry/specs/NV ... edback.txt
(nach BeginTransformFeedbackNV suchen...)

Dort werden einige Möglichkeiten aufgeführt:
  • Primitive Modes von Transform-Feedback und Geometry-Shaderoutput stimmen nicht überein.
  • BeginTransformFeedbackNV wurde aufgerufen während Transform-Feedback schon aktiv ist
  • kein Buffer auf Index 0 gebunden bei INTERLEAVED_ATTRIBS_NV
  • gebundene Buffer passen nicht zu SEPARATE_ATTRIBS_NV
  • ...

Autor:  Aya [ Sa Mai 05, 2012 16:50 ]
Betreff des Beitrags:  Re: Transform Feedback... oder auch nicht

Macht TransformFeedback heutzutage wo es OpenCL gibt eigentlich für soetwas wie ein Partikelsystem noch sinn?

Autor:  Coolcat [ Sa Mai 05, 2012 20:16 ]
Betreff des Beitrags:  Re: Transform Feedback... oder auch nicht

@Aya: Klar, das ist nicht wirklich komplexer als etwa einen VBO mit Daten zu befüllen. Entsprechend flott hat man das eingebaut und kann die gleiche Infrastruktur wie beim Rendern nutzen oder unter Umständen gar direkt im gleichen Pass rendern. => Macht durchaus Sinn wenn man nicht nicht mit OpenCL, CUDA & Co rumschlagen möchte :)

Autor:  breakdancingYoda [ So Mai 06, 2012 12:49 ]
Betreff des Beitrags:  Re: Transform Feedback... oder auch nicht

Ja, an die Specs hatte ich auch gedacht...
Aber alle Fehlerquellen die da stehen könnens eig. nicht sein...
Die Primitivtypen stimmen (points), TF ist noch nicht aktiv, Buffer wird in Zeile 4 an Index 0 gebunden...
und mit INTERLEAVED_ATTRIBS binde ich auch nur einen Buffer...

Das was mich verwirrt ist hauptsächlich dass der gleiche Quelltext (Berechnungen etc mal außen vor gelassen)
in 'nem anderem Programm macht was er machen soll... und hier irgendwie nicht.
Ich bin hier mit meinem GLSL am Ende...

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/