Files
bluflame/aiwaz/Aiwaz/Interfaces/ITexture.h
2026-04-18 22:31:51 +02:00

102 lines
2.7 KiB
C

#pragma once
#include "Resource.h"
struct LockedTextureData
{
void* Data;
uint32 RowPitch;
};
struct TextureInitialData
{
TextureInitialData()
: Data(NULL)
, Pitch(0)
, Owner(true)
{}
TextureInitialData(void* Data, uint32 Pitch)
: Data(Data)
, Pitch(Pitch)
, Owner(true)
{}
~TextureInitialData()
{
if (Owner && Data != NULL)
delete [] Data;
}
void* Data;
uint32 Pitch;
bool Owner;
};
struct CreateTextureDescriptor
{
uint32 Width;
uint32 Height;
uint32 Elements;
uint32 MipLevels;
DataFormat::Enumeration Format;
DataAccessType::Enumeration AccessType;
TextureInitialData* InitialData_;
static CreateTextureDescriptor AsSingleTexture(uint32 Width, uint32 Height, uint32 MipLevels = 1, DataFormat::Enumeration Format = DataFormat::R8G8B8A8_SignedNormalized, TextureInitialData* InitialData_ = NULL, DataAccessType::Enumeration AccessType = DataAccessType::Dynamic)
{
CreateTextureDescriptor Desc;
Desc.Width = Width;
Desc.Height = Height;
Desc.Elements = 0;
Desc.Format = Format;
Desc.AccessType = AccessType;
Desc.InitialData_ = InitialData_;
Desc.MipLevels = MipLevels;
return Desc;
}
static CreateTextureDescriptor AsArrayTexture(uint32 Width, uint32 Height, uint32 MipLevels = 1, uint32 Elements = 1, DataFormat::Enumeration Format = DataFormat::R8G8B8A8_SignedNormalized, TextureInitialData* InitialData_ = NULL)
{
CreateTextureDescriptor Desc;
Desc.Width = Width;
Desc.Height = Height;
Desc.Elements = Elements;
Desc.Format = Format;
Desc.AccessType = DataAccessType::Static;
Desc.InitialData_ = InitialData_;
Desc.MipLevels = MipLevels;
return Desc;
}
};
struct IFile;
struct __declspec(novtable) ITexture
{
virtual string8 get_BindingName() const = 0;
virtual void set_BindingName(const string8& argName) = 0;
virtual string16 get_FileName() const = 0;
virtual uint32 get_TextureWidth() const = 0;
virtual uint32 get_TextureHeight() const = 0;
virtual uint32 get_TextureArraySize() const = 0;
virtual DataFormat::Enumeration get_TextureFormat() const = 0;
virtual void LoadFromFile(const string16& argFileName, DataAccessType::Enumeration argAccessType = DataAccessType::Static) = 0;
virtual void CreateTexture(const CreateTextureDescriptor& argDesc) = 0;
virtual LockedTextureData LockTextureBuffer(DataAccessMode::Enumeration argAccessMode, uint32 argArrayElement = 0) = 0;
virtual void UnlockTextureBuffer() = 0;
virtual void CreateRenderTargetTexture(uint32 argWidth, uint32 argHeight, DataFormat::Enumeration argFormat, uint32 argMultiSampleCount, uint32 argMultiSampleQuality) = 0;
virtual ID3D10ShaderResourceView* get_ResourceViewFromTexture() const = 0;
virtual ID3D10Texture2D* get_Texture2D() const = 0;
};