-
Notifications
You must be signed in to change notification settings - Fork 1
ファイルの埋め込み
Reputeless edited this page Aug 30, 2016
·
1 revision
画像や音声、テキストファイルを .exe ファイルに埋め込み、プログラムでロードする方法を解説します。
プロジェクトのフォルダにある Resource.rc をメモ帳などのテキストエディタで開きます。
デフォルトでは以下のように記述されています。
// Siv3D Engine Rsource
64000 FILE "Engine/LogMessages.txt"
64080 FILE "Engine/Assets/engine_textures.s3a"
64600 FILE "Engine/Fonts/umeplus-p-gothic.zip"
64604 FILE "Engine/Fonts/mplus-1p-medium.zip"
64700 FILE "Engine/Shaders/D3D11/Sprite.vs"
64701 FILE "Engine/Shaders/D3D11/FullScreenTriangle.vs"
64702 FILE "Engine/Shaders/D3D11/DeferredMesh.vs"
64703 FILE "Engine/Shaders/D3D11/LightAccumulation.vs"
64704 FILE "Engine/Shaders/D3D11/ForwardMesh.vs"
64705 FILE "Engine/Shaders/D3D11/ForwardParticle.vs"
64706 FILE "Engine/Shaders/D3D11/ForwardLine3D.vs"
64800 FILE "Engine/Shaders/D3D11/Shape.ps"
64801 FILE "Engine/Shaders/D3D11/Shape_Stencil.ps"
64802 FILE "Engine/Shaders/D3D11/Sprite.ps"
64803 FILE "Engine/Shaders/D3D11/Sprite_Stencil.ps"
64804 FILE "Engine/Shaders/D3D11/Sprite_Font.ps"
64805 FILE "Engine/Shaders/D3D11/FullScreenTriangle1xMSAA.ps"
64806 FILE "Engine/Shaders/D3D11/FullScreenTriangle2xMSAA.ps"
64807 FILE "Engine/Shaders/D3D11/FullScreenTriangle4xMSAA.ps"
64808 FILE "Engine/Shaders/D3D11/FullScreenTriangle1xMSAA_Linear.ps"
64809 FILE "Engine/Shaders/D3D11/FullScreenTriangle2xMSAA_Linear.ps"
64810 FILE "Engine/Shaders/D3D11/FullScreenTriangle4xMSAA_Linear.ps"
64811 FILE "Engine/Shaders/D3D11/DeferredMesh.ps"
64812 FILE "Engine/Shaders/D3D11/DeferredMesh_Textured.ps"
64813 FILE "Engine/Shaders/D3D11/LightAccumulation_NoFog.ps"
64814 FILE "Engine/Shaders/D3D11/LightAccumulation_LinearFog.ps"
64815 FILE "Engine/Shaders/D3D11/LightAccumulation_ExponentialFog.ps"
64816 FILE "Engine/Shaders/D3D11/LightAccumulation_SquaredExponentialFog.ps"
64817 FILE "Engine/Shaders/D3D11/LightAccumulation_HeightFog.ps"
64818 FILE "Engine/Shaders/D3D11/DeferredFinalize.ps"
64819 FILE "Engine/Shaders/D3D11/ForwardMesh.ps"
64820 FILE "Engine/Shaders/D3D11/ForwardMesh_Textured.ps"
64821 FILE "Engine/Shaders/D3D11/ForwardLine3D.ps"
64822 FILE "Engine/Shaders/D3D11/FXAA_None.ps"
64823 FILE "Engine/Shaders/D3D11/FXAA_Q20.ps"
64824 FILE "Engine/Shaders/D3D11/FXAA_Q25.ps"
64825 FILE "Engine/Shaders/D3D11/FXAA_Q39.ps"
// Optional
64040 FILE "Engine/Objdetect/facePhoto.zip"
64041 FILE "Engine/Objdetect/faceAnime.zip"
64601 FILE "Engine/Fonts/mplus-1p-thin.zip"
64602 FILE "Engine/Fonts/mplus-1p-light.zip"
64603 FILE "Engine/Fonts/mplus-1p-regular.zip"
64605 FILE "Engine/Fonts/mplus-1p-bold.zip"
64606 FILE "Engine/Fonts/mplus-1p-heavy.zip"
64607 FILE "Engine/Fonts/mplus-1p-black.zip"
// App Resource
100 ICON "Icon.ico"
101 FILE "Engine/Splash.png"
//
で始まる行はコメントです。
それ以外の行は リソース番号 リソース区分 埋め込むファイルへのパス
の 3 項目で構成される 埋め込みリソース情報 が記述されています。新しくファイルを埋め込むには、埋め込みたいファイルについての記述を リソース番号(1000~63999) FILE "パス"
という形式でファイルの末尾に追加します。
例
1000 FILE "Example/Windmill.png"
1001 FILE "Example/風の丘.mp3"
// 数字は順番通りでなくてもよい
1100 FILE "Example/test.txt"
変更を保存し、プロジェクトをビルドすると、該当ファイルが .exe に埋め込まれます。
.exe に埋め込まれたファイルのパスは /リソース番号
になります。
例
# include <Siv3D.hpp>
void Main()
{
const Texture texture(L"/1000");
const Sound sound(L"/1001");
const String text = TextReader(L"/1100").readAll();
sound.play();
Println(text);
while (System::Update())
{
texture.draw();
}
}
FileSystem の関数に /リソース番号
のパスを指定した際の挙動です(上記の例のように /1000
が存在すると仮定します)
# include <Siv3D.hpp>
void Main()
{
Println(FileSystem::Exists(L"/1000")); // true
Println(FileSystem::Exists(L"/2000")); // false
Println(FileSystem::Exists(L"Example/Windmill.png")); // true
Println(FileSystem::IsResource(L"/1000")); // true
Println(FileSystem::IsResource(L"/2000")); // false
Println(FileSystem::IsResource(L"Example/Windmill.png")); // false
Println(FileSystem::IsFile(L"/1000")); // true
Println(FileSystem::IsFile(L"/2000")); // false
Println(FileSystem::IsFile(L"Example/Windmill.png")); // true
WaitKey();
}
- Siv3D の基本
- 図形を描く
- テクスチャを描く
- テキストを描く
- 文字列と数値の変換
- キーボード入力
- マウス入力
- サウンドの再生
- MIDI の再生
- ウィンドウと背景
- 図形のあたり判定
- 乱数
- ダイアログ
- ドラッグ & ドロップ
- アプリの状態
- テキストファイル
- INI, CSV, JSON
- バイナリファイル
- GUI
- アセット管理
- 画像編集
- Web カメラ
- マイク入力
- 経過時間の測定
- HSV カラー
- ファイルダウンロード
- 3D 描画
- 2D のレンダーステート
- 3D のレンダーステート
- パーティクル
- スクリーンショット
- アプリケーションの公開
- さらに学ぶには
- アプリランチャーを作ろう
- 音楽プレイヤーを作ろう
- 横スクロールゲームを作ろう
- ドット絵エディタを作ろう
- シーン遷移をサポートする SceneManager の使い方
- Siv3D ミニサンプル集
- タスクシステムを使う
- スケッチ
- 画像ビューアー
- オーディオスペクトラム
- マイク入力スペクトラム
- 文字色の反転
- 天気予報
- ドットお絵かき
- 15パズル
- ブロックくずし
- 時計
- 音楽プレイヤー
- ピアノ
- ライフゲーム
- シーン管理
- 地球
- 3Dシーン
- 3D交差判定
- Wooden Mirror
- シューティングゲーム
- Image to Polygon
- Sketch to Polygon
- 軌跡
- Plot3D
- テンポとピッチの変更
- 長方形の影
- Twitterクライアント
- Polygon to Mesh
- 3Dテキスト
- アプリ終了の確認
- 地形の生成
- アーカイブファイル
- GUIのアニメーション
- Aero Glassエフェクト
- Glitch
- リンクテキスト
- 付箋
- シーン切り替え(シルエット)
- MIDIシーケンサー
- 数つなぎ
- 画面を揺らす
- 対称定規
- aobench
- MIDIビジュアライザー
- 電卓
- 手書き文字認識
- 顔検出
- 音声合成
- Image to PhysicsBody