我有一个用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";
我希望能够从上面的内存部分进行逐字编译。怎么办呢?
答案 0 :(得分:3)
是。 D3DXCreateEffect函数。从ASCII或二进制效果描述创建效果。
http://msdn.microsoft.com/en-us/library/windows/desktop/bb172763(v=vs.85).aspx
也可以查看D3DX10CompileFromMemory ..
http://msdn.microsoft.com/en-us/library/windows/desktop/bb310587(v=vs.85).aspx