Files
m2dev-client-src/src/EterLib/GrpVertexShader.cpp
rtw1x1 a955c50744 Full Unicode patch with RTL Support & BiDi logic.
This commit is well documented, so no need to tell you my life story.

Full Unicode patch with RTL Support & BiDi logic.

Removed the legacy codePage, normalised to UTF8 (65001).

It also comes with:

CTRL + A : select text (highlighted)
CTRL + C : copy
CTRL + V : paste
CTRL + X : cut
CTRL + Y : redo
CTRL + Z : undo
2025-12-26 12:32:43 +00:00

78 lines
1.4 KiB
C++

#include "StdAfx.h"
#include "GrpVertexShader.h"
#include "GrpD3DXBuffer.h"
#include "StateManager.h"
#include <utf8.h>
CVertexShader::CVertexShader()
{
Initialize();
}
CVertexShader::~CVertexShader()
{
Destroy();
}
void CVertexShader::Initialize()
{
m_handle=0;
}
void CVertexShader::Destroy()
{
if (m_handle)
{
m_handle->Release();
m_handle = nullptr;
}
}
bool CVertexShader::CreateFromDiskFile(const char* c_szFileName, const DWORD* c_pdwVertexDecl)
{
Destroy();
if (!c_szFileName || !*c_szFileName)
return false;
// UTF-8 → UTF-16 for D3DX
std::wstring wFileName = Utf8ToWide(c_szFileName);
LPD3DXBUFFER lpd3dxShaderBuffer = nullptr;
LPD3DXBUFFER lpd3dxErrorBuffer = nullptr;
HRESULT hr = D3DXAssembleShaderFromFileW(
wFileName.c_str(),
nullptr,
nullptr,
0,
&lpd3dxShaderBuffer,
&lpd3dxErrorBuffer
);
if (FAILED(hr))
{
if (lpd3dxErrorBuffer)
{
const char* err = (const char*)lpd3dxErrorBuffer->GetBufferPointer();
TraceError("Vertex shader compile error: %s", err);
}
return false;
}
if (FAILED(
ms_lpd3dDevice->CreateVertexShader(
(const DWORD*)lpd3dxShaderBuffer->GetBufferPointer(),
&m_handle
)))
return false;
return true;
}
void CVertexShader::Set()
{
STATEMANAGER.SetVertexShader(m_handle);
}