port from perforce
This commit is contained in:
102
aiwaz/Aiwaz/Interfaces/ITexture.h
Normal file
102
aiwaz/Aiwaz/Interfaces/ITexture.h
Normal file
@@ -0,0 +1,102 @@
|
||||
#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;
|
||||
};
|
||||
Reference in New Issue
Block a user