トップページgamedev
1001コメント310KB

鬱だ氏のう DirectX (Part 6)

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものでス02/10/07 01:00ID:???
DirectXについてマターリと技術情報交換&雑談するためのスレッド。
初心者用相談室では扱わないような少し高度な話題も受け持つ。

■旧スレ(プログラム板)
http://piza.2ch.net/tech/kako/966/966655286.html  (Part 1)
http://pc.2ch.net/test/read.cgi/tech/997101556/   (Part 2)
http://game.2ch.net/test/read.cgi/gamedev/1005119775/ (Part 3)
http://game.2ch.net/test/read.cgi/gamedev/1016276254/ (Part 4)

コピペスマソ
047347102/11/08 14:33ID:mLnGgDjl
>>472
勉強になりました ありがとー
0474アフォプロ ◆P6rBQWtf4. 02/11/08 17:15ID:???
>>473

スマヌ、嘘ついたカモ。
描画されるのはZ比較を無効とした場合。
0475まっつん02/11/08 18:43ID:???
こいつつかえねー
0476名前は開発中のものです。02/11/08 20:04ID:???
相変わらずここの板は雑魚キャラ満載だな
0477名前は開発中のものです。02/11/08 23:36ID:???
Windows版FF11はなぜあんなにも画面は汚く糞重いんだろ。
何の理由で重くなってるんだか想像つく人います?
それとも、案外これがSquareの実力なのかな。
0478名前は開発中のものです。02/11/08 23:40ID:???
CPUのウェイト大きいし、CPUでスキンとか頂点処理してたりして
HWでシェーダー使えるの少ないし…
0479名前は開発中のものです。02/11/09 01:52ID:WtQZiHWM
画面がさあ、ビクッ!ビクッ!ってなるの
0480DirectX9!!02/11/09 02:05ID:???
DirectX9!!
0481DirectX10!!02/11/09 02:33ID:???
DirectX10!!
0482名前は開発中のものです。02/11/09 06:07ID:???
X9まだかよ・・・マジでNV30あわせなのか?
0483名前は開発中のものです。02/11/09 06:21ID:???
ワンスキンアニメ付きX形式に吐き出せるツールどういうのがありますか?
学校でDirectX付属のMAX用プラグイン使ったのですがスキンアニメにはならない&テクスチャが貼られないという状態なのですが。

または、ここの方々はどうやってファイル作ってますか?
自前形式と言われたらそれまでなんですが。
0484名前は開発中のものです。02/11/09 10:27ID:???
>>477
スペック低いPCなんじゃないの?
アナタのPCがどんなハードウェア構成なのかわかんないから答えようがないよ。

# UOでBantheeチップ使ってると激しく重くなる、とかそういう相性かもしれないし。
0485名前は開発中のものです。02/11/09 12:37ID:IwFQStjk
DXUtilsのDxTexというツールでDDS形式のファイルを作りたいのですが、
何を読み込んでも画像が真っ黒に表示されてしまいます。

何か改善策は無いでしょうか。
0486名前は開発中のものです。02/11/09 13:19ID:???
>>485
明日秋葉原に来な。そしたら教えてやる。
0487名前は開発中のものです。02/11/09 13:35ID:???
>>477
エミュレータで動作してるとか?
048848502/11/09 13:44ID:IwFQStjk
貧乏学生です。
明日秋葉原へ旅立てば十中八九餓死します。
048947702/11/09 14:33ID:???
>>484,487
俺自身はGF4TiとP4 2G。遊べないことはないんだ。
他のゲームと比べてパフォーマンスでていない感じがすることかな。

0490名前は開発中のものです。02/11/09 15:21ID:???
>>485
"ペイント"で作成した.bmpを読み込んでもダメ?
049148502/11/09 15:29ID:IwFQStjk
ペイントで描いて読み込んでみましたがダメでした。

Dxdiagを起動して気づいたのですが、
AGPテクスチャアクセラレータが「なし」になっていました。
もしやこれが原因なのでしょうか?
0492名前は開発中のものです。02/11/09 15:33ID:???
ワンスキンアニメは駄目だねー
ウエィトつか、ボーンの入れ方がプリレンダと違うから データー転がってないし
モーションデーターもそろわないし

