【发布时间】:2013-07-23 20:50:32
【问题描述】:
我有一个用 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";
我希望能够从上面的内存部分进行逐字编译。如何做到这一点?
【问题讨论】:
-
你的开发环境是什么? (Microsoft Visual Studio 提供资源文件)
-
是的,确实是微软视觉工作室。我要调查一下,谢谢!
标签: c++ graphics directx shader hlsl