NAP
Public Member Functions | List of all members
Image Class Reference

#include <image.h>

Public Member Functions

 Image (Core &core)
 
BitmapgetBitmap ()
 
void update ()
 
void asyncGetData ()
 
void update (const void *data, int width, int height, int pitch, ESurfaceChannels channels)
 
void update (const void *data, const SurfaceDescriptor &surfaceDescriptor)
 
void asyncGetData (Bitmap &bitmap)
 
void asyncGetData (std::function< void(const void *, size_t)> copyFunction)
 
- Public Member Functions inherited from Texture2D
 Texture2D (Core &core)
 
virtual ~Texture2D () override
 
bool init (const SurfaceDescriptor &descriptor, bool generateMipMaps, const glm::vec4 &clearColor, VkImageUsageFlags requiredFlags, utility::ErrorState &errorState)
 
bool init (const SurfaceDescriptor &descriptor, bool generateMipMaps, VkImageUsageFlags requiredFlags, utility::ErrorState &errorState)
 
bool init (const SurfaceDescriptor &descriptor, bool generateMipMaps, void *initialData, VkImageUsageFlags requiredFlags, utility::ErrorState &errorState)
 
const glm::vec2 getSize () const
 
int getWidth () const
 
int getHeight () const
 
void update (const void *data, int width, int height, int pitch, ESurfaceChannels channels)
 
void update (const void *data, const SurfaceDescriptor &surfaceDescriptor)
 
virtual uint getLayerCount () const override
 
virtual uint getMipLevels () const override
 
virtual const ImageDatagetHandle () const override
 
void asyncGetData (Bitmap &bitmap)
 
void asyncGetData (std::function< void(const void *, size_t)> copyFunction)
 
- Public Member Functions inherited from Texture
 Texture (Core &core)
 
virtual ~Texture ()
 
virtual VkImageLayout getTargetLayout () const
 
VkFormat getFormat () const
 
const SurfaceDescriptorgetDescriptor () const
 
RenderServicegetRenderService ()
 
const RenderServicegetRenderService () const
 
virtual void onDestroy () override
 
- Public Member Functions inherited from Resource
 Resource ()
 
- Public Member Functions inherited from Object
 Object ()
 
virtual ~Object ()
 
virtual bool init (utility::ErrorState &errorState)
 
 Object (Object &)=delete
 
Objectoperator= (const Object &)=delete
 
 Object (Object &&)=delete
 
Objectoperator= (Object &&)=delete
 

Additional Inherited Members

- Public Types inherited from Texture
enum  EUsage { Static, DynamicRead, DynamicWrite }
 
- Static Public Member Functions inherited from Object
static bool isIDProperty (rtti::Instance &object, const rtti::Property &property)
 
- Public Attributes inherited from Texture2D
EUsage mUsage = EUsage::Static
 Property: 'Usage' If this texture is updated frequently or considered static. More...
 
- Public Attributes inherited from Texture
nap::Signal textureDestroyed
 Signal that is triggered before texture is destroyed. More...
 
- Public Attributes inherited from Object
std::string mID
 Property: 'mID' unique name of the object. Used as an identifier by the system. More...
 
- Protected Types inherited from Texture2D
using TextureReadCallback = std::function< void(void *data, size_t sizeInBytes)>
 
- Protected Member Functions inherited from Texture2D
virtual ImageDatagetHandle () override
 
bool initInternal (const SurfaceDescriptor &descriptor, bool generateMipMaps, VkImageUsageFlags requiredFlags, utility::ErrorState &errorState)
 
void upload (VkCommandBuffer commandBuffer)
 
void download (VkCommandBuffer commandBuffer)
 
void notifyDownloadReady (int frameIndex)
 
void clearDownloads ()
 
- Protected Member Functions inherited from Texture
virtual void clear (VkCommandBuffer commandBuffer)
 
void requestClear ()
 
- Protected Attributes inherited from Texture2D
ImageData mImageData
 2D Texture vulkan image buffers More...
 
std::vector< BufferDatamStagingBuffers
 All vulkan staging buffers, 1 when static or using dynamic read, no. of frames in flight when dynamic write. More...
 
int mCurrentStagingBufferIndex = -1
 Currently used staging buffer. More...
 
size_t mImageSizeInBytes = -1
 Size in bytes of texture. More...
 
std::vector< TextureReadCallbackmReadCallbacks
 Number of callbacks based on number of frames in flight. More...
 
std::vector< int > mDownloadStagingBufferIndices
 Staging buffer indices associated with a frameindex. More...
 
uint32 mMipLevels = 1
 Total number of generated mip-maps. More...
 
- Protected Attributes inherited from Texture
RenderServicemRenderService
 Reference to the render service. More...
 
SurfaceDescriptor mDescriptor
 Texture description. More...
 
VkFormat mFormat = VK_FORMAT_UNDEFINED
 Vulkan texture format. More...
 
VkClearColorValue mClearColor = { 0.0f, 0.0f, 0.0f, 0.0f }
 Color used for clearing the texture. More...
 

Description

Represents both CPU and GPU data of a texture. The CPU data is stored internally as a bitmap and is optional. GPU textures can be read back to CPU using the asyncGetData() function. This will fill the internal bitmap with the data read-back from the GPU. To update the GPU texture, update the bitmap (using getBitmap()) and call update() afterwards. The format & size of the CPU and GPU textures are guaranteed to match afterwards.

Inheritance diagram for Image:
[legend]
Collaboration diagram for Image:
[legend]

Constructor & Destructor Documentation

◆ Image()

Image ( Core core)
Parameters
corethe core instance.

Member Function Documentation

◆ asyncGetData() [1/3]

void asyncGetData ( )

Starts a transfer of texture data from GPU to CPU. This is a non blocking call. For performance, it is important to start a transfer as soon as possible after the texture is rendered.

◆ asyncGetData() [2/3]

void asyncGetData

Starts a transfer of texture data from GPU to CPU. This is a non blocking call. When the transfer completes, the bitmap will be filled with the texture data.

Parameters
bitmapthe bitmap to download texture data into.

◆ asyncGetData() [3/3]

void asyncGetData

Starts a transfer of texture data from GPU to CPU. Use this overload to pass your own copy function. This is a non blocking call. When the transfer completes, the bitmap will be filled with the texture data.

Parameters
copyFunctionthe copy function to call when the texture data is available for download.

◆ getBitmap()

Bitmap& getBitmap ( )
Returns
CPU data for this texture in the form of a Bitmap. The Bitmap can be empty if this is a GPU-only texture.

◆ update() [1/3]

void update ( )

Uploads the CPU data in the internal Bitmap to the GPU. The bitmap should contain valid data and not be empty.

◆ update() [2/3]

void update

Uploads CPU data to the texture on the GPU. Note that you can only update the contents of a texture once if 'Usage' is 'DynamicRead' or 'Static'.

Parameters
datapointer to the CPU data.
surfaceDescriptortexture description.

◆ update() [3/3]

void update

Uploads CPU data to the texture on the GPU. Note that you can only update the contents of a texture once if 'Usage' is 'DynamicRead' or 'Static'.

Parameters
datapointer to the CPU data.
widthwidth of the image in pixels
heightheight of the image in pixels
pitchsize in bytes of a single row of pixel data.
channelstotal number of channels: 3 for RGB, 4 for RGBA etc.