素人プログラマには、手の出しにくい領域だ。よってコンバーターも充実していない
MaxかLWしかないっしょ
0493名前は開発中のものです。02/11/09 15:42ID:???
Lwでも、ボーン関係のアレが駄目コレが駄目で
苦労しました。
0494名前は開発中のものです。02/11/09 16:15ID:???
ボーン関係をツールでデザインしてプログラムに取り込むパスって
どういうのがあるかねえ
Maxのエクスポータが王道か?
0495名前は開発中のものです。02/11/09 16:22ID:???
>>492
微妙に用語が変なのは気のせいか?
0496名前は開発中のものです。02/11/09 16:26ID:???
データー
0497名前は開発中のものです。02/11/09 16:43ID:???
ウエィト
0498名前は開発中のものです。02/11/09 17:06ID:???
デバイスをリセットした時にレンダーステートを復活させるには
自前で設定し直すしかなんですか?
0499名前は開発中のものです。02/11/09 17:34ID:???
おおまかなステートについては再設定のルーチンを作ってそれを呼んでるよ
細かいのは次の描画時に設定されるからどうでもいい
050049802/11/09 17:54ID:???
>>499
リセット掛けるとStateBlock消滅するし、一つ一つGetRenderStateするのもなぁと思い、
ステートにもMANAGED見たいな機能がないかなぁと思って聞いてみました。
自前で用意するとなるとそれなりに頭を使わなきゃいけないので。
0501名前は開発中のものです。02/11/09 18:14ID:???
保守
050248302/11/09 21:31ID:???
やっぱりワンスキンやらないほうが良いのか・・・。
ツール高い&やりにくい、自作モーションエディタ作るよりは楽かなと思ったけど逆にややこしそうですね。
パーツ毎に呼び出してmikotoあたりでモーション呼び出したほうが楽かな。
返答ありがとうございました。
0503名前は開発中のものです。02/11/09 21:44ID:???
ゲーム向に適切なレベルのモーションエディタが
ないってことだな。
頑張ってつくってくれ>>483
0504名前は開発中のものです。02/11/10 00:11ID:???
>>500
StateBlockはどこかで一度は設定しないといけないんだから、ロストしたら
もう一度設定する関数を呼べば良いだけ。
050549802/11/10 00:48ID:???
>>504
リセット前にCreateStateBlockでガポッっと取って
リセット後にApplyStateBlockでドバッと適用出来ないかなと考えた訳でして。
それに代わる楽な方法はないものかと聞いてみた次第です。
あまりリセットを考えた作りにしたくないなぁと・・・
ある程度のことはPOOL MANAGEDでなんとかなりそうだし。
出来ないのであればそれしかないんですけどね。
0506名前は開発中のものです。02/11/10 01:00ID:???
つか、レンダーステート設定ってどうやるよ?
フラグまとめた構造体でも作って それをvector配列にでもstackしておいて
リセット時は再設定とか?

物体毎に直書きは駄目だろ?
0507名前は開発中のものです。02/11/10 01:02ID:???
あ、そんな必要ないか「飛んだぞゴルァ」フラグを作って全オブジェクト描画前にそれをチェックか?
0508名前は開発中のものです。02/11/10 07:47ID:???
あげん
0509名前は開発中のものです。02/11/10 11:28ID:???
>>502
 「高い」だけなら、MilkShape3Dって言う安いツールがある(20ドル)。他は
解決しないけどな。30日間は無料で使えるから、試してみる?
0510名前は開発中のものです。02/11/10 11:29ID:St+9OfWz
ん?
レンダリングステータスなんて物体毎に変更でしょ?
俺的にこんなものの変更に速度気にしてたら何も作れないと結論つけましたが
あと速度のことではテクスチャフリップも俺的に気にしないつーすたんすなんすけど。
だからステータスは全体で使う奴を憶えとくだけだけど
051150902/11/10 11:50ID:???
(ほぼ)連続カキコ、スマソ。MilkShapeの続き

