mirror of
https://github.com/dege-diosg/dgVoodoo2
synced 2024-07-08 20:51:02 +02:00
156 lines
4.8 KiB
C++
156 lines
4.8 KiB
C++
// *****************************************************************************
|
|
// File: Texturer.cpp
|
|
//
|
|
// Description: Texturer implementation of dgVoodoo Addon DLL
|
|
//
|
|
// Contact person: DG
|
|
//
|
|
// *****************************************************************************
|
|
|
|
// --- Includes ----------------------------------------------------------------
|
|
|
|
#include "AddonMain.hpp"
|
|
|
|
// --- Texturer ----------------------------------------------------------------
|
|
|
|
Texturer::Texturer (AddonMain& main):
|
|
main (main)
|
|
{
|
|
}
|
|
|
|
|
|
Texturer::~Texturer ()
|
|
{
|
|
Exit ();
|
|
}
|
|
|
|
// --- Statics
|
|
|
|
const char* Texturer::formatIdxToStr[] = {
|
|
|
|
"P8", "RGB565", "XRGB555", "ARGB1555", "ARGB4444", "XRGB8888", "ARGB8888", "L8", "A8", "A8L8", "V8U8", "L6V5U5", "L8V8U8",
|
|
"Q8W8V8U8", "DXTC1", "DXTC2", "DXTC3", "DXTC4", "DXTC5", "UYVY", "YUY2", "ARGB2101010", "L16", "R16G16", "U16V16", "R16G16B16A16",
|
|
"R16F", "R16G16F", "R16G16B16A16F", "R32F", "R32G32F", "R32G32B32A32F", "BC4", "BC5",
|
|
"Z16", "Z24", "Z24S8", "Z24X4S4", "Z32"
|
|
};
|
|
|
|
|
|
// --- ID3DObserver callbacks
|
|
|
|
bool Texturer::D3DObjectCreated (ID3D* pD3D)
|
|
{
|
|
ID3D::ObjectType type = pD3D->GetObjectType ();
|
|
|
|
const static char* pObjectTypeStrs[] = { "Direct3D (DirectDraw)", "Direct3D8", "Direct3D9" };
|
|
|
|
main.pAddonMainCB->IssueInfo (&main, "D3D object (%p) is created. Object type is %s.\n", pD3D, pObjectTypeStrs[type]);
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
void Texturer::D3DObjectReleased (const ID3D* pD3D)
|
|
{
|
|
main.pAddonMainCB->IssueInfo (&main, "D3D object (%p) is released.\n", pD3D);
|
|
}
|
|
|
|
|
|
// --- ID3DDeviceObserver callbacks
|
|
|
|
bool Texturer::D3DDeviceObjectCreated (ID3DDevice* pD3DDevice)
|
|
{
|
|
ID3DDevice::ObjectType type = pD3DDevice->GetObjectType ();
|
|
|
|
const static char* pObjectTypeStrs[] = { "Direct3DDevice", "Direct3D8Device", "Direct3D9Device" };
|
|
|
|
main.pAddonMainCB->IssueInfo (&main, "D3DDevice object (%p) is created. Object type is %s.\n", pD3DDevice, pObjectTypeStrs[type]);
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
void Texturer::D3DDeviceObjectReleased (const ID3DDevice* pD3DDevice)
|
|
{
|
|
main.pAddonMainCB->IssueInfo (&main, "D3DDevice object (%p) is released.\n", pD3DDevice);
|
|
}
|
|
|
|
// --- ID3DResourceObserver callbacks
|
|
|
|
bool Texturer::TextureCreated (ID3D* pD3D, ID3DResource* pTexture)
|
|
{
|
|
{
|
|
ID3DResource::Desc desc = pTexture->ARGetDesc ();
|
|
main.pAddonMainCB->IssueInfo (&main, "D3D Texture (%p) is created. D3D = %p, width = %d, height = %d, mipmaplevels = %d, format = %s\n",
|
|
pTexture, pD3D, desc.width, desc.height, desc.mipMapNum, formatIdxToStr[desc.format]);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
bool Texturer::CubeTextureCreated (ID3D* pD3D, ID3DResource* pTexture)
|
|
{
|
|
{
|
|
ID3DResource::Desc desc = pTexture->ARGetDesc ();
|
|
main.pAddonMainCB->IssueInfo (&main, "D3D Cube Texture (%p) is created. D3D = %p, width = %d, height = %d, mipmaplevels = %d, format = %s\n",
|
|
pTexture, pD3D, desc.width, desc.height, desc.mipMapNum, formatIdxToStr[desc.format]);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
bool Texturer::VolumeTextureCreated (ID3D* pD3D, ID3DResource* pTexture)
|
|
{
|
|
{
|
|
ID3DResource::Desc desc = pTexture->ARGetDesc ();
|
|
main.pAddonMainCB->IssueInfo (&main, "D3D Volume Texture (%p) is created. D3D = %p, width = %d, height = %d, depth = %d, mipmaplevels = %d, format = %s (unhooked resource)\n",
|
|
pTexture, pD3D, desc.width, desc.height, desc.depth, desc.mipMapNum, formatIdxToStr[desc.format]);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
void Texturer::TextureReleased (ID3D* pD3D, const ID3DResource* pTexture)
|
|
{
|
|
main.pAddonMainCB->IssueInfo (&main, "D3D Texture (%p) is released. D3D = %p\n", pTexture, pD3D);
|
|
}
|
|
|
|
|
|
void Texturer::CubeTextureReleased (ID3D* pD3D, const ID3DResource* pTexture)
|
|
{
|
|
main.pAddonMainCB->IssueInfo (&main, "D3D Cube Texture (%p) is released. D3D = %p\n", pTexture, pD3D);
|
|
}
|
|
|
|
|
|
void Texturer::VolumeTextureReleased (ID3D* pD3D, const ID3DResource* pTexture)
|
|
{
|
|
main.pAddonMainCB->IssueInfo (&main, "D3D Volume Texture (%p) is released. D3D = %p\n", pTexture, pD3D);
|
|
}
|
|
|
|
// ---
|
|
|
|
bool Texturer::Init ()
|
|
{
|
|
if (main.pAddonMainCB->RegisterForCallback (IID_D3DObserver, static_cast<ID3DObserver*> (this))) {
|
|
if (main.pAddonMainCB->RegisterForCallback (IID_D3DDeviceObserver, static_cast<ID3DDeviceObserver*> (this))) {
|
|
if (main.pAddonMainCB->RegisterForCallback(IID_D3DResourceObserver, static_cast<ID3DResourceObserver*> (this))) {
|
|
|
|
return true;
|
|
}
|
|
main.pAddonMainCB->UnregisterForCallback (IID_D3DDeviceObserver, static_cast<ID3DDeviceObserver*> (this));
|
|
}
|
|
main.pAddonMainCB->UnregisterForCallback (IID_D3DObserver, static_cast<ID3DObserver*> (this));
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
|
|
void Texturer::Exit ()
|
|
{
|
|
main.pAddonMainCB->UnregisterForCallback (IID_D3DResourceObserver, static_cast<ID3DResourceObserver*> (this));
|
|
main.pAddonMainCB->UnregisterForCallback (IID_D3DDeviceObserver, static_cast<ID3DDeviceObserver*> (this));
|
|
main.pAddonMainCB->UnregisterForCallback (IID_D3DObserver, static_cast<ID3DObserver*> (this));
|
|
}
|