2

ユーザーがアクセスできないようにしたい 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";

上記のメモリセクションから文字通りコンパイルできるようにしたい。これはどのように行うことができますか?

4

1 に答える 1

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

于 2013-07-23T20:57:44.563 に答える