・頂点数が多いものはインポートできない(1000くらいはOK。限界は不明)。という制限が
あるので、レジストする前に無料期間で確認しよう。
・ワンスキンの場合、ウェイトは0%か100%しか設定されないみたい。これがX用の
エクスポートプラグインの仕様なのか、アプリ自体の限界なのかは不明。
・メタセコでモデルを作るなら、メタセコでは「3DS形式で保存」し、インポートすると
テクスチャ座標が反映されて便利。オブジェクト分割の情報もグループとして反映
される。オブジェクトの名前は半角英数にしよう。

>>507
 Reset呼び出し直後に必ずステート設定しなおしのほうが、シンプルで
良いと思われ。
0512名前は開発中のものです。02/11/10 12:40ID:St+9OfWz
そら、逆にむだちゃう?
と、思ったら全くかわらないや速度。
毎ふれーむ設定採用決定。
だれかおそくなったひといる?
0513名前は開発中のものです。02/11/10 14:14ID:???
毎フレーム再設定にしてるよ
アフォなドライバのデバッグには付き合いたくないし
0514名前は開発中のものです。02/11/10 14:45ID:???
ウインドウが全部隠れた状態でレンダリングするとカチコチ重くなるんですけど、
何でですかね?
051551102/11/10 15:00ID:???
>>512
 俺へのレス?違ってたらスルーして。
 毎フレーム呼び出すのはPresent。俺が書いたのはReset。字面が似ているから
読み違えたかもしれないが。
 Resetの後は、どうせパフォーマンスが落ちてるんで、使う使わないに関係なく、
全てのステータスを設定しなおしてる。理由は>>513と同じ。
0516がんばります02/11/10 20:24ID:Ojm0qAse
超初心者向けのDirectX講座をやってるHP知りませんか?
一応自分で一通り探したのですが、リンク切れとか
説明不足とかが多かったので、よろしくお願いします。
0517名前は開発中のものです。02/11/10 20:37ID:p3Uh3pyT
511さんすいません。その通りでまちがえました。
0518名前は開発中のものです。02/11/10 20:49ID:???
>>516
すいません。知らないです。
0519がんばります02/11/10 21:26ID:???
>>518
そうですか。わざわざレスありがとうございました。
もっと探してみます。
0520名前は開発中のものです。02/11/10 22:31ID:???
がんばりかたが間違っています。がんばってヘルプを読みましょう。
0521がんばります02/11/10 23:24ID:???
>>520
うるせーよボケが。下手に出てれば偉そうに
黙ってURL貼れよ。んでもって氏ねカス
0522がんばります02/11/10 23:45ID:???
 ↑
