DXアーカイブの機能のみを使用されたいということでしょうか?
DXライブラリでDXアーカイブ機能のみを使用する場合に使用できる関数は以下の通りです
// ファイルを開く
int FileRead_open( const TCHAR *FilePath ) ;
// ファイルのサイズを取得する
LONGLONG FileRead_size( const TCHAR *FilePath ) ;
// ファイルを閉じる
int FileRead_close( int FileHandle ) ;
// ファイルポインタの読み込み位置を取得する
LONGLONG FileRead_tell( int FileHandle ) ;
// ファイルポインタの読み込み位置を変更する
int FileRead_seek( int FileHandle , LONGLONG Offset , int Origin ) ;
// ファイルからデータを読み込む
int FileRead_read( void *Buffer , int ReadSize , int FileHandle ) ;
// ファイルの読み込み位置が終端に達しているかどうかを取得する
int FileRead_eof( int FileHandle ) ;
// ファイルの文字コード形式を設定する( テキストファイル用 )
int FileRead_set_format( int FileHandle, int CharCodeFormat /* DX_CHARCODEFORMAT_SHIFTJIS 等 */ ) ;
// ファイルから文字列を読み出す
int FileRead_gets( TCHAR *Buffer , int BufferSize , int FileHandle ) ;
// ファイルから一文字読み出す
TCHAR FileRead_getc( int FileHandle ) ;
// ファイルから書式化されたデータを読み出す
int FileRead_scanf( int FileHandle , const TCHAR *Format , ... ) ;
↑これらはC言語の標準関数の fopen や fclose, fread, ftell などとほぼ同じ機能となっています
それ以外のDXアーカイブ専用の関数としては以下のものがあります
// 同名のDXアーカイブファイルとフォルダが存在した場合、
// どちらを優先させるかを設定する( 1:フォルダを優先 0:DXアーカイブファイルを優先( デフォルト ) )
int SetDXArchivePriority( int Priority ) ;
// 検索するDXアーカイブファイルの拡張子を設定する( Extension:拡張子名文字列 )
int SetDXArchiveExtension( const TCHAR *Extension ) ;
// DXアーカイブファイルの鍵文字列を設定する( KeyString:鍵文字列 )
int SetDXArchiveKeyString( const TCHAR *KeyString ) ;
DXライブラリの関数は基本的に DxLib_Init を呼ばないと機能しないようになっているのですが、
上記の関数達だけなら DxLib_Init を呼ばなくても機能するので、DXアーカイブの機能のみを
使用することは可能です
例えば Dドライブの直下に TextureData.dxa という、中に Test.dds というファイルのみ入っている
DXアーカイブファイルがあるとして、Test.dds を丸ごと全部メモリに読み込む処理は以下のようになります
#include "DxLib.h"
#include <malloc.h>
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int FileHandle ;
void *TextureImage ;
LONGLONG FileSize ;
// TextureData.dxa 内の Test.dds のサイズを取得する
FileSize = FileRead_size( "D:\\TextureData\\Test.dds" ) ;
// Test.dds を格納するためのメモリ領域を確保
TextureImage = malloc( FileSize ) ;
// TextureData.dxa 内の Test.dds を開く
FileHandle = FileRead_open( "D:\\TextureData\\Test.dds" ) ;
// Test.dds を確保したメモリに読み込み
FileRead_read( TextureImage, FileSize, FileHandle ) ;
// ファイルを閉じる
FileRead_close( FileHandle );
// 確保したメモリを開放
free( TextureImage ) ;
// ソフトの終了
return 0 ;
}
↑こちらだけでは単に ddsファイルをメモリに読み込んですぐ開放するだけなので、実際に DirectX9 で使用するには
読み込んだddsファイルを解析して IDirectTexture9 を作成した上で Lock してピクセルデータを転送する必要がありますが…