Sign in to follow this  
Shirakana2

Transform feedback

Recommended Posts

Shirakana2    500
Hi !
I'm trying to implement an algorithm using Transform Feedback feature but I'm having trouble reading the data back to process them. I may do something wrong but I really can't figure out what. Please help !

Here is the initialization stuff:

--------------------
// Data structure to store Eye space position and Screen Space position
struct ES_AND_SS {
float x,y,z;
int u,v;
};

// Buffer to store data
ES_AND_SS* tabData;

// Varying names to be recorded from vertex shader output
static const char* varyingNames[] = {
"ESPosition",
"ssCoord"
};

// Initializing data buffer
glTransformFeedbackVaryings(myProgramID,2,varyingNames,GL_INTERLEAVED_ATTRIBS);

glGenBuffers(1,&bufferID);
size = 1000;

// Allocate space
tabData = new ES_AND_SS[size];
glBufferData(GL_TRANSFORM_FEEDBACK_BUFFER,size*sizeof(ES_AND_SS), NULL, GL_DYNAMIC_READ);

----------------

// When rendering:
myProgram->activate();
glBindBuffer(GL_TRANSFORM_FEEDBACK_BUFFER,bufferID);
glBeginTransformFeedback(GL_POINTS);

//... draw some vertices ...

myProgram->deactivate();
glEndTransformFeedback();

// Reading back data
glGetBufferSubData(GL_TRANSFORM_FEEDBACK_BUFFER, 0, size*sizeof(ES_AND_SS), tabData);

// unbind
glBindBuffer(GL_TRANSFORM_FEEDBACK_BUFFER,0);

-----------------
But when parsing my data buffer I just get crappy values.
What the hell am I doing wrong ?

Thanks for your answers

Share this post


Link to post
Share on other sites
Shirakana2    500
Ok I've got one of the answer: DO NOT FORGET TO BIND YOUR BUFFER BEFORE CALLING glBufferData(..)

So now the glGetBufferSubData(..) is ok but I still read 0.0 in all my data :(

Share this post


Link to post
Share on other sites
Shirakana2    500
After many tests I realized that INTERLEAVED mode of transform feedback simply doesn't work, whereas SEPARATE mode works very well (driver bug ?). So much time lost for this :(

So don't use GL_INTERLEAVED_ATTRIBS but GL_SEPARATE_ATTRIBS instead !!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this