102 lines
2.7 KiB
C
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;
|
|
}; |