トップページ⇒tech
1001コメント303KB

C#でDirectX9 初心者の館

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
Windows Longhorn でGDIに取って代わって標準になりそうなDirectX9ですが
GDIと違ってドキュメントも難解で何をすれば描画できるのかさっぱりさっぱりなライブラリです。
その上知っている人はレベルが高すぎて聞いても宇宙語でしす(泣
そんなDirectX9を将来に備えて勉強してみようというスレです。
Microsoftの掲示板
http://www.gdncom.jp/general/bbs/ShowForum.aspx?ForumID=29
SDKをダウンロードできるところ
http://www.microsoft.com/japan/msdn/directx/downloads.asp#CDasp#CD
0604デフォルトの名無しさんNGNG
DirectPlayのサンプルでパケを送信するとき
送信フラグに C++でいうところのDPNSEND_SYNCが設定されてますが

DPNSEND_SYNC=非同期 IDirectPlay8Peer::SendTo 要求を取り消す。

これだけではワカランです
非同期の要求を取り消す=同期させるってとこですか?
何に同期させるのか、同期と非同期が具体的にどう違うのか知ってる方いたら教えてくらはい
0605デフォルトの名無しさんNGNG
>>603
ありがとうございます。
一応インストールしてみました。
しかし、インストールして実行してみますと、なんか
「オブジェクト参照がオブジェクトインスタンスに設定されていません」
と意味がさっぱり分からない警告が出ます。
教えてくれたことの意味を取り違えていたらすいません。

何かいい本ないでしょうか・・・・。
実はは格闘ゲーム(2D)を作ってみたいのです。
参考になる書籍などを探しているのですが、なかなか見当たりません。

そもそもそういったものはDirectXを使わないでも実現できるものなのでしょうか?
DirectXの概念といいますか、何も分からないもので。
すいません。
0606デフォルトの名無しさんNGNG
ゲームスピードにもよりけりだろうけど多分GDI+じゃ無理だと思う
0607デフォルトの名無しさんNGNG
ADVでおなじみのクロスフェードをC#でしこしこ書いてみたんだけど、
そこそこ実用的な速度になったよ。
ただ、同じことをGDI+でやらせようとすると無茶苦茶遅い。
0608605NGNG
やっぱりDirectX使ったほうがよいのでしょうか。
使ったほうが、というより勉強した方がっていうのが正しいですけどw

でも・・・まだDirectXのサンプルのコンパイルが通りません・・うるうる(涙
昨日書き込んだ後からもずっと解決策を探していましたが、いまだにできません。

あと書籍のことですが、DirectX関連の本は全部3Dグラフィックばっかりで・・。
自分にはとても・・・・経験足りなくて分からないです。
2D関係のことを解説している本はあるでしょうか?
C++では見つけたような気もしますが、C#が見つからないです。
なにか書籍はあるでしょうか?
またまた申し訳ありませんが、よろしくお願いします。
0609デフォルトの名無しさんNGNG
>>508の本は2Dも一つの章を使って解説してるよ。オススメ。
0610608NGNG
え・・・英語っすか・・。
鳥肌が・・・・。
でもやってみないとこの先進めなさそうですから、がんばって読むしかなさそうですね。
ありがとうございました。

英語分からなくてもソースコードだけで十分という方もおられるようですが
それだけの技術はまだないっす・・・・・。
和訳ソフトを共同で読み進めていけるぐらいだと期待して、購入いたします。
0611デフォルトの名無しさんNGNG
また>>508の本薦めてるやつがいるな・・

どっか立ち読みで確認できる本屋の情報きぼん
0612デフォルトの名無しさんNGNG
つかUpしてくれ
0613デフォルトの名無しさんNGNG
あの本は良質だから、買って損はないよ。
気になるなら、amazon.comのほうのレビューを読んでみたらどうかな。
0614508NGNG
>>611
>>522

Kick Startシリーズが何冊かまとめて置いてあるから、すぐ見つけられると思う。
0615デフォルトの名無しさんNGNG
>>612
技術情報を得るのにケチるなよ。
0616デフォルトの名無しさんNGNG
べつに3Dだから2Dが使えないって事はないわけで・・・・・。
データをヴュー変換後のモノとして扱えばそれで2Dな訳だ。

Object Space
   ↓
World Space
   ↓          ← Model-View/World 変換
Camera Space
   ↓          ← Projection 変換
Homogeneous Space
   ↓          ← Viewport 変換
Window Clipping Space
  (これが実際のウィンドウでの座標になる)

Managed DirectX では
  CustomVertex . TransformedXXX となっているのがヴュー変換後の座標値。

CustomVertex.Transformed
CustomVertex.TransformedColored
CustomVertex.TransformedColoredTextured
CustomVertex.TransformedTextured
0617デフォルトの名無しさんNGNG
ヴ  ュ  ー  !  !
0618デフォルトの名無しさんNGNG
以前Cマガで、DirectXを使って2Dを扱うという特集があったので参考にした。

>ヴュー
ワラタ(失礼)
0619508NGNG
マルチBBXばんざ〜い
0620デフォルトの名無しさんNGNG
>>618
2003年10月号?
ほかにもあるなら教えてけれ
0621デフォルトの名無しさんNGNG
ttp://wanderer.jp/

ここの管理者が書いてる。
何度か特集があったんで立ち読みしてきたが、
これのために買うくらいなら、ヘルプ、サンプルを眺めたほうがよっぽどまし、なレベルだ。
0622デフォルトの名無しさんNGNG
>>620
2004/03 学校の図書館でコピーしたのを持ってるから間違いない。
0623618NGNG
>>620-622
結構前だった気がする。ということで検索したら2001年10月号だった。
ttp://www.cmagazine.jp/contents/200110.html
当時はEnter the 3D Programmingなんかも連載していて参考になった。
0624デフォルトの名無しさんNGNG
C#でForceFeedbackについて簡単に解説&サンプルが載ってるページってご存知でしょうか?
0625デフォルトの名無しさんNGNG
C#でDirectXを使う人も増えてきたみたいだし、
そろそろ和書も多くなっていいと思うけどなぁ。
0626デフォルトの名無しさんNGNG
SDK Update (Summer 2004)をインストールしたら
vs.netのDirectXウィザードで作られたアプリがビルドできなくなった。

名前空間がないとかどうたら言われて・・・
0627デフォルトの名無しさんNGNG
>>626
リリースノートくらい読めよ・・・
マルチくらい自覚しろよ・・・
0628デフォルトの名無しさんNGNG
45度見下ろしRPGで、地面をクリックすると緑の環ができる
やり方知ってる方います? スクリーン座標と地面座標の合せ方がちょと
わからないんですけど・・・。
0629デフォルトの名無しさんNGNG
緑の輪ってどこにどう表示されるんだ?
あと地面は平坦か?
ぐらいは書けよ…
0630デフォルトの名無しさんNGNG
シミュレーションRPGみたいなのかな?
0631デフォルトの名無しさんNGNG
プログラムをまともに書けない奴は、説明のための文章もまともに書けない。
0632デフォルトの名無しさんNGNG
>>631
こっちのほうが正しくねえか?

説明の文章をまともに書けない奴は、プログラムもまともに書けない。

0633610NGNG
すいません。
本当に助けてください・・・。
あれからずっとプロジェクトのところにDirectXという項目を追加させるための設定をいろいろ見ていましたが
やはりいまだにできません・・・。
ttp://www.plustarnet.com/aspil/Programming/
ttp://www.wander.jp/dotnet/index.html
を見ても解決できませんでした・・・・。
これ以上打つ手がなくて困っております・・・。
本当はあるんでしょうが、私の実力だともう限界です。
設定でなにやってんだ?って感じでしょうが
教えていただきたく存じます。
0634デフォルトの名無しさんNGNG
だからウィザードには追加されないと何度言えば(ry
0635デフォルトの名無しさんNGNG
・・・と思ったがもしかして参照の設定のことを言ってるのか?
0636デフォルトの名無しさんNGNG
>>631-362
どちらも可である可逆式ですか・・?

例えばあるメッシュが表示されてたとして
スクリーン座標(X,Y)にはそのメッシュが表示されているか調べるメソとかないんでしょうか
あるいはあるメッシュのスクリーン座標(X,Y)を返すメソとか
0637デフォルトの名無しさんNGNG
計算すればいいだけの話で、何が聞きたいのかさっぱり分からん。
0638デフォルトの名無しさんNGNG
>>634-635
あれ?ウィザードには追加されないんですか?
そうだったら・・・・なんて無駄な努力を・・・・。

申し訳ありません・・・・。
その参照の設定というのを教えてもらえませんでしょうか?
0639デフォルトの名無しさんNGNG
>>602-603
0640デフォルトの名無しさんNGNG
>>637
プ
0641デフォルトの名無しさんNGNG
>>633

>>480-481
とかじゃ駄目?
0642デフォルトの名無しさんNGNG
質問が下手な人は損だな。
0643デフォルトの名無しさんNGNG
>>610
最新版のSDKじゃなくて
一つ前のやつ(summer2003update)を入れればウィザードが出ますぜ。

購入した本がウィザードがあることを前提にして解説してたもんで
summer2003で学習してますが・・・
いつか最新のSDKに切り替えないとまずいんでしょうね。
0644デフォルトの名無しさんNGNG
 VertexBufferで四角のBOXを作成して、それを半透明にしたいと思っています。が・・・。
どこをどうやったら半透明になるのかサッパリわかりません。
半透明の設定はどこを設定すればいいのでしょうか?ご教授をお願いします。
0645デフォルトの名無しさんNGNG
>>644
マテリアルのアルファ値をさげればよろし
RenderState.AlphaBlendEnableもかえる
0646デフォルトの名無しさんNGNG
デバイス.RenderState.SourceBlend=Microsoft.DirectX.Direct3D.Blend.SourceAlpha;
デバイス.RenderState.DestinationBlend=Microsoft.DirectX.Direct3D.Blend.InvSourceAlpha;
デバイス.TextureState[0].AlphaOperation= Microsoft.DirectX.Direct3D.TextureOperation.Modulate;

ブレンド設定とか αオペレーションの設定も必要〜
と追加してみるてすと
0647デフォルトの名無しさんNGNG
へっぽこハミルトニアン
0648641NGNG
>>640
おお!
これは気が付きませんでした・・。
できました!!
ありがとうございます。
でもなぜ2004だとウィザードに追加されないのでしょうね。
やはり最新バージョンの2004で勉強していったほうがよいのでしょうか?
2004はどこか変わっていたりするんでしょうが、どっちの方がいいのかなと・・・。
0649644NGNG
返答ありがとうございます。

645
> マテリアルのアルファ値をさげればよろし
マテリアルのメソットにアルファの値を入力できるような項目がないのですが・・・。

0650645NGNG
>>649
material.Diffuse = System.Drawing.Color.FromArgb(128, 255, 0, 0)

とか
>>646をやればアルファ下げる必要はない気もする

だめならとか
device.RenderState.SourceBlend = Blend.SourceColor;
device.RenderState.DestinationBlend = Blend.InvSourceColor;
0651644NGNG
>>650
できました!!
 おかげさまで助かりました。ありがとうございます。

0652デフォルトの名無しさんNGNG
>>648
>でもなぜ2004だとウィザードに追加されないのでしょうね。
メンテが大変だからウィザードはもう作らない、サンプルexeからプロジェクトをインストールしてくださいな、
みたいなことがリリースノートに書いてあった気がしますが。
うろ覚え。
0653デフォルトの名無しさんNGNG
3Dゲームプログラミングに必要な数学って、
線形代数と微分積分位でしょうか?
空間図形は役に立ちますかね・・・。
0654デフォルトの名無しさんNGNG
ここに載ってるくらいが普通に分かっていればいいんじゃねえか?
ttp://yaneu.com/yaneurao/3dcg/
0655デフォルトの名無しさんNGNG
>>653
とりあえず線形代数だけわかっていれば問題ない。

微分積分はまじめに計算することはめったにない。
たいていコンピュータ向けの解法をつかう。
たとえば微分だと極小区間の単純な差分で求めたり
積分でもモンテカルロ積分をつかったり。
0656デフォルトの名無しさんNGNG
>>654-655
レスどうもです。
とりあえず、線形代数から学んでみようと思います。
0657デフォルトの名無しさんNGNG
3Dゲームプログラマーのための 数学 [基礎編]
が工学社からでるらしい。
0658デフォルトの名無しさんNGNG
>>657
http://www.esbooks.co.jp/books/detail?accd=31431355
これですね。
本屋さんでみかけたら覗いてみます。
0659デフォルトの名無しさんNGNG
その大川義邦って人、モーレツに内容の薄い本を書くよね。

DirectX9 3Dゲームプログラミングって本、アマゾンで
買っちゃったんだけど、インキネ技を上下巻にわけて
延々と解説してる。もうちょっと書く事あるんじゃないかと・・・・・・。
ステップ・バイ・ステップなのはいいんだけどさぁ。

俺はEric Lengyelの数学本だけでよいや。
シンプルにまとまってるし、そこそこ内容も詰め込まれてる。

ttp://www.amazon.co.jp/exec/obidos/ASIN/1584502770/qid=1095931465/sr=1-2/ref=sr_1_2_2/249-9283699-1129136
0660デフォルトの名無しさんNGNG
DirectXの国産書籍はろくなのがないね・・ 実際
0661デフォルトの名無しさんNGNG
>>659
その本、和訳版でてるよね。
ゲームプログラミングのための3Dグラフィックス数学
ってやつ。
ある程度数学わかってないと、初心者には難しい。
0662デフォルトの名無しさんNGNG
>>660
だよね。本屋でDirectXのコーナーを見てると鬱になる。

「俺がもっとましなヤツ書いてやるぜーっ!」って思う。
0663デフォルトの名無しさんNGNG
>>659
確かに、その人の本はどれもおすすめできないね。

特にこの本の第一章は、読んでると腹の底からモーレツにムカついてくる。
ttp://www.amazon.co.jp/exec/obidos/ASIN/4875934998
0664デフォルトの名無しさんNGNG
>>661
和訳版は一応でているが、
値段がべらぼうに高いのに、それに見合うだけの内容が全然ない。
紙面のマージンをべらぼうに取りすぎ。
0665デフォルトの名無しさんNGNG
主にアルゴリズム関連を知りたいのですが、
洋書のおすすめの書籍って何かありますかね?
Game Programming Gemシリーズが有名みたいですが。
0666デフォルトの名無しさんNGNG
gemsは別にアルゴリズムの本ではない。

純粋にアルゴリズムについて調べたければ、ゲームの枠に虎割れてはいけない。
数学とかソフトウェア工学とか、学会の論文を当たってみても、
金を斯けずともおいしいものはゴロゴロと転がっている。

0667デフォルトの名無しさんNGNG
Zバッファが上手く機能しません。

レンダ毎に
Device.RenderState.ZBufferEnable=true;
としてやっているのですが、
後から描画したオブジェクトがZ-Bufferを無視して
前面に描画されてしまいます。

考えられる問題点としてどのようなことが挙げられるのでしょうか。
宜しくお願いします。
0668デフォルトの名無しさんNGNG
マトリクス使ってないに100セペタ
0669デフォルトの名無しさんNGNG
べつに毎回ZBufferEnableを設定せんでも・・・・・・。

Device.Clear()でZBufferをクリアしてない。ってのは?
0670デフォルトの名無しさんNGNG
DirectXだと思ったら実はDirectorだったに32767ポリゴン。
0671667NGNG
667ですが未だ上手くいきません。

>668
マトリクスと使っていないというのは、
具体的にどういう状況を指しているのでしょうか。

>669
レンダ毎に
Device.Clear(ClearFlags.Target|ClearFlags.ZBuffer, Color.DarkBlue, 1, 0);
とやっております。引数に何らかの問題点が…?

>670
ポリゴン数が多すぎるのも原因になるのでしょうか。
およそ、400,000ポリゴン使っております。
0672デフォルトの名無しさんNGNG
>>671
その設定だったら問題なさそうなんだが

そいうときはもっと簡単な手法で確認すれ
例えばチュートリアルの三角形やら虎メッシュを2つ表示してみるとか

それでOKなら おまいさんのコードかグラボのどっちかがダメってことで
0673667NGNG
原因が分かりました。

Device.Transform.Projection
に設定するMatrix
Matrix.PerspectiveFovLH(fieldOfViewY, aspectRatio, znearPlane, zfarPlane)
の第3引数であるznearPlaneの値に問題があったようです。

問題解決以前はznearPlaneの値を0に設定していました。
この値を適度な正の数値に変更をしたら、
とりあえず見た目の問題は解決しました。
但し、この数値が小さいと、
局所的にZバッファが無視されるという現象が発生しました。

改めてこのあたりの数学的な意味を勉強し直す必要があるようです。

ご指示を頂きありがとうございました。
0674デフォルトの名無しさんNGNG
>>667
なるほど、プロジェクション変換で間違ってたんですね。
解決して良かった、良かった。

プロジェクション・マトリックスはワールド座標系を同次座標系に
変換するマトリックスです。
0675デフォルトの名無しさんNGNG
>プロジェクション・マトリックスはワールド座標系を同次座標系に
>変換するマトリックスです。

なに言ってんのあんた。
「ワールド座標系」と「同次座標系」は言葉のカテゴリが全然違うでしょ。

プロジェクション行列は、ビュー座標からプロジェクション座標への変換。
DirectXでは、どっちの座標も同次座標で表される。
0676デフォルトの名無しさんNGNG
ワールド座標XYZからスクリーン座標XYを知るにはどう計算すればいいんですか?
0677デフォルトの名無しさんNGNG
>>676
ワールド座標をベクトル(x,y,z,1)とするとこれに(ビュー行列x射影行列)
を掛けて求まったベクトル(x',y',z',w')の各成分をw'で割ると
スクリーン座標が求まる。っつーかこれがわかってないと
3Dプログラミングができないと思うんだけどどうしてんの?
0678デフォルトの名無しさんNGNG
Managed DirectXのDirectSoundってうんこ?
c:\Windows\media\start.wavで再生の練習しようとしたんだけど、
うまくいかなくてどーにもこうにもおかしいと思ったんです。
自分のコードが駄目かもと思ったがサンプルのbinにあるcsPlaySoundでも再生不可能。
ほかのファイルなら自分のもcsPlaySoundもOK。

調べていくとBufferTooSmallExceptionってのが発生してるらしい。
ということは極度に小さい長さのファイルは再生できないってこと???
そんなあほな…。C++じゃこんなことなかったのに。
というわけで折角C#に移行しようとしたのにいきなり出鼻を挫かれたという感じ。
0679デフォルトの名無しさんNGNG
ものすごくアホな質問ですいませんがDirectX9cをダウンロードできませんorz
セットアップ中の承諾したあとにコンポーネントをダウンロードしますってところから
進みません

漏れには何が何だかわからないんです(´・ω・`)
どうしたらいいのですか。・゚・(ノД`)・゚・。
0680デフォルトの名無しさんNGNG
>677
視点固定でマウスで操作しないタイプならなんとかなるポ
その説明でも分からない漏れは死んできまつ

0681デフォルトの名無しさんNGNG
誰か677の言ってることを日本語に翻訳してください
0682デフォルトの名無しさんNGNG
>>680

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/DirectX9_c/directx/graphics/programmingguide/fixedfunction/transforms/transforms.asp
これでも読めれ。

多分、同次座標系が解らんと意味がわからんと思うので解説。

3DCG用途では透視変換や平行移動を4行4列の行列で扱える
ようにするため同次座標系というのをつかう。同次座標系では通常の
3次元ベクトル(x,y,z)に等質wを加えた(x,y,z,w)で表現される。

通常の3次元ベクトル(これをユークリッド座標系という)と
同次座標系との相互変換は以下のとおり。

・3次元ユークリッド座標系でx,y,z)で表されるベクトルを同次座標系(x',y',z',w')に変換
w=1とし、x,y,zはそのままつかう。(x',y',z',w')=(x,y,z,1)となる。

・同次座標系(x,y,z,w)を3次元ユークリッド座標系(x',y',z')で表されるベクトルに変換
同次座標系の各成分をwで割る。(x',y',z')=(x/w,y/w,z/w)となる。

以上から例を挙げれば同次座標系(x,y,z,w)と(2x,2y,2z,2w)は3次元ユークリッド
座標系上では同一のベクトルとなる。

ビュー行列と射影行列はネットでも検索して勉強してくれ。

昔(DirectX5とか6とかの時代)はSDKの解説はもうちょっと詳しかったし
もっぱら話題の中心がこんなことばっかりだったからもっと解説している
サイトが多かった(宇治社中とかが親切だった)けど、今はあまりこんなの
だれも解説しないからな。初心者には厳しいかも。もし手に入るようだったら
昔のDirectXのSDKのリファレンスでも読んでくれ。
0683682NGNG
続き

書籍で情報を得るなら以下の2冊がいいと思ったけど初心者には
必要なところを抜き出して読むのが難しいかもしれない。

・コンピュータグラフィックス 理論と実践
http://www.amazon.co.jp/exec/obidos/ASIN/4939007375/qid%3D1096460418/249-2167903-6130707

・ゲームプログラミングのための3Dグラフィックス数学
http://www.amazon.co.jp/exec/obidos/ASIN/4274064050/qid%3D1096460363/249-2167903-6130707

たしかどちらかといえば「ゲームプログラミングのための3Dグラフィックス数学」
のほうが数学としてはわかりやすくまとまっていたように記憶している。
(手元に本がないし長らく読んでいないので詳細がわからない)
0684デフォルトの名無しさんNGNG
>>676
Vector3.Projectつかえばいい
ここにサンプルあるから
ttp://www.interq.or.jp/black/minami-m/
C++だけどね。まあわかるよ。
0685デフォルトの名無しさんNGNG
>>678
start.wavなのに始められない、ってなんか笑えるな。w
いや笑っちゃいけないのかもしれないけれど…
0686デフォルトの名無しさんNGNG
>>678
俺はYouTooFoolExceptionが発生して半分あきらめてる
0687デフォルトの名無しさんNGNG
>>686
俺に対してTooFoolってこと?

それにしても短い音は駄目っぽ…
音の後半を無音にすれば行けるがスッキリしないな
あとDuplicateに対応するのってManagedだとCloneなんだろか。
0688デフォルトの名無しさんNGNG
YouAreFoolTooException
0689デフォルトの名無しさんNGNG


ハンドルされていない例外 ThreadAbonedException が発生したため、このスレは
0690デフォルトの名無しさんNGNG
すれぽ
0691デフォルトの名無しさんNGNG
やっぱその表現で行くのなら
YouIsBigFoolManException
だろw
0692デフォルトの名無しさんNGNG
you is って聞いたことありません>>691は何語をしゃべっているのか教えてくださいおながいします。
0693デフォルトの名無しさんNGNG
"you is big fool man"でググれ
有名なネタだ
0694在日外国人参政権反対NGNG
ググラずに聞くが北米院?
0695デフォルトの名無しさんNGNG
書き込み少ないけど、常駐率が変に高いスレだな。
0696デフォルトの名無しさんNGNG
>>682 683
アリガトン ・ゲームプログラミングのための3Dグラフィックス数学 は手にとってみたけど
公式ばっかりならんでてウザかったんで挫折してしまいますた

>>684
ミラクル トンクス。
やっぱり便利なメソがあったんでつね
自分で計算しろとかいうウザイやつばかりだったんで感激でつ
0697デフォルトの名無しさんNGNG
>>696
ウザイウザイ言う君が一番ウザイ。
0698デフォルトの名無しさんNGNG
初心者すれで揚げ足とって楽しんでる奴もう(ry
0699デフォルトの名無しさんNGNG
音楽関係の質問ですが、
AudioVideoPlaybackを使ってMP3を複数同時に再生するにはどうしたらいいのですか?
最終的には2つ以上の音が合成されて出力させたいのです。
0700デフォルトの名無しさんNGNG
new Audio("1.mp3").Play();
new Audio("2.mp3").Play();

じゃだめなのん?いや全然試してないんだけどね。
0701デフォルトの名無しさんNGNG
それ以前にMP3じゃなくてOggを使おうぜと言ってみるてすつ
0702デフォルトの名無しさんNGNG
それ以前に
new Vorbis.OggAudio("1.ogg").Play();
でいいような気が。
0703デフォルトの名無しさんNGNG
今Managed C++でOggのSDKからSystem.IO.Streamへのプロキシを書き終えた。
WAVEファイルに見せかければSecondaryBufferにStream食わせて簡単に再生できるからねぇ。
だけど実際はストリーミングしないでワンショットとして扱うらしく、長いファイルの演奏に向いてなさげ。
結局ストリーム再生しようとしたら今まで通りその辺を自力で書かないと駄目かもなあ。
0704デフォルトの名無しさんNGNG
900 -> 1901 -> 2902 -> ?

いや規則は分かるが、なんでこんな変な付け方なんだ?
だれか解説きぼん
■ このスレッドは過去ログ倉庫に格納されています