From Marcus Hein, Added support for OpenGL SSBO and SSBB via osg::ShaderStorageBufferObject and osg::ShaderStorageBufferBinding to core OSG library, and added new osgSSBO example

git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14599 16af8721-9629-0410-8352-f15c8da7e697
This commit is contained in:
Robert Osfield
2014-12-10 12:23:04 +00:00
parent 92e2d849ed
commit 1b6e50a2dd
8 changed files with 1040 additions and 0 deletions

View File

@@ -143,4 +143,26 @@ void AtomicCounterBufferBinding::readData(osg::State & state, osg::UIntArray & u
bo->_extensions->glBindBuffer(GL_ATOMIC_COUNTER_BUFFER, static_cast<GLuint>(previousID));
}
ShaderStorageBufferBinding::ShaderStorageBufferBinding(GLuint index)
: BufferIndexBinding(GL_SHADER_STORAGE_BUFFER, index)
{
}
ShaderStorageBufferBinding::ShaderStorageBufferBinding(GLuint index, BufferObject* bo, GLintptr offset, GLsizeiptr size)
: BufferIndexBinding(GL_SHADER_STORAGE_BUFFER, index, bo, offset, size)
{
}
ShaderStorageBufferBinding::ShaderStorageBufferBinding(const ShaderStorageBufferBinding& rhs, const CopyOp& copyop)
: BufferIndexBinding(rhs, copyop)
{
}
} // namespace osg

View File

@@ -1560,3 +1560,25 @@ AtomicCounterBufferObject::AtomicCounterBufferObject(const AtomicCounterBufferOb
AtomicCounterBufferObject::~AtomicCounterBufferObject()
{
}
//////////////////////////////////////////////////////////////////////////////////
//
// ShaderStorageBufferObject
//
ShaderStorageBufferObject::ShaderStorageBufferObject()
{
setTarget(GL_SHADER_STORAGE_BUFFER);
setUsage(GL_STATIC_DRAW);
}
ShaderStorageBufferObject::ShaderStorageBufferObject(const ShaderStorageBufferObject& ubo, const CopyOp& copyop)
: BufferObject(ubo, copyop)
{
}
ShaderStorageBufferObject::~ShaderStorageBufferObject()
{
}