我有一个用 HLSL 编写的着色器,我不希望用户能够访问它。有没有办法可以从一段内存中进行编译。问题是以下函数接受一个LPCSTR
以便使用.fx
文件作为输入:
HRESULT D3DXCreateEffectFromFile(
_In_ LPDIRECT3DDEVICE9 pDevice,
_In_ LPCTSTR pSrcFile,
_In_ const D3DXMACRO *pDefines,
_In_ LPD3DXINCLUDE pInclude,
_In_ DWORD Flags,
_In_ LPD3DXEFFECTPOOL pPool,
_Out_ LPD3DXEFFECT *ppEffect,
_Out_ LPD3DXBUFFER *ppCompilationErrors
);
我需要更多类似 void* 的东西,或者至少需要某种从内存块编译的方法。除了将数据保存到文件、编译和删除文件之外,有没有办法做到这一点?
wchar_t* shaderCode = L"//Poorly formatted shader code goes here";
我希望能够从上面的内存部分进行逐字编译。如何才能做到这一点?