|
VTK-m
2.3
|
Manages the state for transferring an ArrayHandle to opengl. More...
#include <BufferState.h>
Public Member Functions | |
| BufferState (GLuint &gLHandle) | |
| Construct a BufferState using an existing GLHandle. More... | |
| BufferState (GLuint &gLHandle, GLenum type) | |
| Construct a BufferState using an existing GLHandle and type. More... | |
| BufferState () | |
| ~BufferState () | |
| GLuint * | GetHandle () const |
| get the OpenGL buffer handle More... | |
| bool | HasType () const |
| return if this buffer has a valid OpenGL buffer type More... | |
| GLenum | GetType () const |
| return what OpenGL buffer type we are bound to More... | |
| void | SetType (GLenum type) |
| Set what type of OpenGL buffer type we should bind as. More... | |
| template<typename T > | |
| void | DeduceAndSetType (T t) |
| deduce the buffer type from the template value type that was passed in, and set that as our type More... | |
| vtkm::Int64 | GetSize () const |
| Get the size of the buffer in bytes. More... | |
| void | SetSize (vtkm::Int64 size) |
| vtkm::Int64 | GetCapacity () const |
| Get the capacity of the buffer in bytes. More... | |
| bool | ShouldRealloc (vtkm::Int64 desiredSize) const |
| void | SetCapacity (vtkm::Int64 capacity) |
| vtkm::interop::internal::TransferResource * | GetResource () |
| void | SetResource (vtkm::interop::internal::TransferResource *resource) |
Private Member Functions | |
| BufferState (const BufferState &)=delete | |
| void | operator= (const BufferState &)=delete |
Private Attributes | |
| GLuint * | OpenGLHandle |
| GLenum | BufferType |
| vtkm::Int64 | SizeOfActiveSection |
| vtkm::Int64 | CapacityOfBuffer |
| GLuint | DefaultGLHandle |
| std::unique_ptr< vtkm::interop::internal::TransferResource > | Resource |
Manages the state for transferring an ArrayHandle to opengl.
BufferState holds all the relevant data information for a given ArrayHandle mapping into OpenGL. Reusing the state information for all renders of an ArrayHandle will allow for the most efficient interop between backends and OpenGL ( especially for CUDA ).
The interop code in vtk-m uses a lazy buffer re-allocation.
|
inline |
Construct a BufferState using an existing GLHandle.
|
inline |
Construct a BufferState using an existing GLHandle and type.
|
inline |
|
inline |
|
privatedelete |
|
inline |
deduce the buffer type from the template value type that was passed in, and set that as our type
Will be GL_ELEMENT_ARRAY_BUFFER for vtkm::Int32, vtkm::UInt32, vtkm::Int64, vtkm::UInt64, vtkm::Id, and vtkm::IdComponent will be GL_ARRAY_BUFFER for everything else.
|
inline |
Get the capacity of the buffer in bytes.
The buffers that vtk-m allocate in OpenGL use lazy resizing. This allows vtk-m to not have to reallocate a buffer while the size stays the same or shrinks. This allows allows the cuda to OpenGL to perform significantly better as we than don't need to call cudaGraphicsGLRegisterBuffer as often
|
inline |
get the OpenGL buffer handle
|
inline |
|
inline |
Get the size of the buffer in bytes.
Get the size of the active section of the buffer This will always be <= the capacity of the buffer
|
inline |
return what OpenGL buffer type we are bound to
will return GL_INVALID_VALUE if we don't have a valid type set
|
inline |
return if this buffer has a valid OpenGL buffer type
|
privatedelete |
|
inline |
|
inline |
|
inline |
|
inline |
Set what type of OpenGL buffer type we should bind as.
|
inline |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
1.8.17