OGRE-Next
4.0.0unstable
Object-Oriented Graphics Rendering Engine
|
#include <OgreGL3PlusTextureGpu.h>
Public Member Functions | |
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... | |
bool | _isDataReadyImpl () const override |
For internal use. More... | |
void | _notifyTextureSlotChanged (const TexturePool *newPool, uint16 slice) override |
void | _setToDisplayDummyTexture () override |
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 |
void | getCustomAttribute (IdString name, void *pData) 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... | |
void | getSubsampleLocations (vector< Vector2 >::type locations) override |
Get the MSAA subsample locations. More... | |
void | notifyDataIsReady () override |
Notifies it is safe to use the real data. Everything has been uploaded. More... | |
void | setTextureType (TextureTypes::TextureTypes textureType) override |
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 | _setDepthBufferDefaults (uint16 depthBufferPoolId, bool preferDepthTexture, PixelFormatGpu desiredDepthBufferFormat) |
These 3 values are used as defaults for the compositor to use, but they may be explicitly overriden by a RenderPassDescriptor. 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... | |
virtual uint16 | getDepthBufferPoolId () const |
uint32 | getDepthOrSlices () const |
virtual PixelFormatGpu | getDesiredDepthBufferFormat () 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... | |
virtual OrientationMode | getOrientationMode () const |
PixelFormatGpu | getPixelFormat () const |
virtual bool | getPreferDepthTexture () 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... | |
TextureGpuManager * | getTextureManager () const |
const TexturePool * | getTexturePool () 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 |
virtual bool | isOpenGLRenderWindow () const |
OpenGL RenderWindows are a bit specific: More... | |
bool | isPoolOwner () const |
bool | isReinterpretable () const |
bool | isRenderToTexture () const |
bool | isRenderWindowSpecific () const |
bool | isTexture () const |
bool | isTextureGpu () const override |
bool | isTilerMemoryless () const |
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) |
virtual void | setOrientationMode (OrientationMode orientationMode) |
Sets the given orientation. More... | |
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 |
virtual void | swapBuffers () |
Only valid for TextureGpu classes. More... | |
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 |
Ogre::GL3PlusTextureGpu::GL3PlusTextureGpu | ( | GpuPageOutStrategy::GpuPageOutStrategy | pageOutStrategy, |
VaoManager * | vaoManager, | ||
IdString | name, | ||
uint32 | textureFlags, | ||
TextureTypes::TextureTypes | initialType, | ||
TextureGpuManager * | textureManager | ||
) |
|
override |
|
overridevirtual |
Tells the API to let the HW autogenerate mipmaps.
Assumes allowsAutoMipmaps() == true and isRenderToTexture() == true
transitionMode | See CopyEncTransitionMode::CopyEncTransitionMode |
Implements Ogre::TextureGpu.
|
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)
Implements Ogre::TextureGpu.
Reimplemented in Ogre::GL3PlusTextureGpuWindow.
|
overridevirtual |
Reimplemented from Ogre::TextureGpu.
Reimplemented in Ogre::GL3PlusTextureGpuHeadlessWindow, and Ogre::GL3PlusTextureGpuWindow.
|
overridevirtual |
Implements Ogre::TextureGpu.
Reimplemented in Ogre::GL3PlusTextureGpuWindow.
|
overridevirtual |
dst | |
dstBox | |
dstMipLevel | |
srcBox | |
srcMipLevel | |
keepResolvedTexSynced | When true, if dst is an MSAA texture and is implicitly resolved (i.e. dst->hasMsaaExplicitResolves() == false); the resolved texture is also kept up to date. |
Typically the reason to set this to false is if you plane on rendering more stuff to dst texture and then resolve.
srcTransitionMode | Transition mode for 'this' |
dstTransitionMode | Transition mode for 'dst' |
Reimplemented from Ogre::TextureGpu.
|
overridevirtual |
Reimplemented from Ogre::TextureGpu.
Reimplemented in Ogre::GL3PlusTextureGpuHeadlessWindow, and Ogre::GL3PlusTextureGpuWindow.
|
inline |
Returns the GLuid of the texture that is being displayed.
While the texture is being loaded (i.e. data is not ready), we will display a dummy white texture. Once notifyDataIsReady, getDisplayTextureName should be the same as getFinalTextureName. In other words, getDisplayTextureName may change its returned value based on the texture's status
|
inline |
Always returns the internal handle that belongs to this texture.
Note that for TextureFlags::AutomaticBatching textures, this will be the handle of a 2D Array texture pool.
If the texture has MSAA enabled, this returns the handle to the resolve texture, not the MSAA one.
If TextureFlags::MsaaExplicitResolve is set, it returns the handle to the MSAA texture, since there is no resolve texture.
|
inline |
Returns GL_TEXTURE_2D / GL_TEXTURE_2D_ARRAY / etc.
|
inline |
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.
Otherwise it returns null.
|
overridevirtual |
Get the MSAA subsample locations.
mSampleDescription.pattern must not be MsaaPatterns::Undefined.
locations | Outputs an array with the locations for each subsample. Values are in range [-1; 1] |
Implements Ogre::TextureGpu.
Reimplemented in Ogre::GL3PlusTextureGpuWindow.
|
overridevirtual |
Notifies it is safe to use the real data. Everything has been uploaded.
Implements Ogre::TextureGpu.
Reimplemented in Ogre::GL3PlusTextureGpuWindow.
|
overridevirtual |
Reimplemented from Ogre::TextureGpu.
Reimplemented in Ogre::GL3PlusTextureGpuHeadlessWindow, and Ogre::GL3PlusTextureGpuWindow.