OGRE-Next  3.0.0unstable
Object-Oriented Graphics Rendering Engine
Ogre::GL3PlusTextureGpuWindow Class Referencefinal

#include <OgreGL3PlusTextureGpuWindow.h>

+ Inheritance diagram for Ogre::GL3PlusTextureGpuWindow:

Public Member Functions

 GL3PlusTextureGpuWindow (GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, VaoManager *vaoManager, IdString name, uint32 textureFlags, TextureTypes::TextureTypes initialType, TextureGpuManager *textureManager, GL3PlusContext *context, Window *window)
 
 ~GL3PlusTextureGpuWindow () override
 
bool _isDataReadyImpl () const override
 For internal use. More...
 
void _notifyTextureSlotChanged (const TexturePool *newPool, uint16 slice) override
 
void _setToDisplayDummyTexture () override
 
void getCustomAttribute (IdString name, void *pData) override
 
void getSubsampleLocations (vector< Vector2 >::type locations) override
 Get the MSAA subsample locations. More...
 
bool isOpenGLRenderWindow () const override
 OpenGL RenderWindows are a bit specific: More...
 
void notifyDataIsReady () override
 Notifies it is safe to use the real data. Everything has been uploaded. More...
 
void setTextureType (TextureTypes::TextureTypes textureType) override
 
void swapBuffers () override
 Only valid for TextureGpu classes. More...
 
- Public Member Functions inherited from Ogre::GL3PlusTextureGpuRenderTarget
 GL3PlusTextureGpuRenderTarget (GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, VaoManager *vaoManager, IdString name, uint32 textureFlags, TextureTypes::TextureTypes initialType, TextureGpuManager *textureManager)
 
 ~GL3PlusTextureGpuRenderTarget () override
 
void _setDepthBufferDefaults (uint16 depthBufferPoolId, bool preferDepthTexture, PixelFormatGpu desiredDepthBufferFormat) override
 These 3 values are used as defaults for the compositor to use, but they may be explicitly overriden by a RenderPassDescriptor. More...
 
uint16 getDepthBufferPoolId () const override
 
PixelFormatGpu getDesiredDepthBufferFormat () const override
 
OrientationMode getOrientationMode () const override
 
bool getPreferDepthTexture () const override
 
void setOrientationMode (OrientationMode orientationMode) override
 Sets the given orientation. More...
 
- Public Member Functions inherited from Ogre::GL3PlusTextureGpu
 GL3PlusTextureGpu (GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, VaoManager *vaoManager, IdString name, uint32 textureFlags, TextureTypes::TextureTypes initialType, TextureGpuManager *textureManager)
 
 ~GL3PlusTextureGpu () override
 
void _autogenerateMipmaps (CopyEncTransitionMode::CopyEncTransitionMode transitionMode=CopyEncTransitionMode::Auto) override
 Tells the API to let the HW autogenerate mipmaps. More...
 
void copyTo (TextureGpu *dst, const TextureBox &dstBox, uint8 dstMipLevel, const TextureBox &srcBox, uint8 srcMipLevel, bool keepResolvedTexSynced=true, CopyEncTransitionMode::CopyEncTransitionMode srcTransitionMode=CopyEncTransitionMode::Auto, CopyEncTransitionMode::CopyEncTransitionMode dstTransitionMode=CopyEncTransitionMode::Auto) override
 
GLuint getDisplayTextureName () const
 Returns the GLuid of the texture that is being displayed. More...
 
GLuint getFinalTextureName () const
 Always returns the internal handle that belongs to this texture. More...
 
GLenum getGlTextureTarget () const
 Returns GL_TEXTURE_2D / GL_TEXTURE_2D_ARRAY / etc. More...
 
GLuint getMsaaFramebufferName () const
 If MSAA > 1u and TextureFlags::MsaaExplicitResolve is not set, this returns the handle to the temporary MSAA renderbuffer used for rendering, which will later be resolved into the resolve texture. More...
 
