<!DOCUMENT HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<link rel="stylesheet" type="text/css" href="../../default.css">
<title>SDLの導入</title>
</head>

<body>
<!--#include virtual="../../menu2.html"-->
<div class="contents">
	<h4>contents</h4>
	<ol>
		<li><a href="#intro">SDLとは</a></li>
		<li><a href="#usage">導入方法</a></li>
		<li><a href="#link">リンク</a></li>
	</ol>
</div>

<h1>SDLの導入</h1>
<div>
SDL導入法。
</div>

<h2 id="intro">SDLとは</h2>
<div>
	<p><a href="http://www.libsdl.org/">Simple DirectMedia Layer</a>。
		クロスプラットホームのマルチメディアライブラリです。
		Windows, Linux, BeOS, MacOSで動作し、その他のUNIX系OSでも一部使用できます。
		ライセンス形態は、<a href="http://www.gnu.org/copyleft/lgpl.html">LGPL</a>です。</p>
	<ul>
		<li>独自の2D、もしくはOpenGLを利用するグラフィック</li>
		<li>Wave、CD-DAの再生</li>
		<li>プラットホームを吸収するイベントハンドリング</li>
		<li>ジョイスティック</li>
		<li>マルチスレッド、排他処理機構、タイマ</li>
	</ul>
	<p>などが使用できます。
		OpenGLも併用でき、glutの代わりに使えます。
		結局は使うことになるであろうマルチスレッドやタイマがあるので、glutよりも使い勝手がいいでしょう。</p>
</div>

<h2 id="usage">導入方法</h2>
<div>
	<h3>ライブラリのダウンロード</h3>
	<div>
		<p>2002年10月現在、安定版は<a href="http://www.libsdl.org/download-1.2.php">version 1.2.5</a>です。
			ソースをダウンロードして自分でコンパイルするか、Development Runtimeをダウンロードしましょう。</p>
		<p>また、SDLにはたくさんの<a href="http://www.libsdl.org/libraries.php">拡張ライブラリ</a>があります。
			以下のものは、その中でもデファクトスタンダードであろうと思われるライブラリです。
			こちらも、Development Runtimeを使うのが簡単でしょう。</p>
		<ul>
			<li><a href="http://www.libsdl.org/projects/SDL_image/index.html">SDL_image</a>
				各種フォーマットの画像ファイルの読み込み</li>
			<li><a href="http://www.libsdl.org/projects/SDL_mixer/index.html">SDL_mixer</a>
				各種フォーマットの音声ファイルの読み込み、多チャンネルでの再生</li>
			<li><a href="http://www.libsdl.org/projects/SDL_ttf/index.html">SDL_ttf</a>
				TrueType fontのレンダリング</li>
			<li><a href="http://www.libsdl.org/projects/SDL_net/index.html">SDL_net</a>
				TCP/UDPネットワーク</li>
		</dl>
	</div>
	<h3 id="usage_vc6"><a href="#usage_vc6">Visual C++ 6.0</a></h3>
	<div>
	<ol>
		<li>ヘッダファイルとライブラリファイルのパスを通す。<br>
			<code>#include &quot;SDL.h&quot;</code> が推奨されているらしい。
			自分は <code>#include &lt;SDL/SDL.h&gt;</code> のほうが好きなのだが……。</li>
		<li>「Win32 Application」のプロジェクトを作成。</li>
		<li>「プロジェクト＞設定＞C/C++＞コード生成」で、リリース時では<kbd>マルチスレッド(DLL)</kbd>、デバック時では<kbd>マルチスレッド(DLL, デバッグ)</kbd>を選ぶ。</li>
		<li>同「リンク＞インプット＞無視するライブラリ」に、リリース時では<kbd>libc</kbd>、デバック時では<kbd>libcd,msvcrt.lib</kbd>を追加する。</li>
		<li>同「オブジェクト/ライブラリモジュール」に、<kbd>SDL.lib SDLmain.lib</kbd>を追加する。この2つ以外は消去してもかまわない（結局SDLライブラリから使用されるが）。</li>
		<li>Win32だが、<code>int main(int argc, char* argv[])</code>をエントリポイントだと思ってコーディングする。int main()やvoid main()はだめ。</li>
	</ol>
	<p><del>exeを作るにもかかわらず、dll用の設定にするのがポイントです。</del>
		<kbd>マルチスレッド(DLL)</kbd>って、べつにDLL用の設定じゃあないですね……。
		スタティックリンクライブラリ SDLmain.lib とのからみだと思われます。
		ちなみに、mainはSDL_mainに#defineされます。</p>
	</div>
	<h3 id="usage_vc7"><a href="#usage_vc7">Visual C++ .NET</a></h3>
	<div>
	<ol>
		<li>ヘッダファイルとライブラリファイルのパスを通す。</li>
		<li>「Win32 プロジェクト＞Windows アプリケーション」のプロジェクトを作成。</li>
		<li>「プロジェクトのプロパティ＞C/C++＞コード生成＞ランタイムライブラリ」で、
			リリース時では<kbd>マルチスレッド DLL (/MD)</kbd>、
			デバック時では<kbd>マルチスレッド デバッグ DLL (/MDd)</kbd>を選ぶ。</li>
		<li>同「リンカ＞入力＞追加する依存関係」に、<kbd>SDL.lib SDLmain.lib</kbd>を追加する。</li>
		<li>デフォルトのスケルトンコードとリソースを削除。
			ただし、<code>#include &quot;stdafx.h&quot;</code> は残しておくこと。
			アイコンも残しておいてもいいかも。</li>
		<li><code>int main(int argc, char* argv[])</code>がエントリポイント。</li>
		<li>DLLランタイムを使う関係で、<code>msvci70.dll</code>に対する依存関係が生まれる。
			これは、VC.NET がインストールされていない環境には含まれていないので、アプリケーションを配布する場合は注意。</li>
	</ol>
	<p>1.2.4 以前は、XP+.NET にてデバッグ設定だと動かなかった記憶があるのですが、
		1.2.5 では正常に動作しています。</p>
	<p>2003/06/30 : hmura さんの<a href="http://www.kip.iis.toyama-u.ac.jp/~hmura/sdl/sdl.html">SDL compile on Visual C++.NET 2003</a>での記述を反映。</p>
	</div>
</div>

<h2 id="link">リンク</h2>
<div>
	<dl>
		<dt><a href="http://www.libsdl.org/">SDL 本家</a></dt>
			<dd>すべてはここに。</dd>
		<dt><a href="http://zinnia.dyndns.org/~cvsweb/sdldoc-jp/">sdldoc-jp</a></dt>
			<dd><a href="http://sdldoc.csn.ul.ie/">SDL Library Documentation</a>の日本語訳。</dd>
		<dt><a href="http://www2.jan.ne.jp/~zinnia/">SDL Watch @Coming Soon</a></dt>
			<dd>Zinniaさんによる、SDLの数少ない日本語ニュースサイト。[<a href="http://risky-safety.org/~zinnia/sdl/watch/cur/rent/">rent</a>]</dd>
	</dl>
</div>


<hr>
<!--#config timefmt="%Y/%m/%d"-->
<p align="right"><!--#echo var='LAST_MODIFIED'--></p>

</body>
</html>
