OSG
3.4.0
|
#include <GraphicsContext.h>
Classes | |
struct | ResizedCallback |
struct | ScreenIdentifier |
struct | ScreenSettings |
struct | SwapCallback |
struct | Traits |
struct | WindowingSystemInterface |
Public Types | |
typedef std::vector < ScreenSettings > | ScreenSettingsList |
typedef std::vector < GraphicsContext * > | GraphicsContexts |
typedef std::list< ref_ptr < Operation > > | GraphicsOperationQueue |
typedef std::list< osg::Camera * > | Cameras |
![]() | |
enum | DataVariance { DYNAMIC, STATIC, UNSPECIFIED } |
Protected Member Functions | |
GraphicsContext () | |
GraphicsContext (const GraphicsContext &, const osg::CopyOp &) | |
virtual | ~GraphicsContext () |
virtual Object * | cloneType () const |
virtual Object * | clone (const CopyOp &) const |
void | addCamera (osg::Camera *camera) |
void | removeCamera (osg::Camera *camera) |
![]() | |
virtual | ~Object () |
![]() | |
virtual | ~Referenced () |
void | signalObserversAndDelete (bool signalDelete, bool doDelete) const |
void | deleteUsingDeleteHandler () const |
Static Protected Member Functions | |
static void | registerGraphicsContext (GraphicsContext *gc) |
static void | unregisterGraphicsContext (GraphicsContext *gc) |
Protected Attributes | |
Cameras | _cameras |
ref_ptr< Traits > | _traits |
ref_ptr< State > | _state |
Vec4 | _clearColor |
GLbitfield | _clearMask |
OpenThreads::Thread * | _threadOfLastMakeCurrent |
OpenThreads::Mutex | _operationsMutex |
osg::ref_ptr< osg::RefBlock > | _operationsBlock |
GraphicsOperationQueue | _operations |
osg::ref_ptr< Operation > | _currentOperation |
ref_ptr< GraphicsThread > | _graphicsThread |
ref_ptr< ResizedCallback > | _resizedCallback |
ref_ptr< SwapCallback > | _swapCallback |
Timer_t | _lastClearTick |
GLuint | _defaultFboId |
![]() | |
std::string | _name |
DataVariance | _dataVariance |
osg::UserDataContainer * | _userDataContainer |
![]() | |
OpenThreads::AtomicPtr | _observerSet |
OpenThreads::Atomic | _refCount |
Friends | |
class | osg::Camera |
Base class for providing Windowing API agnostic access to creating and managing graphics context.
Definition at line 29 of file GraphicsContext.h.
typedef std::list< osg::Camera* > osg::GraphicsContext::Cameras |
Definition at line 468 of file GraphicsContext.h.
typedef std::vector<GraphicsContext*> osg::GraphicsContext::GraphicsContexts |
Definition at line 239 of file GraphicsContext.h.
typedef std::list< ref_ptr<Operation> > osg::GraphicsContext::GraphicsOperationQueue |
Definition at line 273 of file GraphicsContext.h.
typedef std::vector<ScreenSettings> osg::GraphicsContext::ScreenSettingsList |
Definition at line 166 of file GraphicsContext.h.
|
protected |
|
protected |
|
protectedvirtual |
Add operation to end of OperationQueue.
|
protected |
|
inline |
Bind the graphics context to associated texture.
Definition at line 363 of file GraphicsContext.h.
|
pure virtual |
Pure virtual, Bind the graphics context to associated texture implementation. Pure virtual - must be implemented by concrete implementations of GraphicsContext.
Implemented in osgViewer::GraphicsWindow, osgViewer::PixelBufferWin32, and osgViewer::PixelBufferX11.
|
inlinevirtual |
return the name of the object's class type. Must be defined by derived classes.
Implements osg::Object.
Reimplemented in osgViewer::GraphicsWindowEmbedded, osgViewer::GraphicsWindowX11, osgViewer::GraphicsWindow, osgViewer::GraphicsWindowWin32, osgViewer::PixelBufferWin32, and osgViewer::PixelBufferX11.
Definition at line 485 of file GraphicsContext.h.
|
virtual |
Do an OpenGL clear of the full graphics context/window. Note, must only be called from a thread with this context current.
Clone an object, with Object* return type. Must be defined by derived classes.
Implements osg::Object.
Definition at line 495 of file GraphicsContext.h.
|
inlineprotectedvirtual |
Clone the type of an object, with Object* return type. Must be defined by derived classes.
Implements osg::Object.
Definition at line 494 of file GraphicsContext.h.
void osg::GraphicsContext::close | ( | bool | callCloseImplementation = true | ) |
close the graphics context. close(bool) stops any associated graphics threads, releases the contextID for the GraphicsContext then optional calls closeImplementation() to do the actual deletion of the graphics. This call is made optional as there are times when the graphics context has already been deleted externally and only the OSG side of the its data need to be closed down.
|
pure virtual |
Close the graphics context implementation. Pure virtual - must be implemented by concrete implementations of GraphicsContext.
Implemented in osgViewer::GraphicsWindowEmbedded, osgQt::GraphicsWindowQt, osgViewer::GraphicsWindow, osgViewer::GraphicsWindowX11, osgViewer::GraphicsWindowWin32, osgViewer::PixelBufferWin32, and osgViewer::PixelBufferX11.
|
static |
Create a graphics context for a specified set of traits.
void osg::GraphicsContext::createGraphicsThread | ( | ) |
Create a graphics thread to the graphics context, so that the thread handles all OpenGL operations.
|
static |
Create a contextID for a new graphics context, this contextID is used to set up the osg::State associate with context. Automatically increments the usage count of the contextID to 1.
|
static |
Decrement the usage count associate with a contextID. Once the contextID goes to 0 the contextID is then free to be reused.
|
static |
Get all the registered graphics contexts.
|
inline |
Get the list of cameras associated with this graphics context.
Definition at line 471 of file GraphicsContext.h.
|
inline |
Get the const list of cameras associated with this graphics context.
Definition at line 474 of file GraphicsContext.h.
|
inline |
Returns the clear color.
Definition at line 311 of file GraphicsContext.h.
|
inline |
Get the clear mask.
Definition at line 319 of file GraphicsContext.h.
|
static |
Get the GraphicsContext for doing background compilation for GraphicsContexts associated with specified contextID.
|
inline |
Get the current operations that is being run.
Definition at line 285 of file GraphicsContext.h.
|
inline |
Definition at line 479 of file GraphicsContext.h.
|
inline |
Get the graphics thread assigned the graphics context.
Definition at line 374 of file GraphicsContext.h.
|
inline |
Get the const graphics thread assigned the graphics context.
Definition at line 377 of file GraphicsContext.h.
|
static |
Get the current max ContextID.
|
inline |
Get the operations queue block used to mark an empty queue, if you end items into the empty queue you must release this block.
Definition at line 282 of file GraphicsContext.h.
|
inline |
Get the operations queue mutex.
Definition at line 279 of file GraphicsContext.h.
|
inline |
Get the operations queue, note you must use the OperationsMutex when accessing the queue.
Definition at line 276 of file GraphicsContext.h.
|
static |
Get existing or create a new GraphicsContext to do background compilation for GraphicsContexts associated with specified contextID.
|
static |
Get all the registered graphics contexts associated with a specific contextID.
|
inline |
Get the resized callback which overrides the GraphicsConext::realizedImplementation().
Definition at line 459 of file GraphicsContext.h.
|
inline |
Get the const resized callback which overrides the GraphicsConext::realizedImplementation().
Definition at line 462 of file GraphicsContext.h.
|
inline |
Get the State object which tracks the current OpenGL state for this graphics context.
Definition at line 301 of file GraphicsContext.h.
|
inline |
Get the const State object which tracks the current OpenGL state for this graphics context.
Definition at line 304 of file GraphicsContext.h.
|
inline |
Get the swap callback which overrides the GraphicsContext::swapBuffersImplementation().
Definition at line 419 of file GraphicsContext.h.
|
inline |
Get the const swap callback which overrides the GraphicsContext::swapBuffersImplementation().
Definition at line 422 of file GraphicsContext.h.
|
inline |
|
inline |
Get the traits of the GraphicsContext.
Definition at line 291 of file GraphicsContext.h.
|
static |
Get the WindowingSystemInterface
|
static |
Increment the usage count associate with a contextID. The usage count specifies how many graphics contexts a specific contextID is shared between.
|
inline |
Return true if the current thread has this OpenGL graphics context.
Definition at line 360 of file GraphicsContext.h.
|
inline |
Return true if the graphics context has been realized and is ready to use.
Definition at line 342 of file GraphicsContext.h.
|
pure virtual |
Return true if the graphics context has been realized, and is ready to use, implementation. Pure virtual - must be implemented by concrete implementations of GraphicsContext.
Implemented in osgViewer::GraphicsWindowEmbedded, osgQt::GraphicsWindowQt, osgViewer::GraphicsWindow, osgViewer::GraphicsWindowX11, osgViewer::GraphicsWindowWin32, osgViewer::PixelBufferWin32, and osgViewer::PixelBufferX11.
|
inlinevirtual |
Reimplemented from osg::Object.
Definition at line 483 of file GraphicsContext.h.
|
inlinevirtual |
return the name of the object's library. Must be defined by derived classes. The OpenSceneGraph convention is that the namespace of a library is the same as the library name.
Implements osg::Object.
Reimplemented in osgViewer::GraphicsWindowEmbedded, osgViewer::GraphicsWindowX11, osgViewer::GraphicsWindow, osgViewer::GraphicsWindowWin32, osgViewer::PixelBufferWin32, and osgViewer::PixelBufferX11.
Definition at line 484 of file GraphicsContext.h.
bool osg::GraphicsContext::makeContextCurrent | ( | GraphicsContext * | readContext | ) |
Make this graphics context current with specified read context. Implemented by calling makeContextCurrentImplementation(). Returns true on success.
|
pure virtual |
Make this graphics context current with specified read context implementation. Pure virtual - must be implemented by concrete implementations of GraphicsContext.
Implemented in osgViewer::PixelBufferX11.
bool osg::GraphicsContext::makeCurrent | ( | ) |
Make this graphics context current. Implemented by calling makeCurrentImplementation(). Returns true on success.
|
pure virtual |
Make this graphics context current implementation. Pure virtual - must be implemented by concrete implementations of GraphicsContext.
Implemented in osgViewer::GraphicsWindowEmbedded, osgQt::GraphicsWindowQt, osgViewer::GraphicsWindow, osgViewer::GraphicsWindowX11, osgViewer::GraphicsWindowWin32, osgViewer::PixelBufferWin32, and osgViewer::PixelBufferX11.
bool osg::GraphicsContext::realize | ( | ) |
Realize the GraphicsContext.
|
pure virtual |
Realize the GraphicsContext implementation, Pure virtual - must be implemented by concrete implementations of GraphicsContext.
Implemented in osgViewer::GraphicsWindowEmbedded, osgQt::GraphicsWindowQt, osgViewer::GraphicsWindow, osgViewer::GraphicsWindowX11, osgViewer::GraphicsWindowWin32, osgViewer::PixelBufferWin32, and osgViewer::PixelBufferX11.
|
staticprotected |
Register a GraphicsContext.
bool osg::GraphicsContext::releaseContext | ( | ) |
Release the graphics context. Returns true on success.
|
pure virtual |
Release the graphics context implementation.
Implemented in osgViewer::GraphicsWindowEmbedded, osgViewer::GraphicsWindow, osgQt::GraphicsWindowQt, osgViewer::GraphicsWindowX11, osgViewer::PixelBufferWin32, osgViewer::PixelBufferX11, and osgViewer::GraphicsWindowWin32.
Remove operation from OperationQueue.
void osg::GraphicsContext::remove | ( | const std::string & | name | ) |
Remove named operation from OperationQueue.
void osg::GraphicsContext::removeAllOperations | ( | ) |
Remove all operations from OperationQueue.
|
protected |
|
inline |
resized method should be called when the underlying window has been resized and the GraphicsWindow and associated Cameras must be updated to keep in sync with the new size.
Definition at line 443 of file GraphicsContext.h.
|
virtual |
resized implementation, by default resizes the viewports and aspect ratios the cameras associated with the graphics Window.
|
virtual |
Run the operations.
Reimplemented in osgQt::GraphicsWindowQt.
Sets the clear color.
Definition at line 308 of file GraphicsContext.h.
|
inline |
Set the clear mask used in glClear(..). Defaults to 0 - so no clear is done by default by the GraphicsContext, instead the Cameras attached to the GraphicsContext will do the clear. GraphicsContext::setClearMask() is useful for when the Camera Viewports don't cover the whole context, so the context will fill in the gaps.
Definition at line 316 of file GraphicsContext.h.
|
static |
Get the GraphicsContext for doing background compilation for GraphicsContexts associated with specified contextID.
|
inline |
set the default FBO-id, this id will be used when the rendering-backend is finished with RTT FBOs
Definition at line 477 of file GraphicsContext.h.
void osg::GraphicsContext::setGraphicsThread | ( | GraphicsThread * | gt | ) |
Assign a graphics thread to the graphics context, so that the thread handles all OpenGL operations.
|
inline |
Set the resized callback which overrides the GraphicsConext::realizedImplementation(), allow developers to provide custom behavior in response to a window being resized.
Definition at line 456 of file GraphicsContext.h.
Set the State object which tracks the current OpenGL state for this graphics context.
Definition at line 298 of file GraphicsContext.h.
|
inline |
Set the swap callback which overrides the GraphicsContext::swapBuffersImplementation(), allowing developers to provide custom behavior for swap. The callback must call GraphicsContext::swapBuffersImplementation()
Definition at line 416 of file GraphicsContext.h.
|
static |
Set the query the windowing system for screens and create graphics context - this functor should be supplied by the windows toolkit.
void osg::GraphicsContext::swapBuffers | ( | ) |
swap the front and back buffers.
|
inline |
Convenience method for handling whether to call swapbuffers callback or the standard context swapBuffersImplementation. swapBuffersCallbackOrImplemenation() is called by swapBuffers() and osg::SwapBuffersOperation, end users should normally call swapBuffers() rather than swapBuffersCallbackOrImplemenation().
Definition at line 427 of file GraphicsContext.h.
|
pure virtual |
Swap the front and back buffers implementation. Pure virtual - must be implemented by concrete implementations of GraphicsContext.
Implemented in osgViewer::GraphicsWindowEmbedded, osgViewer::GraphicsWindow, osgQt::GraphicsWindowQt, osgViewer::GraphicsWindowX11, osgViewer::PixelBufferX11, osgViewer::PixelBufferWin32, and osgViewer::GraphicsWindowWin32.
|
staticprotected |
Unregister a GraphicsContext.
|
pure virtual |
Return whether a valid and usable GraphicsContext has been created.
Implemented in osgViewer::GraphicsWindowEmbedded, osgQt::GraphicsWindowQt, osgViewer::GraphicsWindow, osgViewer::GraphicsWindowX11, osgViewer::GraphicsWindowWin32, osgViewer::PixelBufferWin32, and osgViewer::PixelBufferX11.
|
friend |
Definition at line 509 of file GraphicsContext.h.
|
protected |
Definition at line 507 of file GraphicsContext.h.
|
protected |
Definition at line 514 of file GraphicsContext.h.
|
protected |
Definition at line 515 of file GraphicsContext.h.
|
protected |
Definition at line 522 of file GraphicsContext.h.
|
protected |
Definition at line 531 of file GraphicsContext.h.
|
protected |
Definition at line 524 of file GraphicsContext.h.
|
protected |
Definition at line 529 of file GraphicsContext.h.
|
protected |
Definition at line 521 of file GraphicsContext.h.
|
protected |
Definition at line 520 of file GraphicsContext.h.
|
protected |
Definition at line 519 of file GraphicsContext.h.
|
protected |
Definition at line 526 of file GraphicsContext.h.
Definition at line 512 of file GraphicsContext.h.
|
protected |
Definition at line 527 of file GraphicsContext.h.
|
protected |
Definition at line 517 of file GraphicsContext.h.
Definition at line 511 of file GraphicsContext.h.