migrate to DirectX 9Ex from DirectX 9
This commit is contained in:
@@ -155,7 +155,7 @@ void CBlockTexture::InvalidateRect(const RECT & c_rsrcRect)
|
||||
|
||||
bool CBlockTexture::Create(CGraphicDib * pDIB, const RECT & c_rRect, DWORD dwWidth, DWORD dwHeight)
|
||||
{
|
||||
if (FAILED(ms_lpd3dDevice->CreateTexture(dwWidth, dwHeight, 0, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &m_lpd3dTexture, nullptr)))
|
||||
if (FAILED(ms_lpd3dDevice->CreateTexture(dwWidth, dwHeight, 0, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &m_lpd3dTexture, nullptr)))
|
||||
{
|
||||
Tracef("Failed to create block texture %u, %u\n", dwWidth, dwHeight);
|
||||
return false;
|
||||
|
||||
@@ -22,8 +22,8 @@ void D3DXVECTOR3ToPixelPosition(const D3DXVECTOR3& c_rv3Src, D3DXVECTOR3* pv3Dst
|
||||
HWND CGraphicBase::ms_hWnd;
|
||||
HDC CGraphicBase::ms_hDC;
|
||||
|
||||
LPDIRECT3D9 CGraphicBase::ms_lpd3d = NULL;
|
||||
LPDIRECT3DDEVICE9 CGraphicBase::ms_lpd3dDevice = NULL;
|
||||
LPDIRECT3D9EX CGraphicBase::ms_lpd3d = NULL;
|
||||
LPDIRECT3DDEVICE9EX CGraphicBase::ms_lpd3dDevice = NULL;
|
||||
ID3DXMatrixStack * CGraphicBase::ms_lpd3dMatStack = NULL;
|
||||
D3DPRESENT_PARAMETERS CGraphicBase::ms_d3dPresentParameter;
|
||||
D3DVIEWPORT9 CGraphicBase::ms_Viewport;
|
||||
|
||||
@@ -241,8 +241,8 @@ class CGraphicBase
|
||||
|
||||
static HWND ms_hWnd;
|
||||
static HDC ms_hDC;
|
||||
static LPDIRECT3D9 ms_lpd3d;
|
||||
static LPDIRECT3DDEVICE9 ms_lpd3dDevice;
|
||||
static LPDIRECT3D9EX ms_lpd3d;
|
||||
static LPDIRECT3DDEVICE9EX ms_lpd3dDevice;
|
||||
static ID3DXMatrixStack* ms_lpd3dMatStack;
|
||||
static D3DVIEWPORT9 ms_Viewport;
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ void CGraphicDevice::EnableWebBrowserMode(const RECT& c_rcWebPage)
|
||||
rkD3DPP.BackBufferCount = 1;
|
||||
rkD3DPP.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
|
||||
|
||||
IDirect3DDevice9& rkD3DDev=*ms_lpd3dDevice;
|
||||
IDirect3DDevice9Ex& rkD3DDev=*ms_lpd3dDevice;
|
||||
HRESULT hr=rkD3DDev.Reset(&rkD3DPP);
|
||||
if (FAILED(hr))
|
||||
return;
|
||||
@@ -96,7 +96,7 @@ void CGraphicDevice::DisableWebBrowserMode()
|
||||
|
||||
rkD3DPP=g_kD3DPP;
|
||||
|
||||
IDirect3DDevice9& rkD3DDev=*ms_lpd3dDevice;
|
||||
IDirect3DDevice9Ex& rkD3DDev=*ms_lpd3dDevice;
|
||||
HRESULT hr=rkD3DDev.Reset(&rkD3DPP);
|
||||
if (FAILED(hr))
|
||||
return;
|
||||
@@ -117,7 +117,7 @@ bool CGraphicDevice::ResizeBackBuffer(UINT uWidth, UINT uHeight)
|
||||
rkD3DPP.BackBufferWidth=uWidth;
|
||||
rkD3DPP.BackBufferHeight=uHeight;
|
||||
|
||||
IDirect3DDevice9& rkD3DDev=*ms_lpd3dDevice;
|
||||
IDirect3DDevice9Ex& rkD3DDev=*ms_lpd3dDevice;
|
||||
|
||||
HRESULT hr=rkD3DDev.Reset(&rkD3DPP);
|
||||
if (FAILED(hr))
|
||||
@@ -310,7 +310,7 @@ int CGraphicDevice::Create(HWND hWnd, int iHres, int iVres, bool Windowed, int /
|
||||
|
||||
ms_hWnd = hWnd;
|
||||
ms_hDC = GetDC(hWnd);
|
||||
ms_lpd3d = Direct3DCreate9(D3D_SDK_VERSION);
|
||||
Direct3DCreate9Ex(D3D_SDK_VERSION, &ms_lpd3d);
|
||||
|
||||
if (!ms_lpd3d)
|
||||
return CREATE_NO_DIRECTX;
|
||||
@@ -411,12 +411,24 @@ RETRY:
|
||||
ms_d3dPresentParameter.MultiSampleQuality = 0;
|
||||
}
|
||||
|
||||
if (FAILED(ms_hLastResult = ms_lpd3d->CreateDevice(
|
||||
D3DDISPLAYMODEEX displayModeEx;
|
||||
ZeroMemory(&displayModeEx, sizeof(displayModeEx));
|
||||
displayModeEx.Size = sizeof(D3DDISPLAYMODEEX);
|
||||
displayModeEx.Width = iHres;
|
||||
displayModeEx.Height = iVres;
|
||||
displayModeEx.RefreshRate = iReflashRate;
|
||||
displayModeEx.Format = d3dDisplayMode.Format;
|
||||
displayModeEx.ScanLineOrdering = D3DSCANLINEORDERING_PROGRESSIVE;
|
||||
|
||||
D3DDISPLAYMODEEX* pDisplayMode = Windowed ? NULL : &displayModeEx;
|
||||
|
||||
if (FAILED(ms_hLastResult = ms_lpd3d->CreateDeviceEx(
|
||||
D3DADAPTER_DEFAULT,
|
||||
D3DDEVTYPE_HAL,
|
||||
hWnd,
|
||||
ms_dwD3DBehavior,
|
||||
&ms_d3dPresentParameter,
|
||||
pDisplayMode,
|
||||
&ms_lpd3dDevice)))
|
||||
{
|
||||
switch (ms_hLastResult)
|
||||
@@ -598,7 +610,7 @@ bool CGraphicDevice::__CreatePDTVertexBufferList()
|
||||
sizeof(TPDTVertex)*PDT_VERTEX_NUM,
|
||||
D3DUSAGE_DYNAMIC|D3DUSAGE_WRITEONLY,
|
||||
D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1,
|
||||
D3DPOOL_SYSTEMMEM,
|
||||
D3DPOOL_DEFAULT,
|
||||
&ms_alpd3dPDTVB[i], nullptr)
|
||||
))
|
||||
return false;
|
||||
@@ -626,19 +638,20 @@ bool CGraphicDevice::__CreateDefaultIndexBuffer(UINT eDefIB, UINT uIdxCount, con
|
||||
{
|
||||
assert(ms_alpd3dDefIB[eDefIB]==NULL);
|
||||
|
||||
if (FAILED(
|
||||
ms_lpd3dDevice->CreateIndexBuffer(
|
||||
sizeof(WORD)*uIdxCount,
|
||||
D3DUSAGE_WRITEONLY,
|
||||
D3DFMT_INDEX16,
|
||||
D3DPOOL_MANAGED,
|
||||
&ms_alpd3dDefIB[eDefIB], nullptr)
|
||||
)) return false;
|
||||
auto hr = ms_lpd3dDevice->CreateIndexBuffer(
|
||||
sizeof(WORD)*uIdxCount,
|
||||
D3DUSAGE_WRITEONLY,
|
||||
D3DFMT_INDEX16,
|
||||
D3DPOOL_DEFAULT,
|
||||
&ms_alpd3dDefIB[eDefIB], nullptr
|
||||
);
|
||||
if (FAILED(hr))
|
||||
return false;
|
||||
|
||||
WORD* dstIndices;
|
||||
if (FAILED(
|
||||
ms_alpd3dDefIB[eDefIB]->Lock(0, 0, (void**)&dstIndices, 0)
|
||||
)) return false;
|
||||
hr = ms_alpd3dDefIB[eDefIB]->Lock(0, 0, (void**)&dstIndices, 0);
|
||||
if (FAILED(hr))
|
||||
return false;
|
||||
|
||||
memcpy(dstIndices, c_awIndices, sizeof(WORD)*uIdxCount);
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ bool CGraphicImageTexture::CreateDeviceObjects()
|
||||
if (m_stFileName.empty())
|
||||
{
|
||||
// 폰트 텍스쳐
|
||||
if (FAILED(ms_lpd3dDevice->CreateTexture(m_width, m_height, 1, 0, m_d3dFmt, D3DPOOL_MANAGED, &m_lpd3dTexture, nullptr)))
|
||||
if (FAILED(ms_lpd3dDevice->CreateTexture(m_width, m_height, 1, D3DUSAGE_DYNAMIC, m_d3dFmt, D3DPOOL_DEFAULT, &m_lpd3dTexture, nullptr)))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
@@ -96,7 +96,7 @@ void CGraphicImageTexture::CreateFromTexturePointer(const CGraphicTexture* c_pSr
|
||||
|
||||
bool CGraphicImageTexture::CreateFromDDSTexture(UINT bufSize, const void* c_pvBuf)
|
||||
{
|
||||
if (FAILED(DirectX::CreateDDSTextureFromMemoryEx(ms_lpd3dDevice, reinterpret_cast<const uint8_t*>(c_pvBuf), bufSize, 0, D3DPOOL_MANAGED, false, &m_lpd3dTexture)))
|
||||
if (FAILED(DirectX::CreateDDSTextureFromMemoryEx(ms_lpd3dDevice, reinterpret_cast<const uint8_t*>(c_pvBuf), bufSize, 0, D3DPOOL_DEFAULT, false, &m_lpd3dTexture)))
|
||||
return false;
|
||||
|
||||
D3DSURFACE_DESC desc;
|
||||
@@ -113,7 +113,7 @@ bool CGraphicImageTexture::CreateFromSTB(UINT bufSize, const void* c_pvBuf)
|
||||
unsigned char* data = stbi_load_from_memory((stbi_uc*)c_pvBuf, bufSize, &width, &height, &channels, 4); // force RGBA
|
||||
if (data) {
|
||||
LPDIRECT3DTEXTURE9 texture;
|
||||
if (SUCCEEDED(ms_lpd3dDevice->CreateTexture(width, height, 1, 0, channels == 4 ? D3DFMT_A8R8G8B8 : D3DFMT_X8R8G8B8, D3DPOOL_MANAGED, &texture, nullptr))) {
|
||||
if (SUCCEEDED(ms_lpd3dDevice->CreateTexture(width, height, 1, 0, channels == 4 ? D3DFMT_A8R8G8B8 : D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, &texture, nullptr))) {
|
||||
D3DLOCKED_RECT rect;
|
||||
if (SUCCEEDED(texture->LockRect(0, &rect, nullptr, 0))) {
|
||||
uint8_t* dstData = (uint8_t*)rect.pBits;
|
||||
@@ -153,7 +153,7 @@ bool CGraphicImageTexture::CreateFromMemoryFile(UINT bufSize, const void * c_pvB
|
||||
|
||||
D3DXIMAGE_INFO imageInfo;
|
||||
if (FAILED(D3DXCreateTextureFromFileInMemoryEx(ms_lpd3dDevice, c_pvBuf, bufSize
|
||||
, D3DX_DEFAULT_NONPOW2, D3DX_DEFAULT_NONPOW2, D3DX_DEFAULT, 0, d3dFmt, D3DPOOL_MANAGED
|
||||
, D3DX_DEFAULT_NONPOW2, D3DX_DEFAULT_NONPOW2, D3DX_DEFAULT, 0, d3dFmt, D3DPOOL_DEFAULT
|
||||
, dwFilter, dwFilter, 0xffff00ff, &imageInfo, NULL, &m_lpd3dTexture))) {
|
||||
TraceError("CreateFromMemoryFile: Cannot create texture");
|
||||
return false;
|
||||
@@ -188,7 +188,7 @@ bool CGraphicImageTexture::CreateFromMemoryFile(UINT bufSize, const void * c_pvB
|
||||
|
||||
if (SUCCEEDED(D3DXCreateTexture(ms_lpd3dDevice
|
||||
, imageInfo.Width >> uTexBias, imageInfo.Height >> uTexBias
|
||||
, imageInfo.MipLevels, 0, format, D3DPOOL_MANAGED, &pkTexDst))) {
|
||||
, imageInfo.MipLevels, 0, format, D3DPOOL_DEFAULT, &pkTexDst))) {
|
||||
m_lpd3dTexture = pkTexDst;
|
||||
for (int i = 0; i < imageInfo.MipLevels; ++i) {
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ bool CGraphicIndexBuffer::CreateDeviceObjects()
|
||||
m_dwBufferSize,
|
||||
D3DUSAGE_WRITEONLY,
|
||||
m_d3dFmt,
|
||||
D3DPOOL_MANAGED,
|
||||
D3DPOOL_DEFAULT,
|
||||
&m_lpd3dIdxBuf,
|
||||
NULL)
|
||||
))
|
||||
|
||||
@@ -630,7 +630,7 @@ BOOL CScreen::IsLostDevice()
|
||||
if (!ms_lpd3dDevice)
|
||||
return TRUE;
|
||||
|
||||
IDirect3DDevice9 & rkD3DDev = *ms_lpd3dDevice;
|
||||
IDirect3DDevice9Ex & rkD3DDev = *ms_lpd3dDevice;
|
||||
HRESULT hrTestCooperativeLevel = rkD3DDev.TestCooperativeLevel();
|
||||
if (FAILED(hrTestCooperativeLevel))
|
||||
return TRUE;
|
||||
@@ -643,8 +643,8 @@ BOOL CScreen::RestoreDevice()
|
||||
if (!ms_lpd3dDevice)
|
||||
return FALSE;
|
||||
|
||||
IDirect3D9& rkD3D = *ms_lpd3d;
|
||||
IDirect3DDevice9& rkD3DDev = *ms_lpd3dDevice;
|
||||
IDirect3D9Ex& rkD3D = *ms_lpd3d;
|
||||
IDirect3DDevice9Ex& rkD3DDev = *ms_lpd3dDevice;
|
||||
D3DPRESENT_PARAMETERS& rkD3DPP = ms_d3dPresentParameter;
|
||||
|
||||
HRESULT hrTestCooperativeLevel = rkD3DDev.TestCooperativeLevel();
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
bool CStaticVertexBuffer::Create(int vtxCount, DWORD fvf, bool /*isManaged*/)
|
||||
{
|
||||
// 무조건 MANAGED 모드
|
||||
return CGraphicVertexBuffer::Create(vtxCount, fvf, D3DUSAGE_WRITEONLY, D3DPOOL_MANAGED);
|
||||
// DirectX 9Ex: Use DEFAULT pool instead of MANAGED
|
||||
return CGraphicVertexBuffer::Create(vtxCount, fvf, D3DUSAGE_WRITEONLY, D3DPOOL_DEFAULT);
|
||||
}
|
||||
|
||||
CStaticVertexBuffer::CStaticVertexBuffer()
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "NetStream.h"
|
||||
//#include "eterCrypt.h"
|
||||
#include <iomanip>
|
||||
#include <sstream>
|
||||
|
||||
#ifndef _IMPROVED_PACKET_ENCRYPTION_
|
||||
#include "EterBase/tea.h"
|
||||
|
||||
@@ -51,7 +51,7 @@ void CStateManager::EndScene()
|
||||
m_bScene = false;
|
||||
}
|
||||
|
||||
CStateManager::CStateManager(LPDIRECT3DDEVICE9 lpDevice) : m_lpD3DDev(NULL)
|
||||
CStateManager::CStateManager(LPDIRECT3DDEVICE9EX lpDevice) : m_lpD3DDev(NULL)
|
||||
{
|
||||
m_bScene = false;
|
||||
m_dwBestMinFilter = D3DTEXF_ANISOTROPIC;
|
||||
@@ -77,7 +77,7 @@ CStateManager::~CStateManager()
|
||||
}
|
||||
}
|
||||
|
||||
void CStateManager::SetDevice(LPDIRECT3DDEVICE9 lpDevice)
|
||||
void CStateManager::SetDevice(LPDIRECT3DDEVICE9EX lpDevice)
|
||||
{
|
||||
StateManager_Assert(lpDevice);
|
||||
lpDevice->AddRef();
|
||||
@@ -441,7 +441,7 @@ void CStateManager::StateManager_Apply()
|
||||
m_CurrentState = m_CurrentState_Copy;
|
||||
}
|
||||
|
||||
LPDIRECT3DDEVICE9 CStateManager::GetDevice()
|
||||
LPDIRECT3DDEVICE9EX CStateManager::GetDevice()
|
||||
{
|
||||
return m_lpD3DDev;
|
||||
}
|
||||
|
||||
@@ -226,7 +226,7 @@ public:
|
||||
class CStateManager : public CSingleton<CStateManager>
|
||||
{
|
||||
public:
|
||||
CStateManager(LPDIRECT3DDEVICE9 lpDevice);
|
||||
CStateManager(LPDIRECT3DDEVICE9EX lpDevice);
|
||||
virtual ~CStateManager();
|
||||
|
||||
void SetDefaultState();
|
||||
@@ -333,7 +333,7 @@ public:
|
||||
void StateManager_Capture();
|
||||
void StateManager_Apply();
|
||||
|
||||
LPDIRECT3DDEVICE9 GetDevice();
|
||||
LPDIRECT3DDEVICE9EX GetDevice();
|
||||
|
||||
#ifdef _DEBUG
|
||||
void ResetDrawCallCounter();
|
||||
@@ -341,7 +341,7 @@ public:
|
||||
#endif
|
||||
|
||||
private:
|
||||
void SetDevice(LPDIRECT3DDEVICE9 lpDevice);
|
||||
void SetDevice(LPDIRECT3DDEVICE9EX lpDevice);
|
||||
|
||||
private:
|
||||
|
||||
@@ -352,7 +352,7 @@ private:
|
||||
bool m_bScene;
|
||||
DWORD m_dwBestMinFilter;
|
||||
DWORD m_dwBestMagFilter;
|
||||
LPDIRECT3DDEVICE9 m_lpD3DDev;
|
||||
LPDIRECT3DDEVICE9EX m_lpD3DDev;
|
||||
|
||||
std::vector<DWORD> m_RenderStateStack[STATEMANAGER_MAX_RENDERSTATES];
|
||||
std::vector<DWORD> m_SamplerStateStack[STATEMANAGER_MAX_STAGES][STATEMANAGER_MAX_TEXTURESTATES];
|
||||
|
||||
Reference in New Issue
Block a user