偽者ですね。
そんなこと言わないで下さいよ。
0523名前は開発中のものです。02/11/11 00:46ID:FUv1TWBV
すいません、もう一度質問させてください。
ウインドウモードで動かしてるんですが、描画領域が他のウインドウなどで
完全に隠れると、CPU使用率が100%になりカーソルまでロックされてしいます。
SDKのサンプルはそんな現象が起きないので自分の作ったプログラムに
問題があると思うのですが、サンプルと見比べても原因がまったく分かりません。
ちなみに描画ルーチンではClearとPresent(NULL...しかやっていません。
何か致命的なことを忘れているのでしょうか?
教えてください。(;´Д`)
0524名前は開発中のものです。02/11/11 00:51ID:???
ウインドウプロージャのメッセージの受け方を確認しる
0525名前は開発中のものです。02/11/11 00:53ID:???
ソースを見ないで間違いを指摘するのは難しい。
0526名前は開発中のものです。02/11/11 01:03ID:8CEKfzu0
defwinproc
052752302/11/11 01:18ID:???
何処が原因かまったく分からないので
ソースの全体を乗せるわけにもいかず…
とりあえず大まかな説明を。
PeekMessageして空の間レンダリングするようにしています。
初期化もWM_CREATEでは無くCreateWindowでハンドルが帰ってきた段階で
やっていています。
ウインドウプロージャはWM_SIZEとWM_DESTROYくらいしか引っ掛けていません。
directxを呼んでいるのは一つのスレッドだけです。
レンダリングの部分は
d3d_dev->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
 D3DCOLOR_COLORVALUE(.5, 0, 0, 1), .0f, 0.0f);
d3d_dev->Present(NULL, NULL, NULL, NULL);
削って実験してこれだけです。
この2行を取ると重くなりません。
こんなところなんですが…
0528名前は開発中のものです。02/11/11 01:23ID:???
WM_PAINT引っ掛けないと駄目よ
052952302/11/11 01:33ID:???
さらに、現時点で分かっていることは、
CreateDeviceでD3DCREATE_SOFTWARE_VERTEXPROCESSINGでは
大丈夫なようです。
D3DCREATE_HARDWARE_VERTEXPROCESSING
D3DCREATE_MIXED_VERTEXPROCESSING
だと重くなります。(描画領域が1ピクセルでも表示されていれば大丈夫)
SDKのサンプルでd3dapp.cppのCreateDeviceの部分にに
D3DCREATE_HARDWARE_VERTEXPROCESSING
D3DCREATE_MIXED_VERTEXPROCESSING
共に指定してやってみましたが同じような現象は起こりません。
ただし、d3dapp.cppを使っていないTutorialsのサンプルでは
現象が再現します。
自分のプログラムはd3dapp.cppは使っておらず、Tutorials見たいな簡単な
作りになっております。
しかし、d3dapp.cppがどうやってこれを回避してるのかさっぱりです。
D3DPRESENT_PARAMETERSまで一緒にして試しては見たんですが…
053052302/11/11 01:40ID:???
>>528
前はこんな感じで引っ掛けていました。
case WM_PAINT:
 win->OnPaint();
 ValidateRect(hWnd, NULL);
 return 0;
でもどうもぁゃιぃので今は取っています。
BeginPaintなんかも入れて試したんですが変わりませんでした。
一人で長々と書いてすいません。
0531名前は開発中のものです。02/11/11 01:47ID:???
defwinprocはしてるの?
プロージャの最後で
return defwinproc(hoge,hoge〜 よ?
053252302/11/11 01:57ID:???
>>531
DefWindowProcしてますよ〜
ウインドウ管理の部分は他のプログラムの奴の使い回しですから、
そこで重くなっているとは考えにくいです。
0533名前は開発中のものです。02/11/11 02:01ID:???
つか、 case WM_PAINTで受けてるのはいいけど
defWinproc通さないでreturn 0しちゃってるじゃん
0534名前は開発中のものです。02/11/11 02:02ID:???
あ、いまは外してるのか失礼
つか、他の部分はちゃんとdefwin〜通してからreturn してるか?
053552302/11/11 02:09ID:???
WM_PAINTの部分はヘルプのチュートリアルそのままパクッただけです。
元々は全てbreakでdefwin行くようにはしてたんですが。
0536名前は開発中のものです。02/11/11 02:29ID:???
DirectX8にでDirectInputを使用しようと思っているのですが、
原因が良く分からない部分でエラーとなってしまいます。

LPDIRECTINPUT8 pDInput;
LPDIRECTINPUTDEVICE8 pKeyboard;

HRESULT hr;

hr = DirectInput8Create(hinstance, DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&pDInput, NULL);
if(FAILED(hr)) return false;

hr = pDInput->CreateDevice(GUID_SysKeyboard, &pKeyboard, NULL);
if(FAILED(hr)) return false;

hr = pKeyboard->SetDataFormat(&c_dfDIKeyboard);
if(FAILED(hr)) return false; // ここでreturn false

このようにしてDirectInputを設定したのですが必ず最後の
SetDataFormat(&c_dfDIKeyboard)で失敗してしまいます。
普通に使用できているキーボードを使用しているのですが、
この場合どのような原因が考えられるのでしょうか?
どうかよろしくお願いします。
0537名前は開発中のものです。02/11/11 02:46ID:???
>>536
エラーの戻り値を調べてみた?
0538名前は開発中のものです。02/11/11 03:18ID:???
>>536
サンプルはちゃんと動いてるの
0539名前は開発中のものです。02/11/11 07:39ID:???
アイドル時に常に描画ループ回ってる構成かどうか
わからないが、
WaitMessageしてないとか
Sleep(0)入れてみるとかじゃない?
0540名前は開発中のものです。02/11/11 13:25ID:9PgLbw0e
DirectX8.1を使用しています。
IDirect3DDevice8::Clearを実行したところアプリケーションが
終了してしまうので色々試していたのですが、
例外を捕捉してみたところ、捕捉できてしまいました。
try {
 pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0, 0);
} catch(...) {
 // ここへくる
}
DirectXのドキュメントを見ても例外が起こるということは書いておらず
どこかで変な処理でもしてしまったのかと思うのですが
どのような場合に例外が起こるのでしょうか?
0541名前は開発中のものです。02/11/11 13:40ID:???
>>540
pD3DDeviceがNULLとか…
0542名前は開発中のものです。02/11/11 15:59ID:???
>>540
サンプルは動くのかサンプルは.
0543名前は開発中のものです。02/11/11 16:37ID:???
自分の手元に「まともに動くソース」があるのに
全然読まねー奴っているよな。
0544名前は開発中のものです。02/11/11 18:10ID:???
>>523,>>536,>>540には耳の痛い話だろうな。
0545名前は開発中のものです。02/11/11 18:33ID:Ooxx02A3
みなさん、Xファイルで読み込んだモデル同士の当たり判定ってどうやって取ってます?
0546名前は開発中のものです。02/11/11 19:55ID:???
>>545
まずアナタがどうやっているか(どうやろうとしているか)を書くのが筋でしょう
0547名前は開発中のものです。02/11/11 20:08ID:???
からむなよ。
054854702/11/11 20:11ID:???
スレ違いスマソ
0549名前は開発中のものです。02/11/11 21:27ID:???
>>545
境界球や境界箱だが。
0550まっつん02/11/12 03:24ID:???
炎を表現したいのですが、いい方法ありますか?
まっつんが考えたのは黄色の丸を描いたビットマップを上にいくにしたがってARGB指定で徐々に赤くしていきます。
また上にいけばいくほど中心からはなれればはなれるほどアルファ値を低くという法則にしたがって1万ほどの粒子を描画するというものですが、それらしくはなりますがいまいちです。
お知恵を拝借したいです。
0551まっつん02/11/12 03:30ID:3TBeukJM
あげ
0552名前は開発中のものです。02/11/12 03:33ID:???
>>550
( ´,_ゝ`)プッ
0553名前は開発中のものです。02/11/12 08:11ID:???
好きです。。。>>まっつんつん
結婚を前提にメルトモしましょう
0554名前は開発中のものです。02/11/12 08:46ID:???
>>まっつんが考えたのは
萌え
0555名前は開発中のものです。02/11/12 10:03ID:???
まっつん萌え同好会をここに開きます!
>>552がリーダー
0556名前は開発中のものです。02/11/12 10:29ID:???
>>550
手書きでうまくいくものなのか?
これでも使ってろ。
ttp://www.forest.impress.co.jp/article/2002/01/17/abom.html
0557名前は開発中のものです。02/11/12 10:58ID:???
>>550
バーテックス、ピクセルシェーダーが使える環境?
後、ただ色変えて重ねるだけじゃマンガの炎っぽくなるんじゃない?
しかし、昔試したアッドブレンドだと上手く炎の赤が出来なかった記憶が…

それに、その炎以外に、アルファ描画は無いの?
あるんだったら、少し細工しないと。
アルファ描画同士の整合性を取らないと駄目だと思うよ。
0558名前は開発中のものです。02/11/12 13:32ID:???
PC版のFF11買ってきてやってるんだけどエフェクト系は勉強になる感じ。やっぱ綺麗だわ。
しかしバックバッファの設定が512*512とか正方形しか無いのが
なんでなのかいまいちよくわからん。
フルシーンアンチのつもりなんだろうか。
0559名前は開発中のものです。02/11/12 13:35ID:???
テクスチャにして各種効果を使う予定なんでは?
0560名前は開発中のものです。02/11/12 13:45ID:???
過去ログで、
SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE);
透明On
SetRenderState(D3DRS_SRCBLEND,D3DBLEND_ONE);
黒抜き
SetRenderState(D3DRS_DESTBLEND,D3DBLEND_ONE);
加算
この後に描画するものはすべて加算になる。

