Acest refactor inlocuieste vechiul sistem de incarcare a fisierelor .DDS bazat pe DXTCImage cu libraria DirectXTex.
Motivul:
- DXTCImage este vechi si limitat
- era folosit practic doar in GrpImageTexture.cpp
- DirectXTex este mult mai modern si mai flexibil
- dupa aceasta modificare, fisierele DXTCImage.cpp si DXTCImage.h nu mai sunt necesare
Atentie:
DirectXTex este gandit pentru DX11/DX12, iar aici se foloseste un mic convertor pentru compatibilitate cu D3D9.
Daca primiti syserr pentru un format .DDS, inseamna ca trebuie sa extindeti functia de conversie cu formatul vostru.
Nota:
Lib in caz ca aveti nevoie sa le recompilati:
*Link download / Code:
1) Scoatem fisierele DXTCImage din proiect
In Visual Studio, mergem in EterImageLib si stergem din proiect:
2) GrpImageTexture.h
Deschidem GrpImageTexture.h si cautam:
Code:
#include "../eterImageLib/DXTCImage.h"Tot in GrpImageTexture.h cautam:
Code:
bool CreateDDSTexture(CDXTCImage & image, const BYTE * c_pbBuf);3) GrpImageTexture.cpp
Deschidem GrpImageTexture.cpp si cautam functia:
Code:
bool CGraphicImageTexture::CreateDDSTexture(CDXTCImage& image, const BYTE* /*c_pbBuf*/)Tot in GrpImageTexture.cpp, la inceputul fisierului, adaugam:
Tot in GrpImageTexture.cpp cautam functia:
Code:
bool CGraphicImageTexture::CreateFromMemoryFile(UINT bufSize, const void* c_pvBuf, D3DFORMAT d3dFmt, DWORD dwFilter)4) UserInterface.cpp
Deschidem UserInterface.cpp si cautam:
Code:
#pragma comment( lib, "python27.lib" )Explicatie:
Acest refactor face urmatoarele:
- elimina dependenta de DXTCImage
- foloseste DirectXTex pentru citirea si procesarea fisierelor DDS
- converteste formatele DXGI in D3D9
- copiaza corect mipmap-urile si datele texturilor
- pastreaza un fallback vechi pentru fisierele care nu sunt DDS
Avantaje:
- cod mai curat
- suport mai bun pentru formate DDS
- structura mult mai moderna
- mai usor de extins
Atentie:
Daca un anumit DDS produce eroare, trebuie adaugat formatul lipsa in functia:
Code:
DXGI_to_D3D9_Format

la acest mesaj și conținutul se va afișa automat.

