The Vish Visualization Shell 0.3
Vish
Classes | Public Member Functions | Public Attributes | List of all members
Wizt::MultiviewOVR Class Reference
Inheritance diagram for Wizt::MultiviewOVR:
MemCore::Interface< MultiviewOVR > MemCore::InterfaceBase MemCore::ReferenceBase< InterfaceBase >

Classes

struct  MultiviewCapability
 Check whether the OVR Multiview and other multiview-related extensions are available. More...
 

Public Member Functions

void BlitToDrawBuffer (VRenderContext &Context, const ViewportGeometry &VP, unsigned NumberOfEyes, unsigned ActiveEye, const RefPtr< Framebuffer > &Target)
 Ensures depth writes occur during fullscreen blit passes.
 
RefPtr< ChunkBasegetColors (bool As16Bit) const
 Read the entire color texture.
 
RefPtr< ChunkBasegetColors (const ViewportGeometry &VP, int Eye, bool As16Bit) const
 Read a subset of the colors.
 
- Public Member Functions inherited from MemCore::Interface< MultiviewOVR >
const type_info & getInterfaceDomain () const
 Run-time information about the type used for InterCube registration.
 
- Public Member Functions inherited from MemCore::InterfaceBase
virtual bool apply (Intercube &I, const RefPtr< InterfaceIterationParameter > &)
 modifyable callback function
 
virtual bool apply_const (const Intercube &I, const RefPtr< InterfaceIterationParameter > &)
 constant callback function
 
 InterfaceBase () throw ()
 Constructor.
 
- Public Member Functions inherited from MemCore::ReferenceBase< InterfaceBase >
auto getObjectCountID () const noexcept
 Get a unique ID for this object in the given domain.
 
bool isIdentical (const WeakPtr< InterfaceBase, InterfaceBase > &PossibleSelf) const noexcept
 Check if this object is identical to the one used by the given pointer.
 
void mkAutoDestructive ()
 Marks this object as being automatically destructed, e.g.
 
refcount_t refcount () const noexcept
 The strong reference count.
 
 ReferenceBase (InterfaceBase *that) noexcept
 Constructor, initializes reference counter to zero.
 
const auto & self () const
 Return weak pointer to the object self.
 
refcount_t wrefcount () const noexcept
 The weak reference count.
 

Public Attributes

WeakPtr< AnemoneBasicCreatorUserBlitAnemoneCreator
 Overriding the way how the framebuffer texture is blit to the screen.
 
WeakPtr< RenderAbleUserBlitterObject
 The visibility of this RenderAble defines whether the user Blit Anemone will be used instead of the default Anemone.
 

Additional Inherited Members

- Public Types inherited from MemCore::Interface< MultiviewOVR >
using InterfaceDomain_t = MultiviewOVR
 Compile-time information about the type used for InterCube registration.
 
- Public Types inherited from MemCore::ReferenceBase< InterfaceBase >
using reference_domain_t = InterfaceBase
 The type of the base class.
 
using SelfPtr_t = WeakPtr< InterfaceBase, InterfaceBase >
 Type for a pointer to this object itself.
 
- Protected Member Functions inherited from MemCore::InterfaceBase
 ~InterfaceBase ()
 Destructor.
 
- Protected Member Functions inherited from MemCore::ReferenceBase< InterfaceBase >
virtual void extremeUnction ()
 A virtual function that will be called just before the object is destroyed.
 
ReferenceBaseoperator= (const ReferenceBase &R)
 Protected assignment operator (should not be called).
 
void suicide ()
 Delete this.
 
virtual ~ReferenceBase ()
 Virtual destructor.
 

Member Function Documentation

◆ BlitToDrawBuffer()

void Wizt::MultiviewOVR::BlitToDrawBuffer ( VRenderContext Context,
const ViewportGeometry VP,
unsigned  NumberOfEyes,
unsigned  ActiveEye,
const RefPtr< Framebuffer > &  Target 
)

Ensures depth writes occur during fullscreen blit passes.

When performing a fullscreen blit that writes a custom depth value via gl_FragDepth, the depth test must remain enabled. Disabling the depth test (glDisable(GL_DEPTH_TEST)) can cause some drivers to bypass the entire depth pipeline, which prevents gl_FragDepth from updating the default framebuffer's depth buffer even if depthMask is enabled. To guarantee correct depth writes, enable depth testing and use GL_ALWAYS as the depth function:

glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_ALWAYS);

This keeps the depth pipeline active while ensuring all fragments pass and the shader-provided depth value is written as intended.

Member Data Documentation

◆ UserBlitAnemoneCreator

WeakPtr<AnemoneBasicCreator> Wizt::MultiviewOVR::UserBlitAnemoneCreator

Overriding the way how the framebuffer texture is blit to the screen.

The AnemoneCreator must be stored at some RenderAble object such that this WeakPtr recognizes when this object has been removed.