- Public Member Functions inherited from Ogre::TextureGpu
 TextureGpu (GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, VaoManager *vaoManager, IdString name, uint32 textureFlags, TextureTypes::TextureTypes initialType, TextureGpuManager *textureManager)
 
 ~TextureGpu () override
 
uint8_getSysRamCopy (uint8 mipLevel)
 
TextureBox _getSysRamCopyAsBox (uint8 mipLevel)
 
size_t _getSysRamCopyBytesPerImage (uint8 mipLevel)
 Note: Returns non-zero even if there is no system ram copy. More...
 
uint32 _getSysRamCopyBytesPerRow (uint8 mipLevel)
 Note: Returns non-zero even if there is no system ram copy. More...
 
bool _isManualTextureFlagPresent () const
 
void _notifySysRamDownloadIsReady (uint8 *sysRamPtr, bool resyncOnly)
 Do not call directly. More...
 
void _resetTextureManager ()
 
void _resolveTo (TextureGpu *resolveTexture)
 Immediately resolves this texture to the resolveTexture argument. More...
 
virtual void _setNextLayout (ResourceLayout::Layout layout)
 Sets the layout the texture should be transitioned to after the next copy operation (once the copy encoder gets closed) More...
 
void _setSampleDescription (SampleDescription desc, SampleDescription validatedSampleDesc)
 For internal use. More...
 
void _setSourceType (uint8 type)
 
void _syncGpuResidentToSystemRam ()
 Forces downloading data from GPU to CPU, usually because the data on GPU changed and we're in strategy AlwaysKeepSystemRamCopy. More...
 
