OGRE-Next  2.3
Object-Oriented Graphics Rendering Engine
Ogre::AsyncTicket Class Referenceabstract

In Ogre 2.0 data structures, reading data from GPU back to CPU is asynchronous. More...

#include <OgreAsyncTicket.h>

+ Inheritance diagram for Ogre::AsyncTicket:

Public Member Functions

 AsyncTicket (BufferPacked *creator, StagingBuffer *stagingBuffer, size_t elementStart, size_t elementCount)
 
virtual ~AsyncTicket ()
 
const void * map ()
 Maps the buffer for CPU access. More...
 
void operator delete (void *ptr)
 
void operator delete (void *ptr, const char *, int, const char *)
 
void operator delete (void *ptr, void *)
 
void operator delete[] (void *ptr)
 
void operator delete[] (void *ptr, const char *, int, const char *)
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info More...
 
void * operator new (size_t sz, void *ptr)
 placement operator new More...
 
void * operator new[] (size_t sz)
 
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info More...
 
virtual bool queryIsTransferDone ()
 
void unmap ()
 Unmaps the pointer mapped with map(). More...
 

Detailed Description

In Ogre 2.0 data structures, reading data from GPU back to CPU is asynchronous.

@See BufferPacked::readRequest to generate a ticket. While the async transfer is being performed, you should be doing something else.

Remarks
If you call map() before the transfer is done, it will produce a stall as the CPU must wait for the GPU to finish all its pending operations.
Use @queryIsTransferDone to query if the transfer has finished. Beware not all APIs support querying async transfer status. In those cases there is no reliable way to determine when the transfer is done. An almost safe bet is to wait two frames before mapping.
Call @BufferPacked::disposeTicket when you're done with this ticket.

Constructor & Destructor Documentation

◆ AsyncTicket()

Ogre::AsyncTicket::AsyncTicket ( BufferPacked creator,
StagingBuffer stagingBuffer,
size_t  elementStart,
size_t  elementCount 
)

◆ ~AsyncTicket()

virtual Ogre::AsyncTicket::~AsyncTicket ( )
virtual

Member Function Documentation

◆ map()

const void* Ogre::AsyncTicket::map ( )

Maps the buffer for CPU access.

Will stall if transfer from GPU memory to staging area hasn't finished yet.

See also
queryIsTransferDone.
Remarks
Attempting to const cast the returned pointer and write to it is undefined behavior. Only call this function once. Once mapped, cannot be remapped again.
Returns
The pointer with the data read from the GPU. Read only.

◆ operator delete() [1/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr)
inlineinherited

◆ operator delete() [2/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inlineinherited

◆ operator delete() [3/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
void *   
)
inlineinherited

◆ operator delete[]() [1/2]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr)
inlineinherited

◆ operator delete[]() [2/2]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inlineinherited

◆ operator new() [1/3]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz)
inlineinherited

◆ operator new() [2/3]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

operator new, with debug line info

◆ operator new() [3/3]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
void *  ptr 
)
inlineinherited

placement operator new

◆ operator new[]() [1/2]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz)
inlineinherited

◆ operator new[]() [2/2]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

array operator new, with debug line info

◆ queryIsTransferDone()

virtual bool Ogre::AsyncTicket::queryIsTransferDone ( )
inlinevirtual

◆ unmap()

void Ogre::AsyncTicket::unmap ( )

Unmaps the pointer mapped with map().


The documentation for this class was generated from the following file: