OCCT3D OCCT 8.0.1
OCCT documentation

Search guides and API reference

Enter at least two characters.

    Open CASCADE Technology Reference Manual 8.0.1
    D3DHost_FrameBuffer Class Reference

    Implements bridge FBO for direct rendering to Direct3D surfaces. More...

    #include <D3DHost_FrameBuffer.hxx>

    Inheritance diagram for D3DHost_FrameBuffer:

    Public Member Functions

     D3DHost_FrameBuffer ()
     Empty constructor.
     ~D3DHost_FrameBuffer ()
     Destructor, should be called after Release().
    virtual void Release (OpenGl_Context *theCtx) override
     Releases D3D and OpenGL resources.
    bool Init (const occ::handle< OpenGl_Context > &theCtx, IDirect3DDevice9 *theD3DDevice, const bool theIsD3dEx, const int theSizeX, const int theSizeY)
     Initializes OpenGL FBO for Direct3D interoperability or in fallback mode. Color pixel format is always GL_RGBA8/D3DFMT_X8R8G8B8, no MSAA; depth-stencil pixel format is GL_DEPTH24_STENCIL8.
    bool InitD3dInterop (const occ::handle< OpenGl_Context > &theCtx, IDirect3DDevice9 *theD3DDevice, const bool theIsD3dEx, const int theSizeX, const int theSizeY, const int theDepthFormat)
     Initializes OpenGL FBO for Direct3D interoperability. Color pixel format is always GL_RGBA8/D3DFMT_X8R8G8B8, no MSAA.
    bool InitD3dFallback (const occ::handle< OpenGl_Context > &theCtx, IDirect3DDevice9 *theD3DDevice, const bool theIsD3dEx, const int theSizeX, const int theSizeY, const int theDepthFormat)
     Initializes OpenGL FBO + Direct3D surface for copying memory using fallback. Color pixel format is always GL_RGBA8/D3DFMT_X8R8G8B8, no MSAA.
    bool registerD3dBuffer (const occ::handle< OpenGl_Context > &theCtx)
     Binds Direct3D color buffer to OpenGL texture.
    virtual void BindBuffer (const occ::handle< OpenGl_Context > &theCtx) override
     Binds Direct3D objects for OpenGL drawing. Should be called before LockSurface() and followed by UnlockSurface();.
    virtual void LockSurface (const occ::handle< OpenGl_Context > &theCtx)
     Acquires D3D resource for OpenGL usage.
    virtual void UnlockSurface (const occ::handle< OpenGl_Context > &theCtx)
     Releases D3D resource.
    IDirect3DSurface9 * D3dColorSurface ()
     Returns D3D surface used as color buffer.
    voidD3dColorSurfaceShare ()
     Returns WDDM handle for D3D color surface.
    bool D3dFallback () const
     Returns TRUE if FBO has been initialized without WGL/D3D interop.
    bool IsSRGBReady () const
     Returns TRUE if color buffer is sRGB ready; FALSE by default. Requires D3DSAMP_SRGBTEXTURE sampler parameter being set on D3D level for rendering D3D surface.
    void SetSRGBReady (bool theIsReady)
     Set if color buffer is sRGB ready.
    Public Member Functions inherited from OpenGl_FrameBuffer
     OpenGl_FrameBuffer (const TCollection_AsciiString &theResourceId=TCollection_AsciiString::EmptyString())
     Empty constructor.
     ~OpenGl_FrameBuffer () override
     Destructor.
    void Release (OpenGl_Context *theGlCtx) override
     Destroy object - will release GPU memory if any.
    int NbSamples () const
     Number of multisampling samples.
    int NbColorBuffers () const
     Number of color buffers.
    bool HasColor () const
     Return true if FBO has been created with color attachment.
    bool HasDepth () const
     Return true if FBO has been created with depth attachment.
    NCollection_Vec2< int > GetSize () const
     Return textures width x height.
    int GetSizeX () const
     Textures width.
    int GetSizeY () const
     Textures height.
    NCollection_Vec2< int > GetVPSize () const
     Return viewport width x height.
    int GetVPSizeX () const
     Viewport width.
    int GetVPSizeY () const
     Viewport height.
    NCollection_Vec2< int > GetInitVPSize () const
     Return viewport width x height.
    int GetInitVPSizeX () const
     Viewport width.
    int GetInitVPSizeY () const
     Viewport height.
    bool IsValid () const
     Returns true if current object was initialized.
    bool Init (const occ::handle< OpenGl_Context > &theGlCtx, const NCollection_Vec2< int > &theSize, const NCollection_DynamicArray< int > &theColorFormats, const occ::handle< OpenGl_Texture > &theDepthStencilTexture, const int theNbSamples=0)
     Initialize FBO for rendering into single/multiple color buffer and depth textures.
    bool Init (const occ::handle< OpenGl_Context > &theGlCtx, const NCollection_Vec2< int > &theSize, const int theColorFormat, const int theDepthFormat, const int theNbSamples=0)
     Initialize FBO for rendering into textures.
    bool Init (const occ::handle< OpenGl_Context > &theGlCtx, const NCollection_Vec2< int > &theSize, const NCollection_DynamicArray< int > &theColorFormats, const int theDepthFormat, const int theNbSamples=0)
     Initialize FBO for rendering into single/multiple color buffer and depth textures.
    bool InitLazy (const occ::handle< OpenGl_Context > &theGlCtx, const NCollection_Vec2< int > &theViewportSize, const int theColorFormat, const int theDepthFormat, const int theNbSamples=0)
     (Re-)initialize FBO with specified dimensions.
    bool InitLazy (const occ::handle< OpenGl_Context > &theGlCtx, const NCollection_Vec2< int > &theViewportSize, const NCollection_DynamicArray< int > &theColorFormats, const int theDepthFormat, const int theNbSamples=0)
     (Re-)initialize FBO with specified dimensions.
    bool InitLazy (const occ::handle< OpenGl_Context > &theGlCtx, const OpenGl_FrameBuffer &theFbo, const bool theToKeepMsaa=true)
     (Re-)initialize FBO with properties taken from another FBO.
    bool InitRenderBuffer (const occ::handle< OpenGl_Context > &theGlCtx, const NCollection_Vec2< int > &theSize, const NCollection_DynamicArray< int > &theColorFormats, const int theDepthFormat, const int theNbSamples=0)
     (Re-)initialize FBO with specified dimensions. The Render Buffer Objects will be used for Color, Depth and Stencil attachments (as opposite to textures).
    bool InitWithRB (const occ::handle< OpenGl_Context > &theGlCtx, const NCollection_Vec2< int > &theSize, const int theColorFormat, const int theDepthFormat, const unsigned int theColorRBufferFromWindow)
     (Re-)initialize FBO with specified dimensions. The Render Buffer Objects will be used for Color, Depth and Stencil attachments (as opposite to textures).
    bool InitWrapper (const occ::handle< OpenGl_Context > &theGlCtx)
     Initialize class from currently bound FBO. Retrieved OpenGL objects will not be destroyed on Release.
    bool InitWrapper (const occ::handle< OpenGl_Context > &theGlContext, const NCollection_Sequence< occ::handle< OpenGl_Texture > > &theColorTextures, const occ::handle< OpenGl_Texture > &theDepthTexture=occ::handle< OpenGl_Texture >())
     Wrap existing color textures.
    void SetupViewport (const occ::handle< OpenGl_Context > &theGlCtx)
     Setup viewport to render into FBO.
    void ChangeViewport (const int theVPSizeX, const int theVPSizeY)
     Override viewport settings.
    virtual void BindDrawBuffer (const occ::handle< OpenGl_Context > &theGlCtx)
     Bind frame buffer for drawing GL_DRAW_FRAMEBUFFER (to render into the texture).
    virtual void BindReadBuffer (const occ::handle< OpenGl_Context > &theGlCtx)
     Bind frame buffer for reading GL_READ_FRAMEBUFFER.
    virtual void UnbindBuffer (const occ::handle< OpenGl_Context > &theGlCtx)
     Unbind frame buffer.
    const occ::handle< OpenGl_Texture > & ColorTexture (const int theColorBufferIndex=0) const
     Returns the color texture for the given color buffer index.
    const occ::handle< OpenGl_Texture > & DepthStencilTexture () const
     Returns the depth-stencil texture.
    bool IsColorRenderBuffer () const
     Returns TRUE if color Render Buffer is defined.
    unsigned int ColorRenderBuffer () const
     Returns the color Render Buffer.
    bool IsDepthStencilRenderBuffer () const
     Returns TRUE if depth Render Buffer is defined.
    unsigned int DepthStencilRenderBuffer () const
     Returns the depth Render Buffer.
    size_t EstimatedDataSize () const override
     Returns estimated GPU memory usage for holding data without considering overheads and allocation alignment rules.
    bool initRenderBuffer (const occ::handle< OpenGl_Context > &theGlCtx, const NCollection_Vec2< int > &theSize, const NCollection_DynamicArray< int > &theColorFormats, const int theDepthFormat, const int theNbSamples, const unsigned int theColorRBufferFromWindow)
     (Re-)initialize FBO with specified dimensions. The Render Buffer Objects will be used for Color, Depth and Stencil attachments (as opposite to textures).
    bool Init (const occ::handle< OpenGl_Context > &theGlCtx, const int theSizeX, const int theSizeY, const NCollection_DynamicArray< int > &theColorFormats, const occ::handle< OpenGl_Texture > &theDepthStencilTexture, const int theNbSamples=0)
     Initialize FBO for rendering into single/multiple color buffer and depth textures.
    bool Init (const occ::handle< OpenGl_Context > &theGlCtx, const int theSizeX, const int theSizeY, const int theColorFormat, const int theDepthFormat, const int theNbSamples=0)
     Initialize FBO for rendering into textures.
    bool Init (const occ::handle< OpenGl_Context > &theGlCtx, const int theSizeX, const int theSizeY, const NCollection_DynamicArray< int > &theColorFormats, const int theDepthFormat, const int theNbSamples=0)
     Initialize FBO for rendering into single/multiple color buffer and depth textures.
    bool InitLazy (const occ::handle< OpenGl_Context > &theGlCtx, const int theViewportSizeX, const int theViewportSizeY, const int theColorFormat, const int theDepthFormat, const int theNbSamples=0)
     (Re-)initialize FBO with specified dimensions.
    bool InitLazy (const occ::handle< OpenGl_Context > &theGlCtx, const int theViewportSizeX, const int theViewportSizeY, const NCollection_DynamicArray< int > &theColorFormats, const int theDepthFormat, const int theNbSamples=0)
     (Re-)initialize FBO with specified dimensions.
    bool InitWithRB (const occ::handle< OpenGl_Context > &theGlCtx, const int theSizeX, const int theSizeY, const int theColorFormat, const int theDepthFormat, const unsigned int theColorRBufferFromWindow=0)
     (Re-)initialize FBO with specified dimensions. The Render Buffer Objects will be used for Color, Depth and Stencil attachments (as opposite to textures).
    Public Member Functions inherited from OpenGl_NamedResource
     OpenGl_NamedResource (const TCollection_AsciiString &theId)
     Empty constructor.
    const TCollection_AsciiStringResourceId () const
     Return resource name.
    Public Member Functions inherited from OpenGl_Resource
     OpenGl_Resource ()
     Empty constructor.
     ~OpenGl_Resource () override
     Destructor. Inheritors should call Clean (NULL) within it.
    virtual void DumpJson (Standard_OStream &theOStream, int theDepth=-1) const
     Dumps the content of me into the stream.
    Public Member Functions inherited from Standard_Transient
     Standard_Transient ()
     Empty constructor.
     Standard_Transient (const Standard_Transient &)
     Copy constructor – does nothing.
    Standard_Transientoperator= (const Standard_Transient &)
     Assignment operator, needed to avoid copying reference counter.
    virtual ~Standard_Transient ()=default
     Destructor must be virtual.
    virtual const opencascade::handle< Standard_Type > & DynamicType () const
     Returns a type descriptor about this object.
    bool IsInstance (const opencascade::handle< Standard_Type > &theType) const
     Returns a true value if this is an instance of Type.
    bool IsInstance (const char *const theTypeName) const
     Returns a true value if this is an instance of TypeName.
    bool IsKind (const opencascade::handle< Standard_Type > &theType) const
     Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
    bool IsKind (const char *const theTypeName) const
     Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
    Standard_TransientThis () const
     Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero.
    int GetRefCount () const noexcept
     Get the reference counter of this object.
    void IncrementRefCounter () noexcept
     Increments the reference counter of this object. Uses relaxed memory ordering since incrementing only requires atomicity, not synchronization with other memory operations.
    int DecrementRefCounter () noexcept
     Decrements the reference counter of this object; returns the decremented value. Uses release ordering for the decrement to ensure all writes to the object are visible before the count reaches zero. An acquire fence is added only when the count reaches zero, ensuring proper synchronization before deletion. This is more efficient than using acq_rel for every decrement.
    virtual void Delete () const
     Memory deallocator for transient classes.

    Protected Member Functions

    bool Init (const occ::handle< OpenGl_Context > &theGlCtx, const NCollection_Vec2< int > &theSize, const NCollection_DynamicArray< int > &theColorFormats, const occ::handle< OpenGl_Texture > &theDepthStencilTexture, const int theNbSamples=0)
     Initialize FBO for rendering into single/multiple color buffer and depth textures.
    bool Init (const occ::handle< OpenGl_Context > &theGlCtx, const NCollection_Vec2< int > &theSize, const int theColorFormat, const int theDepthFormat, const int theNbSamples=0)
     Initialize FBO for rendering into textures.
    bool Init (const occ::handle< OpenGl_Context > &theGlCtx, const NCollection_Vec2< int > &theSize, const NCollection_DynamicArray< int > &theColorFormats, const int theDepthFormat, const int theNbSamples=0)
     Initialize FBO for rendering into single/multiple color buffer and depth textures.
    bool Init (const occ::handle< OpenGl_Context > &theGlCtx, const int theSizeX, const int theSizeY, const NCollection_DynamicArray< int > &theColorFormats, const occ::handle< OpenGl_Texture > &theDepthStencilTexture, const int theNbSamples=0)
     Initialize FBO for rendering into single/multiple color buffer and depth textures.
    bool Init (const occ::handle< OpenGl_Context > &theGlCtx, const int theSizeX, const int theSizeY, const int theColorFormat, const int theDepthFormat, const int theNbSamples=0)
     Initialize FBO for rendering into textures.
    bool Init (const occ::handle< OpenGl_Context > &theGlCtx, const int theSizeX, const int theSizeY, const NCollection_DynamicArray< int > &theColorFormats, const int theDepthFormat, const int theNbSamples=0)
     Initialize FBO for rendering into single/multiple color buffer and depth textures.
    Protected Member Functions inherited from OpenGl_FrameBuffer
    bool isValidFrameBuffer () const

    Protected Attributes

    IDirect3DSurface9 * myD3dSurf
     D3D surface.
    voidmyD3dSurfShare
     D3D surface share handle in WDDM.
    voidmyGlD3dDevice
     WGL/D3D device handle.
    voidmyGlD3dSurf
     WGL/D3D surface handle.
    int myLockCount
     locking counter
    bool myD3dFallback
     indicates that FBO has been initialized without WGL/D3D interop
    bool myIsSRGBReady
     indicates that color buffer is sRGB ready
    Protected Attributes inherited from OpenGl_FrameBuffer
    int myInitVPSizeX
     viewport width specified during initialization (kept even on failure)
    int myInitVPSizeY
     viewport height specified during initialization (kept even on failure)
    int myVPSizeX
     viewport width (should be <= texture width)
    int myVPSizeY
     viewport height (should be <= texture height)
    int myNbSamples
     number of MSAA samples
    NCollection_DynamicArray< int > myColorFormats
     sized format for color texture, GL_RGBA8 by default
    int myDepthFormat
     sized format for depth-stencil texture, GL_DEPTH24_STENCIL8 by default
    unsigned int myGlFBufferId
     FBO object ID.
    unsigned int myGlColorRBufferId
     color Render Buffer object (alternative to myColorTexture)
    unsigned int myGlDepthRBufferId
     depth-stencil Render Buffer object (alternative to myDepthStencilTexture)
    bool myIsOwnBuffer
     flag indicating that FBO should be deallocated by this class
    bool myIsOwnColor
     flag indicating that color textures should be deallocated by this class
    bool myIsOwnDepth
     flag indicating that depth texture should be deallocated by this class
    OpenGl_TextureArray myColorTextures
     color texture objects
    occ::handle< OpenGl_TexturemyDepthStencilTexture
     depth-stencil texture object
    Protected Attributes inherited from OpenGl_NamedResource
    TCollection_AsciiString myResourceId
     resource name

    Additional Inherited Members

    typedef void base_type
     Returns a type descriptor about this object.
    Static Public Member Functions inherited from OpenGl_FrameBuffer
    static bool BufferDump (const occ::handle< OpenGl_Context > &theGlCtx, const occ::handle< OpenGl_FrameBuffer > &theFbo, Image_PixMap &theImage, Graphic3d_BufferType theBufferType)
     Dump content into image.
    static constexpr const char * get_type_name ()
     Returns a type descriptor about this object.
    static const opencascade::handle< Standard_Type > & get_type_descriptor ()
     Returns type descriptor of Standard_Transient class.
    Static Public Attributes inherited from OpenGl_FrameBuffer
    static const unsigned int NO_FRAMEBUFFER = 0
     Helpful constants.
    static const unsigned int NO_RENDERBUFFER = 0
    Protected Types inherited from OpenGl_FrameBuffer
    typedef NCollection_DynamicArray< occ::handle< OpenGl_Texture > > OpenGl_TextureArray

    Detailed Description

    Implements bridge FBO for direct rendering to Direct3D surfaces.

    Constructor & Destructor Documentation

    ◆ D3DHost_FrameBuffer()

    D3DHost_FrameBuffer::D3DHost_FrameBuffer ( )

    Empty constructor.

    ◆ ~D3DHost_FrameBuffer()

    D3DHost_FrameBuffer::~D3DHost_FrameBuffer ( )

    Destructor, should be called after Release().

    Member Function Documentation

    ◆ BindBuffer()

    virtual void D3DHost_FrameBuffer::BindBuffer ( const occ::handle< OpenGl_Context > & theCtx)
    overridevirtual

    Binds Direct3D objects for OpenGL drawing. Should be called before LockSurface() and followed by UnlockSurface();.

    Reimplemented from OpenGl_FrameBuffer.

    ◆ D3dColorSurface()

    IDirect3DSurface9 * D3DHost_FrameBuffer::D3dColorSurface ( )
    inline

    Returns D3D surface used as color buffer.

    ◆ D3dColorSurfaceShare()

    void * D3DHost_FrameBuffer::D3dColorSurfaceShare ( )
    inline

    Returns WDDM handle for D3D color surface.

    ◆ D3dFallback()

    bool D3DHost_FrameBuffer::D3dFallback ( ) const
    inline

    Returns TRUE if FBO has been initialized without WGL/D3D interop.

    ◆ Init() [1/7]

    bool D3DHost_FrameBuffer::Init ( const occ::handle< OpenGl_Context > & theCtx,
    IDirect3DDevice9 * theD3DDevice,
    const bool theIsD3dEx,
    const int theSizeX,
    const int theSizeY )

    Initializes OpenGL FBO for Direct3D interoperability or in fallback mode. Color pixel format is always GL_RGBA8/D3DFMT_X8R8G8B8, no MSAA; depth-stencil pixel format is GL_DEPTH24_STENCIL8.

    Parameters
    theGlCtxcurrently bound OpenGL context
    theD3DDeviced3d9 device
    theIsD3dExd3d9 extended flag (for creating shared texture resource)
    theSizeXtexture width
    theSizeYtexture height
    Returns
    true on success

    ◆ Init() [2/7]

    bool OpenGl_FrameBuffer::Init ( const occ::handle< OpenGl_Context > & theGlCtx,
    const int theSizeX,
    const int theSizeY,
    const int theColorFormat,
    const int theDepthFormat,
    const int theNbSamples = 0 )
    inlineprotected

    Initialize FBO for rendering into textures.

    Deprecated
    ("Obsolete method, use Init() taking NCollection_Vec2<int>")

    ◆ Init() [3/7]

    bool OpenGl_FrameBuffer::Init ( const occ::handle< OpenGl_Context > & theGlCtx,
    const int theSizeX,
    const int theSizeY,
    const NCollection_DynamicArray< int > & theColorFormats,
    const int theDepthFormat,
    const int theNbSamples = 0 )
    inlineprotected

    Initialize FBO for rendering into single/multiple color buffer and depth textures.

    Deprecated
    ("Obsolete method, use Init() taking NCollection_Vec2<int>")

    ◆ Init() [4/7]

    bool OpenGl_FrameBuffer::Init ( const occ::handle< OpenGl_Context > & theGlCtx,
    const int theSizeX,
    const int theSizeY,
    const NCollection_DynamicArray< int > & theColorFormats,
    const occ::handle< OpenGl_Texture > & theDepthStencilTexture,
    const int theNbSamples = 0 )
    inlineprotected

    Initialize FBO for rendering into single/multiple color buffer and depth textures.

    Deprecated
    ("Obsolete method, use Init() taking NCollection_Vec2<int>")

    ◆ Init() [5/7]

    bool OpenGl_FrameBuffer::Init ( const occ::handle< OpenGl_Context > & theGlCtx,
    const NCollection_Vec2< int > & theSize,
    const int theColorFormat,
    const int theDepthFormat,
    const int theNbSamples = 0 )
    protected

    Initialize FBO for rendering into textures.

    Parameters
    theGlCtxcurrently bound OpenGL context
    theSizetexture width x height
    theColorFormatcolor texture sized format (0 means no color attachment), e.g. GL_RGBA8
    theDepthFormatdepth-stencil texture sized format (0 means no depth attachment), e.g. GL_DEPTH24_STENCIL8
    theNbSamplesMSAA number of samples (0 means normal texture)
    Returns
    true on success

    ◆ Init() [6/7]

    bool OpenGl_FrameBuffer::Init ( const occ::handle< OpenGl_Context > & theGlCtx,
    const NCollection_Vec2< int > & theSize,
    const NCollection_DynamicArray< int > & theColorFormats,
    const int theDepthFormat,
    const int theNbSamples = 0 )
    protected

    Initialize FBO for rendering into single/multiple color buffer and depth textures.

    Parameters
    theGlCtxcurrently bound OpenGL context
    theSizetexture width x height
    theColorFormatslist of color texture sized format (0 means no color attachment), e.g. GL_RGBA8
    theDepthFormatdepth-stencil texture sized format (0 means no depth attachment), e.g. GL_DEPTH24_STENCIL8
    theNbSamplesMSAA number of samples (0 means normal texture)
    Returns
    true on success

    ◆ Init() [7/7]

    bool OpenGl_FrameBuffer::Init ( const occ::handle< OpenGl_Context > & theGlCtx,
    const NCollection_Vec2< int > & theSize,
    const NCollection_DynamicArray< int > & theColorFormats,
    const occ::handle< OpenGl_Texture > & theDepthStencilTexture,
    const int theNbSamples = 0 )
    protected

    Initialize FBO for rendering into single/multiple color buffer and depth textures.

    Parameters
    theGlCtxcurrently bound OpenGL context
    theSizetexture width x height
    theColorFormatslist of color texture sized format (0 means no color attachment), e.g. GL_RGBA8
    theDepthStencilTexturedepth-stencil texture
    theNbSamplesMSAA number of samples (0 means normal texture)
    Returns
    true on success

    ◆ InitD3dFallback()

    bool D3DHost_FrameBuffer::InitD3dFallback ( const occ::handle< OpenGl_Context > & theCtx,
    IDirect3DDevice9 * theD3DDevice,
    const bool theIsD3dEx,
    const int theSizeX,
    const int theSizeY,
    const int theDepthFormat )

    Initializes OpenGL FBO + Direct3D surface for copying memory using fallback. Color pixel format is always GL_RGBA8/D3DFMT_X8R8G8B8, no MSAA.

    Parameters
    theGlCtxcurrently bound OpenGL context
    theD3DDeviced3d9 device
    theIsD3dExd3d9 extended flag (for creating shared texture resource)
    theSizeXtexture width
    theSizeYtexture height
    theDepthFormatdepth-stencil texture sized format (0 means no depth attachment), e.g. GL_DEPTH24_STENCIL8
    Returns
    true on success

    ◆ InitD3dInterop()

    bool D3DHost_FrameBuffer::InitD3dInterop ( const occ::handle< OpenGl_Context > & theCtx,
    IDirect3DDevice9 * theD3DDevice,
    const bool theIsD3dEx,
    const int theSizeX,
    const int theSizeY,
    const int theDepthFormat )

    Initializes OpenGL FBO for Direct3D interoperability. Color pixel format is always GL_RGBA8/D3DFMT_X8R8G8B8, no MSAA.

    Parameters
    theGlCtxcurrently bound OpenGL context
    theD3DDeviced3d9 device
    theIsD3dExd3d9 extended flag (for creating shared texture resource)
    theSizeXtexture width
    theSizeYtexture height
    theDepthFormatdepth-stencil texture sized format (0 means no depth attachment), e.g. GL_DEPTH24_STENCIL8
    Returns
    true on success

    ◆ IsSRGBReady()

    bool D3DHost_FrameBuffer::IsSRGBReady ( ) const
    inline

    Returns TRUE if color buffer is sRGB ready; FALSE by default. Requires D3DSAMP_SRGBTEXTURE sampler parameter being set on D3D level for rendering D3D surface.

    ◆ LockSurface()

    virtual void D3DHost_FrameBuffer::LockSurface ( const occ::handle< OpenGl_Context > & theCtx)
    virtual

    Acquires D3D resource for OpenGL usage.

    ◆ registerD3dBuffer()

    bool D3DHost_FrameBuffer::registerD3dBuffer ( const occ::handle< OpenGl_Context > & theCtx)

    Binds Direct3D color buffer to OpenGL texture.

    ◆ Release()

    virtual void D3DHost_FrameBuffer::Release ( OpenGl_Context * theCtx)
    overridevirtual

    Releases D3D and OpenGL resources.

    Implements OpenGl_Resource.

    ◆ SetSRGBReady()

    void D3DHost_FrameBuffer::SetSRGBReady ( bool theIsReady)
    inline

    Set if color buffer is sRGB ready.

    ◆ UnlockSurface()

    virtual void D3DHost_FrameBuffer::UnlockSurface ( const occ::handle< OpenGl_Context > & theCtx)
    virtual

    Releases D3D resource.

    Field Documentation

    ◆ myD3dFallback

    bool D3DHost_FrameBuffer::myD3dFallback
    protected

    indicates that FBO has been initialized without WGL/D3D interop

    ◆ myD3dSurf

    IDirect3DSurface9* D3DHost_FrameBuffer::myD3dSurf
    protected

    D3D surface.

    ◆ myD3dSurfShare

    void* D3DHost_FrameBuffer::myD3dSurfShare
    protected

    D3D surface share handle in WDDM.

    ◆ myGlD3dDevice

    void* D3DHost_FrameBuffer::myGlD3dDevice
    protected

    WGL/D3D device handle.

    ◆ myGlD3dSurf

    void* D3DHost_FrameBuffer::myGlD3dSurf
    protected

    WGL/D3D surface handle.

    ◆ myIsSRGBReady

    bool D3DHost_FrameBuffer::myIsSRGBReady
    protected

    indicates that color buffer is sRGB ready

    ◆ myLockCount

    int D3DHost_FrameBuffer::myLockCount
    protected

    locking counter


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