Jump to content

  • Log In with Google      Sign In   
  • Create Account

Bind a VBO as a TexImage2D?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 Palidine   Members   -  Reputation: 1281

Like
0Likes
Like

Posted 25 June 2014 - 09:06 PM

Hey,

 

Random question to optimize a bizarro pipeline I have going.

 

I'm using a Geometry Shader + Transform Feedback right now to generate a data set. I want to then pass that data set through another Shader but have it addressable as a sampler2d because I need access to multiple data points in the next Shader (evaluating neighbors).

 

I know that I can use glGetBufferSubData to extract the output VBOs and then bind that data to a texture with the standard glTexImage2D stuff. But I'm wondering if there is a shortcut whereby I don't need to pull the information off of the graphics card or copy it from one location to another using a COPY_WRITE_BUFFER or whatever. Can I just rebind the VBO somehow and get it treated as a texture addressable by a sampler2d?

 

Please feel free to ask questions if that's not clear. It's a mouthful...



Sponsor:

#2 Palidine   Members   -  Reputation: 1281

Like
0Likes
Like

Posted 25 June 2014 - 09:14 PM

It occurs to me, I'm being dumb because I can probably find a way to just have the first Shader render the data directly to a texture instead of extracting the data through Transform Feedback... But anyway, I guess I'm still curious about the OP anyway. :)



#3 Xycaleth   Members   -  Reputation: 1303

Like
0Likes
Like

Posted 26 June 2014 - 11:49 AM

I don't know if this would work, but you could try binding the transform feedback buffer as a texture buffer object (GL_TEXTURE_BUFFER). In your shader, you would then need to use a samplerBuffer and texelFetch. You shouldn't even need your extra VBO.


Edited by Xycaleth, 26 June 2014 - 11:49 AM.


#4 Palidine   Members   -  Reputation: 1281

Like
0Likes
Like

Posted 26 June 2014 - 12:36 PM

ok. Yeah cool. That looks like it will work. I think you have to create the GL_TEXTURE_BUFFER separately with a glGenTextures call, but then it looks like you can just straight up bind a buffer to that. I'll play around with it. 

 

Thanks



#5 mhagain   Crossbones+   -  Reputation: 8285

Like
0Likes
Like

Posted 26 June 2014 - 02:10 PM

Another way is to use the VBO as a PBO, like so:

 

// first bind it as a VBO

glBindBuffer (GL_ARRAY_BUFFER, myBuffer);

 

// do VBO stuff here

 

// now bind it as a PBO and send it to a texture object

glBindBuffer (GL_PIXEL_UNPACK_BUFFER, myBuffer);

glTexImage2D (....);

glBindBuffer (GL_PIXEL_UNPACK_BUFFER, 0);

 

// magic!


It appears that the gentleman thought C++ was extremely difficult and he was overjoyed that the machine was absorbing it; he understood that good C++ is difficult but the best C++ is well-nigh unintelligible.





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS