/** * シェーダ解析 */ BOOL CShaderConverter::Export(const SShaderConfig& sConfig) { IZ_ASSERT(m_pCgEffect != NULL); VRETURN(m_Out.Open(sConfig.out)); // ファイルヘッダ { FILL_ZERO(&m_ShdHeader, sizeof(m_ShdHeader)); // TODO // magic // version m_ShdHeader.name.SetString(sConfig.name); m_ShdHeader.nameKey = m_ShdHeader.name.GetKeyValue(); m_ShdHeader.sizeHeader = sizeof(m_ShdHeader); } // ファイルヘッダ分空ける VRETURN(m_Out.Seek(sizeof(m_ShdHeader), izanagi::E_IO_STREAM_SEEK_POS_START)); ExportParameter(sConfig); ExportTexture(); ExportSampler(sConfig); ExportTechnique(); ExportPass(sConfig); ExportStringBuffer(); // Export program chunk's header. _ExportChunkHeader(m_Out, izanagi::shader::SHD_CHUNK_MAGIC_NUMBER_PROG); // プログラム開始位置 m_ShdHeader.posProgram = m_Out.GetCurPos(); ExportProgram(sConfig); // Export chunk's terminater. //_ExportChunkHeader(m_Out, izanagi::SHD_PROGRAM_CHUNK_TERMINATER); // ファイルサイズ取得 m_ShdHeader.sizeFile = m_Out.GetCurPos(); // 先頭に戻る VRETURN(m_Out.Seek(0, izanagi::E_IO_STREAM_SEEK_POS_START)); // ファイルヘッダ出力 m_Out.Write(&m_ShdHeader, 0, sizeof(m_ShdHeader)); m_Out.Finalize(); return TRUE; }
/** * シェーダ解析 */ BOOL CPostEffectConverter::Export(LPCSTR lpszOutFile) { IZ_ASSERT(m_pCgEffect != NULL); VRETURN(m_Out.Open(lpszOutFile)); // ファイルヘッダ { FILL_ZERO(&m_PesHeader, sizeof(m_PesHeader)); // TODO // magic // version m_PesHeader.sizeHeadaer = sizeof(m_PesHeader); } // ファイルヘッダ分空ける VRETURN(m_Out.Seek(sizeof(m_PesHeader), izanagi::E_IO_STREAM_SEEK_POS_START)); ExportParameter(); ExportTexture(); ExportSampler(); ExportTechnique(); ExportPass(); ExportUsedParamAndSamplerIdxByPass(); ExportStringBuffer(); // プログラム位置 m_PesHeader.posProgram = m_Out.GetCurPos(); ExportPSProgram(); ExportVSProgram(); // ファイルサイズ取得 m_PesHeader.sizeFile = m_Out.GetCurPos(); // 先頭に戻る VRETURN(m_Out.Seek(0, izanagi::E_IO_STREAM_SEEK_POS_START)); // ファイルヘッダ出力 m_Out.Write(&m_PesHeader, 0, sizeof(m_PesHeader)); m_Out.Finalize(); return TRUE; }