void _transitionTo (GpuResidency::GpuResidency newResidency, uint8 *sysRamCopy, bool autoDeleteSysRamCopy=true)
 This function may be called manually (if user is manually managing a texture) or automatically (e.g. More...
 
void addListener (TextureGpuListener *listener)
 
bool allowsAutoMipmaps () const
 
void copyContentsToMemory (TextureBox src, TextureBox dst, PixelFormatGpu dstFormat, bool automaticResolve=true)
 Writes the current contents of the render target to the memory. More...
 
void copyParametersFrom (TextureGpu *src)
 
virtual ResourceLayout::Layout getCurrentLayout () const
 
ResourceLayout::Layout getDefaultLayout (bool bIgnoreDiscardableFlag=false) const
 
uint32 getDepth () const
 For TypeCube & TypeCubeArray, this value returns 1. More...
 
uint32 getDepthOrSlices () const
 
TextureBox getEmptyBox (uint8 mipLevel)
 
uint32 getHeight () const
 
uint32 getInternalHeight () const
 Real API height accounting for TextureGpu::getOrientationMode. See getInternalWidth. More...
 
uint16 getInternalSliceStart () const
 
TextureTypes::TextureTypes getInternalTextureType () const
 
uint32 getInternalWidth () const
 Real API width accounting for TextureGpu::getOrientationMode If orientation mode is 90° or 270° then getInternalWidth returns the height and getInternalHeight returns the width. More...
 
const vector< TextureGpuListener * >::type & getListeners () const
 
String getNameStr () const override
 Note: This returns the alias name of the texture. More...
 
uint8 getNumMipmaps () const
 
uint32 getNumSlices () const
 For TypeCube this value returns 6. More...
 
PixelFormatGpu getPixelFormat () const
 
virtual String getRealResourceNameStr () const
 Returns the real name (e.g. disk in file) of the resource. More...
 
SampleDescription getRequestedSampleDescription () const
 Returns original requested sample description, i.e. the raw input to setSampleDescription. More...
 
virtual String getResourceGroupStr () const
 
SampleDescription getSampleDescription () const
 Returns effective sample description supported by the API. More...
 
String getSettingsDesc () const
 
size_t getSizeBytes () const
 Returns total size in bytes used in GPU by this texture (not by its pool) including mipmaps. More...
 
uint8 getSourceType () const
 This setting is for where the texture is created, e.g. More...
 
TextureGpuManagergetTextureManager () const
 
const TexturePoolgetTexturePool () const
 
uint32 getTexturePoolId () const
 
TextureTypes::TextureTypes getTextureType () const
 
uint32 getWidth () const
 
bool hasAutomaticBatching () const
 
bool hasAutoMipmapAuto () const
 
bool hasEquivalentParameters (TextureGpu *other) const
 
bool hasMsaaExplicitResolves () const
 
bool isDataReady () const
 True if this texture is fully ready to be used for displaying. More...
 
bool isDiscardableContent () const
 
bool isManualTexture () const
 
bool isMetadataReady () const
 It is threadsafe to call this function from main thread. More...
 
virtual bool isMsaaPatternSupported (MsaaPatterns::MsaaPatterns pattern)
 
bool isMultisample () const
 
bool isPoolOwner () const
 
bool isReinterpretable () const
 
bool isRenderToTexture () const
 
bool isRenderWindowSpecific () const
 
bool isTexture () const
 
bool isTextureGpu () const override
 
bool isUav () const
 
void notifyAllListenersTextureChanged (uint32 reason, void *extraData=0)
 
bool prefersLoadingFromFileAsSRGB () const
 
void removeListener (TextureGpuListener *listener)
 
bool requiresTextureFlipping () const
 
void scheduleReupload (Image2 *image=0, bool autoDeleteImage=true, bool bSkipMultiload=false)
 There are times where you want to reload a texture again (e.g. More...
 
void scheduleTransitionTo (GpuResidency::GpuResidency nextResidency, Image2 *image=0, bool autoDeleteImage=true, bool bSkipMultiload=false)
 Same as unsafeScheduleTransitionTo, but first checks if we're already in the residency state we want to go to, or if it has already been scheduled; thus it can be called multiple times. More...
 
void setNumMipmaps (uint8 numMipmaps)
 
void setPixelFormat (PixelFormatGpu pixelFormat)
 Sets the pixel format. More...
 
void setResolution (uint32 width, uint32 height, uint32 depthOrSlices=1u)
 
void setSampleDescription (SampleDescription desc)
 
void setTexturePoolId (uint32 poolId)
 2D Texture with automatic batching will be merged with other textures into the same pool as one big 2D Array texture behind the scenes. More...
 
virtual bool supportsAsDepthBufferFor (TextureGpu *colourTarget) const
 
void unsafeScheduleTransitionTo (GpuResidency::GpuResidency nextResidency, Image2 *image=0, bool autoDeleteImage=true, bool bSkipMultiload=false)
 Schedules an async transition in residency. More...
 
void waitForData ()
 Blocks main thread until data is ready. More...
 
void waitForMetadata ()
 Blocks main thread until metadata is ready. More...
 
void writeContentsToFile (const String &filename, uint8 minMip, uint8 maxMip, bool automaticResolve=true)
 Writes the current contents of the render target to the named file. More...
 
- Public Member Functions inherited from Ogre::GpuTrackedResource
virtual ~GpuTrackedResource ()
 
- Public Member Functions inherited from Ogre::GpuResource
 GpuResource (GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, VaoManager *vaoManager, IdString name)
 
virtual ~GpuResource ()
 
void _addPendingResidencyChanges (uint32 value)
 
void _setNextResidencyStatus (GpuResidency::GpuResidency nextResidency)
 
GpuPageOutStrategy::GpuPageOutStrategy getGpuPageOutStrategy () const
 
IdString getName () const
 
GpuResidency::GpuResidency getNextResidencyStatus () const
 When getResidencyStatus() != getNextResidencyStatus(), residency changes happen in the main thread, while some preparation may be happening in the background. More...
 
uint32 getPendingResidencyChanges () const
 Returns the number of pending residency changes. More...
 
GpuResidency::GpuResidency getResidencyStatus () const
 

Additional Inherited Members

- Static Public Attributes inherited from Ogre::TextureGpu
static OrientationMode msDefaultOrientationMode
 PUBLIC VARIABLE. More...
 
static const IdString msFinalTextureBuffer
 
static const IdString msMsaaTextureBuffer
 

Constructor & Destructor Documentation

◆ GL3PlusTextureGpuWindow()

Ogre::GL3PlusTextureGpuWindow::GL3PlusTextureGpuWindow ( GpuPageOutStrategy::GpuPageOutStrategy  pageOutStrategy,
VaoManager vaoManager,
IdString  name,
uint32  textureFlags,
TextureTypes::TextureTypes  initialType,
TextureGpuManager textureManager,
GL3PlusContext context,
Window window 
)

◆ ~GL3PlusTextureGpuWindow()

Ogre::GL3PlusTextureGpuWindow::~GL3PlusTextureGpuWindow ( )
override

Member Function Documentation

◆ _isDataReadyImpl()

bool Ogre::GL3PlusTextureGpuWindow::_isDataReadyImpl ( ) const
overridevirtual

For internal use.

Do not call directly.

This function is the same isDataReady except it ignores pending residency changes, which is important when TextureGpuManager needs to know this information but the TextureGpu is transitioning (thus mPendingResidencyChanges is in an inconsistent state)

Reimplemented from Ogre::GL3PlusTextureGpu.

◆ _notifyTextureSlotChanged()

void Ogre::GL3PlusTextureGpuWindow::_notifyTextureSlotChanged ( const TexturePool newPool,
uint16  slice 
)
overridevirtual

Reimplemented from Ogre::GL3PlusTextureGpu.

◆ _setToDisplayDummyTexture()

void Ogre::GL3PlusTextureGpuWindow::_setToDisplayDummyTexture ( )
overridevirtual

Reimplemented from Ogre::GL3PlusTextureGpu.

◆ getCustomAttribute()

void Ogre::GL3PlusTextureGpuWindow::getCustomAttribute ( IdString  name,
void *  pData 
)
overridevirtual

Reimplemented from Ogre::GL3PlusTextureGpu.

◆ getSubsampleLocations()

void Ogre::GL3PlusTextureGpuWindow::getSubsampleLocations ( vector< Vector2 >::type  locations)
overridevirtual

Get the MSAA subsample locations.

mSampleDescription.pattern must not be MsaaPatterns::Undefined.

Parameters
locationsOutputs an array with the locations for each subsample. Values are in range [-1; 1]

Reimplemented from Ogre::GL3PlusTextureGpu.

◆ isOpenGLRenderWindow()

bool Ogre::GL3PlusTextureGpuWindow::isOpenGLRenderWindow ( ) const
overridevirtual

OpenGL RenderWindows are a bit specific:

  • Their origins are upside down. Which means we need to flip Y.
  • They can access resolved contents of MSAA even if hasMsaaExplicitResolves = true
  • Headless windows return false since internally they're FBOs. However isRenderWindowSpecific will return true

Reimplemented from Ogre::TextureGpu.

◆ notifyDataIsReady()

void Ogre::GL3PlusTextureGpuWindow::notifyDataIsReady ( )
overridevirtual

Notifies it is safe to use the real data. Everything has been uploaded.

Reimplemented from Ogre::GL3PlusTextureGpu.

◆ setTextureType()

void Ogre::GL3PlusTextureGpuWindow::setTextureType ( TextureTypes::TextureTypes  textureType)
overridevirtual

Reimplemented from Ogre::GL3PlusTextureGpu.

◆ swapBuffers()

void Ogre::GL3PlusTextureGpuWindow::swapBuffers ( )
overridevirtual

Only valid for TextureGpu classes.

TODO: This may be moved to a different class.

Reimplemented from Ogre::TextureGpu.


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