みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

DirectXへの書籍について

只今、「独習C++」にてC++の勉強をしている者です。
最終的にはDirectXでのゲームプログラミングをしてみたいと思っているのですが、
どのような書籍をつかってステップアップしていけばいいのでしょうか?おすすめの書籍をお願いします。

※開発環境は今は「BccDeveloper」で近日中に「VisualStudio」を購入予定です。

独習C++ → ??? → ・・・・・・・

投稿日時 - 2007-05-19 21:14:31

QNo.3013721

暇なときに回答ください

質問者が選んだベストアンサー

具体的な書籍ではないですが。

1.独習C++でC++の勉強
2.WindowsAPI、GDIなどWindowsプログラミングの勉強
3.DirectXの勉強

1でC++自体をまず勉強します。
ある程度以上理解して、使えるようになったら、2へ。

2ではWindowsアプリが作れるようにします。
ウィンドウの作成の仕方とか、メッセージループといった基本的な部分はDirectXでゲームを作るのにも必要になります。
むしろWindowsアプリの一部をDirectXで書き換えるようなものなので。

3では、DirectXで実際に作れるように勉強します

別途必要な勉強として、線形代数、ベクトルの勉強が必要になります。
これは3までにゆっくりとやっていけばいいかとおもいます。

書籍ですが、昨今は昔に比べてこのへんの本がかなり増えてきました。
そのため、最近の本はよくわからないので、具体的にどれとは書き控えます

基本的には、書店にいっていろいろ中身をみてみて、自分がわかりやすそうだと思う本で良いとおもいます。
それで基礎部分のある程度を理解できたら、どこを詳しくしりたいかもわかるでしょうし、よりステップアップするための記載がある書籍も選べるようになっているとおもいます。

投稿日時 - 2007-05-20 16:41:27

お礼

丁寧にありがとうございます。
まずは独習C++を早く終わらせて次のステップに進みながら
予習も兼ねて線形代数、ベクトルをペラペラと教科書
をめくりながら勉強したいと思います。
とてもわかりやすかったです。
ありがとうございました。

投稿日時 - 2007-05-21 17:53:55

ANo.4

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

C++はCに比べて、ポインタの使用を減らせる言語です。
そういう意味でC言語より遥かに安全にプログラムでき
Cで必要とされていた知識をある程度軽減できます。

1)
DirectXは全てクラスで実装されている為、
クラスに対する十分な理解が必要です。

2)
WindowsでGUIアプリケーションを作成するには、
WindowsAPIに関する知識が必要です。

上記を踏まえて、現状はC++を勉強中とのことなので、
次のステップとしてWindowsAPIに関する書籍でC言語に
少し触れるのとCとC++の違いを見てみてはどうでしょうか?

投稿日時 - 2007-05-20 13:20:42

お礼

回答ありがとうございます。
「WindowsAPIに関する書籍」というのは猫でもわかるWindowsプログラミング
のようなものでよいのでしょうか。

投稿日時 - 2007-05-20 14:53:15

ANo.2

>>最終的にはDirectXでのゲームプログラミングをしてみたいと思っているのですが、

作りたいものがあるのはいいですね。私は、特に必要もないのですが、いまいち仕事で使っているC言語に限界を感じてC++を勉強していました。でも、いくら書籍を読んでも「解った」って感じがしなかったのですが、ヘルプの仕事でメンテ作業を手伝ったら「ちょっと解ったかも?」って感じがしてきました。で、あらためて手元のC++書籍を読みなおした感想からいうと、

1)Cのレベル確認

C++は、C言語の速度重視を引き継いだ言語です。Javaのように速度を犠牲にして安全性を優先なんて甘っちょろい言語じゃありません。事故防止のためにスピードリミッターのついた車じゃあなく、F1カーのように、ドライバーの技量を信頼し、安全性は自己責任の世界です。当然のことながらポインターは使いまくりですね。以下のようなコードをすらすらと理解できないなら、C++の前にCの十分な理解が必要だそうです。


void call_each(void (**a)(void), int size)
{
 int n = size;

 while(--n >= 0) {
  void (*p)(void) = *a++;
  if (p)
   (*p)();
 }
}

2)書籍買いまくり

C++は、単にC言語にちょっと命令を追加しただけじゃあありません。追加された命令の使い方を理解して終わり!ではないんですね。そこには、オブジェクト指向とは全然関係ないテンプレートを中心にしたジェネリックプログラミング技法の世界が広がっています。個人的には、オブジェクト指向よりもこっちのほうが重要と感じました。

建築に例えると、柱と壁、梁による強度計算をマスターすれば、建物は建てられる。これがCレベル。でも、そうした知識だけで高層ビルを建てると、太い柱だらけで広いスペースが無い使いにくい建物になってしまう。
そこに、新たな発想・工夫の「柔構造」「外部構造チューブ工法」なんてのを取り入れると、広いスペースを持つシアーズタワとか、今は無き世界貿易センタービルなんてのが作れる。そこには、低層では考えられない複雑な計算が必要。それがC++で追加して学ぶ必要がある部分に相当する気がします。

つまりは、C++って「アルゴリズムが解ればOk」程度では全然駄目で、さらに上位概念のソフト構築知識が要求されるため、一般的にC++の名著っていわれる書籍や立ち読みしてよさそうな本は全部買いまくって、理解できそうな本から読みまくるしかない気がしています。本棚を見るとC++関係の本が13冊並んでいました。

ただ、最初にC++を入門レベルで理解するのに役に立ったと思う本は、CQ出版 TRY!PC「C++プログラミングのポイント(付録CD-ROM:Borland C++Compiler 5.5.1):2002年秋号」なんですが、これって現在入手不可ですね。

でも、C++を学ぶ材料としてのゲームプログラム作成ではなく、最終目的がゲーム作成なら、C++やDirectXにこだわらず、シナリオや可愛いキャラや音楽とかゲーム作成ツールの使い方などにパワーを注いだほうがいいような気もします。(笑)

投稿日時 - 2007-05-20 09:55:16

お礼

丁寧にありがとうございます。
1)についてはC++の前に少しCを踏んでからいったので
なんとなくわかるような気がします;
わかるように勉強してみます。

投稿日時 - 2007-05-20 10:18:19

ANo.1

私でしたら、、、
独習C++で入ったなら
->
まず、ゼロから学ぶ線形代数、ゼロから学ぶ微積分などで数学の勉強
->
つぎに
C++プログラミング入門 新版(オライリー)
.NET Framework エッセンシャルズ第2版
はじめての3Dゲーム開発 「DirectX9」の使い方から「1人称3Dフィールド・ゲーム」の制作までで基礎を固めて
->
DirectX逆引き大全500の極意を見ながら実際にプログラミングをすると思います。

投稿日時 - 2007-05-19 22:57:59

お礼

回答ありがとうございます。
書店で一度探してみようと思います。

投稿日時 - 2007-05-20 10:08:38

あなたにオススメの質問