っていうのを見たのですが、例えば画面左下にステータスを
表示させようと思い、黒の背景に青い文字でLIFEと書いてある
ビットマップを作成しました。それで上の方法でアルファブレンディング
をしたのですが、上書きされる裏地の画面の色が黒の場合は
綺麗に青い文字でLIFEと表示されるのですが、そうでない場合だと
文字の色が合成されて青ではなくなってしまいます。かといって
ブレンディング方法をONEじゃなくてZEROなどにすると
こんどはテクスチャの黒い部分も表示されてしまいます。
透過GIFのように、黒は表示されずに、それでいて青は上から
しっかりと上書きされるようにするにはどうすればいいのでしょうか?
0561名前は開発中のものです。02/11/12 14:00ID:???
文字の色が背景によって変化して欲しくないんだったら、
文字列のビットマップをα付きにするしかないと思うよ。
背景部分を完全透過にすれば、普通のαブレンドで行ける。
0562名前は開発中のものです。02/11/12 14:18ID:???
>>558
選択肢にないだけでレジストリを直接いじれば正方形以外にも変更可能

>>559
いい加減なことを言うな
0563名前は開発中のものです。02/11/12 14:20ID:???
>>560
アルファ値を直接変更しないで無駄な苦労をする理由は?
0564名前は開発中のものです。02/11/12 15:01ID:???
560です。
ビットマップをα付きにするというのは、画像を作成するときに
特別なツールが必要ということなのでしょうか。

