C++ 硬编码HLSL着色器
我有一个用HLSL编写的着色器,我不希望用户能够访问它。是否有一种方法可以从一段内存中编译。问题在于,以下函数接受C++ 硬编码HLSL着色器,c++,graphics,directx,shader,hlsl,C++,Graphics,Directx,Shader,Hlsl,我有一个用HLSL编写的着色器,我不希望用户能够访问它。是否有一种方法可以从一段内存中编译。问题在于,以下函数接受LPCSTR,以便使用.fx文件作为输入: HRESULT D3DXCreateEffectFromFile( _In_ LPDIRECT3DDEVICE9 pDevice, _In_ LPCTSTR pSrcFile, _In_ const D3DXMACRO *pDefines, _In_ LPD3DXINCLUDE pInclude,
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";
我希望能够从上面的内存部分进行编译。如何做到这一点?是的。D3DXCreateEffect函数。根据ASCII或二进制效果描述创建效果 也可以从内存中签出D3DX10 compile
您的开发环境是什么?(Microsoft Visual Studio提供资源文件)是的,确实是Microsoft Visual Studio。我会调查的,谢谢!哇,我觉得自己很傻。非常感谢,这是完美的:)我会尽快接受它,问题是你回答得太快;)@JosephPla:请注意,这不会阻止用户访问着色器。他们总是可以从您的可执行文件中拉出它,尽管这显然需要更多的努力。但这比弄清楚你的包文件使用什么压缩并从中解码要省力得多。@NicolBolas好的,非常感谢。我一定会记住这一点。