それとも、テクスチャを読み込む関数
D3DXCreateTextureFromFileExの
ColorKeyで完全に透明にするいろというところに
(0,0,0)と入れればいいということなのでしょうか。

ちなみに普通のαブレンドというのは
lpD3DDEV->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
lpD3DDEV->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
のことですよね?
0565名前は開発中のものです。02/11/12 15:38ID:???
>>564
>特別なツールが必要ということなのでしょうか。
何故そういう発想になるのか理解しがたいが
最初からアルファ値があるデータを使う必要はない
読み込んだ後にテクスチャをロックして好きな値を設定すればいいだけ
0566名前は開発中のものです。02/11/12 15:55ID:???
半透明の減算ってどうやるの?
0567名前は開発中のものです。02/11/12 16:32ID:8nxZuYA/
SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
SetRenderState( D3DRS_DESTBLEND, D3DBLEND_ONE );
0568名前は開発中のものです。02/11/12 16:57ID:???
560です。
>読み込んだ後にテクスチャをロックして好きな値を設定すればいいだけ
これのやり方がわからないのです。

黒地に青の文字のテクスチャを作って
D3DXCreateTextureFromFileEx関数の完全透過色の値を
(0,0,255)と設定すると、青が抜かれて描画されます。
じゃあ、(0,0,0)と設定すればできるかなと思ったのですが
それもできず。
じゃあ、赤地に青文字で(255,0,0)とやれば青文字だけできるか
と思えば、それもできず。
うーん、参ってしまいました。
0569名前は開発中のものです。02/11/12 17:31ID:???
>>568
>これのやり方がわからないのです。
何故分からないのかが分かりません
ロックして自分で色を判断して該当するアルファ値を書き込むだけですが、
いったいどこが分からないのでしょうか?
0570名前は開発中のものです。02/11/12 17:37ID:???
わからないのは
・ロックして
・自分で色を判断して
・該当するアルファ値を書き込む
…のどれよ?
0571名前は開発中のものです。02/11/12 18:27ID:???
560です。
正直言うと、すべてです。
ロックするってのは頂点バッファに頂点情報の配列をmemcpyするときに
つかうあのロックのことでしょうか?

そもそもテクスチャのなかがどのようになっているのかもよく理解できて
いないのでありまして。

テクスチャの中にはそれぞれのピクセルごとにRGBAそれぞれ255ずつの
情報が格納されてて、そのなかのピクセルで黒(0,0,0)の
色情報のピクセルのαの値すべてを0に書き直せってことを
おっしゃってるのですか?

だとしたらそもそもの記述方法がわかりません。

便利な関数に頼りすぎてしまっているのかもしれません。
0572名前は開発中のものです。02/11/12 19:02ID:???
>>571
ヘルプ嫁
0573名前は開発中のものです。02/11/12 19:59ID:???
>>571
全部わからんならヘルプ読むことを勧める。
どれか一つなら解説にもたいした手間はかからんけど、
全部まとめて1から解説する気にならん。
■ このスレッドは過去ログ倉庫に格納されています