• ベストアンサー

基礎からC・C++を学習し、DirectXへの道

私はゲームにおけるプログラミングを理解したく、C・C++を勉強したいと思っています。 しかしC言語についてはまったく知識がありません。過去にBASICで音楽をつくったりEXCELでVBAをいじった程度のド素人です。 いちおうゲームに関する技術は一通り理解しています。CGソフトでのモデリング、マッピング、アニメーションもできます。 専門用語になりますが、いちばんできるようになりたいのは「シェーダの作成」です。レンダリング部分を自在にいじれるようになりたいのです。 このような状況で、C・C++を学習するにはどうしたらよいでしょうか?私は普段は会社勤めですのでできれば都内で学習できる学校に通いたいと思っています。 ゲーム全般の学習ができなくても、C・C++がある程度理解できるようになれば、あとはDirectXやOpenGL、Cgfxなどの専門書で理解できるのでしょうか? Cの基礎からの学習方法だけのアドバイスでもかまいません。よろしくお願いします。

  • suffre
  • お礼率76% (2013/2633)

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

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.4

・シェーダプログラミングと「C/C++によるプログラミング」は全くの別系統 は ・シェーダプログラミングと「C/C++によるアプリケーションプログラミング」は全くの別系統 と書くべきところでした。 CgやGLSLの言語としての構造はC言語をベースにしているので、C言語の基礎の学習は(CgやGLSLを使用するのであれば)シェーダプログラミングの学習の基本にも通じるものがあります。(もっと大まかに言えば、BASICやVBAによるプログラムにも通じるものがあります。) しかし、C言語を使用して「アプリケーション」プログラムを作成するための知識はシェーダプログラミングには一切不要ですので、学ぶとすればC言語の「基礎だけ」「スタイルだけ」を学習しましょう。それ以上はシェーダプログラミングの学習には無駄です。 この用途には、一般のC言語の入門書のうちごく基礎で、なおかつ「実際的でないもの」(通常は「実用的でない」と判断される部類のもの)が、この用途には適しています。また、C++言語の入門書は不適です。 どれが「実際的でない」「実用的でない」かを判断するのはちょっと難しいですが、ざっと目次に目をとおして、特に目次の最後のほうで何かまとまったプログラム(たとえばゲーム、住所録、ワープロ等)を作成する章や例題が出ているようなら、その本は比較的「実際的」「実用的」と考えてよいでしょう。そういう本は避けたほうが無難です。 それから、CgやCLSLの専門書がもしあるのであれば、そちらは必携です。 DirectXの本は、内容に十分注意してください。「DirectXを使ったアプリケーションプログラム(たいていはゲーム)を作成する」というテーマの本の場合、おそらくほとんどは不適です。まだほとんどないかと思いますが、もし「DirectXを使ったアプリケーションプログラムで、シェーダプログラムを使用する」というテーマを持った本であれば、それは適しています。

suffre
質問者

お礼

具体的なご説明に感謝します。 たしかにアプリケーションプログラミングはしないので、VC++のようなソフトは不要なのかもしれませんね。 GLSLやHLSL、Cg言語を記述するとキューブやスフィアなどの単純なジオメトリにシェーディングが確認できればよいのでは・・・と思っております。 NvidiaのfxComposerなどがそういう目的のソフトかと思っていますが、そうなのでしょうか? つまり、VC++はC言語でアプリケーションを作成するソフトという構図に対して、fxComposerはCg言語でシェーダを作成するソフトという認識であっているでしょうか? シェーダに関して海外のWebサイトなどが実際にソースを公開しているところも多いので参考にしてみたいと思います。 VC++の学習は不要ということでちょっと意外でしたが納得しました。

その他の回答 (4)

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.5

その認識で合っています。 「グラフィックソフトウェアで使用する、(例えば)Cgで作成したシェーダプログラム」は、例えていえば「Excelで使用する、VBAで作成したマクロ」のようなものです。シェーダプログラムもVBAマクロも、それ単独で動作させることはできず、ホストとなるアプリケーションが別に必要になります。 そしてそのホストアプリケーションが、シェーダプログラム(やVBAマクロ)に必要な情報を与え、処理結果を表示する仲立ちをするわけです。(この辺が、「アプリケーションプログラムの作成」と考え方の異なる部分です。) C言語でもそういったマクロ的なアプリケーションを書く場合がありますが、「マクロとしてC言語を使ってみましょう」という入門書はちょっと見たことがないですね。

suffre
質問者

お礼

再びありがとうございます。 これで学習の方向性がわかったので明日書店にいって該当する書籍を探してみたいと思います。 #1、#2の方もあわせて詳しいご説明に感謝します。

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.3

シェーダプログラミングと「C/C++によるプログラミング」は全くの別系統に属するものなので、どちらかを先に行わないと困るようなことはありません。 もしシェーダプログラミングの習得が優先目標であれば、C/C++を学習してもあまり役に立ちませんので、シェーダプログラミングだけに着手されることをお勧めします。

suffre
質問者

お礼

お返事ありがとうございます。 >シェーダプログラミングと「C/C++によるプログラミング」は全くの別系統に属するものなので、どちらかを先に行わないと困るようなことはありません。 そうなのですか・・・!C言語と似ている別の言語という認識だったのですがまったく違うのでしょうか? しかし一からシェーダ言語を解説している書籍とかは見当たらなかったので学習方法が難しいですね・・・。 何かよい方法があれば詳しくお伺いしたいです。 あと、VisualStudio2003 Professionalを購入しようと思っておりますが、もしかして必要ないのでしょうか?

  • PG_RankB
  • ベストアンサー率40% (12/30)
回答No.2

>ゲームに関する技術は一通り理解しています。CGソフトでのモデリング、マッピング、アニメーションもできます。 これは3Dモデリングソフトを使用した、リソース製作の扱いは出来ると言う事でしょうか? これだけ見ると、扱える分野がグラフィッカの担当部分に見えるのですが。 もちろん、グラフィックの分野も知っていた方が、プログラマとしては得なのですが。 DirectXAPIとC・C++でゲームの製作を行いたいのであれば、CとC++で、初級者用の参考書に載っている様なレベルの機能群は、頭に入れておく。 または、すぐに調べて理解出来る状態にしておく事が重要です。 目安として、林晴比古氏の新C言語・C++入門のビギナー編(著書の好き嫌いは別として)にて扱っている程度の内容が把握出来ていれば、特別問題は無いと思います。 BasicやVBAを触った事があるのでしたら、基本の理解は著書やネットだけでもスムーズにいくのでは無いでしょうか? 少なくとも、言語の機能や構文の扱い程度、学校に行ってまで学ぶような物では無いと思います。 DirectXの著書等は、C/C++の基本が理解出来ている事を前提に書かれている物が多いので、これらを理解していないと、読んでも理解には繋がり難いです。 アーキテクチャを理解するだけなら、文章だけでも何とかなりますが・・・後は、数学の知識があると便利です。(高校レベル必須・大学レベル推奨と言った所でしょうか?) DirectXまでの大きな流れは、sha-girl様の言うとおりですね。 ・C/C++ ・WindowsCプログラミング(WinMainやメッセージループ等) ・DirectX となります。 Windowsプログラムの過程で、MFCを理解する必要はありません。私は経験上、ゲーム製作でMFCを使用した事はありません。 パッドの設定ツールなど、イベントドリブン方式のGUIを作るなら、MFCが使えると多少便利ですが。 また、DirectXも、学校で学んでもあまり意味を成さないと思います。 私は某専門学校のゲーム製作系学科の出身で、DirectXも科目にありましたが、とても学んだと言えるレベルではありませんでした。 扱えるようになったのは卒業後に独学で習得したためです。 もちろん、シェーダについて授業で扱う事はありませんでした。 シェーダや3Dの勉強は、sha-girl様同様、http://www.t-pot.com/ で行っています。 シェーダを扱うなら、HLSL も、1つ勉強する上でのキーワードになると思います。

suffre
質問者

お礼

詳しいご説明ありがとうございます。 おっしゃるとおり私はグラフィック担当です。CGソフトのGUIでシェーダを作るのは簡単ですが、HLSLやCg言語でシェーダを作る、というのはまったく理解できていない状態です。 学校をいろいろ探しましたが、おそらくゲーム分野やCG分野で勤め人に教えているスクールのようなところはないだろうと思い、C/C++の基礎的な部分をスクールで学び、DirectXやOpenGLなどのグラフィック部分は独学で勉強しようと思っておりました。 学習の仕方の指針をいただいて感謝しております。お二方のアドバイスを元に学習計画を立ててすぐに実行したいと思います。

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

シェーダープログラミングはゲーム業界の中でも本当に扱える人は少ないですね。 学校でシェーダープログラミングまで教えてくれるところはほとんど無いのでは。 基本的に独学でしょう。 シェーダーで有名なのはこのページです。 http://www.t-pot.com/ 本もだしています。 ただ今の段階でこのページをみても難しいでしょう。 まず基本はCから初めて C→C++→WindowsSDK→MFC(これは無くても良い)→DirectX といった流れで学習していきます。 >C・C++がある程度理解できるようになれば、あとはDirectXやOpenGL、Cgfxなどの専門書で理解できるのでしょうか? DirectXSDKにはサンプルがついています。C/C++が読めれば、その中で何をやっているのかが わかるようになりますが、 そこまでになるには、それなりに大変です。 とりあえず最初のステップとして、C言語の入門書を買ってください。 あと下記サイトも参考になります。 http://www.kumei.ne.jp/c_lang/

suffre
質問者

お礼

お返事ありがとうございます。 そうなのです・・・来年以降業界に必要なシェーダープログラマがまったくいなくて困った状況です。 やはり地道にCを勉強していってその流れでDirectXなどにいけばよいのですね。 URLのほうも参考にさせていただきます。

関連するQ&A

  • DirectXとOpenGLについて。

    DirectXとOpenGLについて。 DirectXかOpenGLを用いて、グーグルストリートビューのように、周囲360°の風景をマウスなどで動かして探索できるプログラムをC#で作りたいと思っております。そのためにはスフィアマッピングと呼ばれる手法が必要らしいのですが、DirectXとOpenGLだとどちらを使ったほうが効率的に開発を進めることが可能でしょうか?是非回答お願いします。 またスフィアマッピングの手法についてわかりやすく解説しているサイトなどを教えてもらえたら幸いです。

  • DirectX9 の学習法

    すごい初心者です。 私は今現在 C++でDirectX9b を使ってのゲームプログラミングの学習を 行っています。ですが、デバイスやテクスチャーなど いきなり難しい単語が並んでわかりずらくて、 苦戦しています。 とにかく、今のところはゲームを作るのではなくDirectXに 慣れるためいろいろ試しているんですが、 どこから手をつけていいのかわからなくて、 とても効率が悪いんです。 どなたか、わかりやすいサイトや本など 紹介していただけませんか。 ご投稿よろしくお願いします。

  • DirectXとOpenGLはどちらが動作が軽い?

    環境:Visual Studio 2005 WinXP Win32 C/C++ Windowsプログラミングを一通り勉強したので、 次は3Dプログラミングに挑戦したいと思っています。 DirectXとOpenGL、どちらを学習しようか決めかねています。 最終的にはとても軽く動作する3Dゲームを作りたいです。 そこで、たとえばまったく同じ動作をする DirectXの3Dゲームと、OpenGLの3Dゲームがある場合、 どちらのほうが動作が軽いのでしょうか。 ここでいう「動作が軽い」というのは、 そのゲームが使用するメモリ量、CPU量などが低く動作が快適なものです。 メールソフトやブラウザを同時に起動しても気にならない ほど軽いものが作りたいと思っています。

  • 3Dゲームを作りたい

    3Dゲームを作りたい 自分はC言語が少しわかる程度なのですが、3Dゲームの作り方を勉強したいと思います。 OpenGLの方がDirectXよりも簡単だと聞いたので、OpenGLを使いたいと思っています。 それとメタセコイアでの3Dキャラクターのモデリングの仕方もわかっているのですが、ここで質問です。 メタセコイアで作ったキャラクターにMIKOTO等でボーンを通して、OpenGLを使ってキャラクターを動かすことはできるのでしょうか?(DirectXでもかまいません) 例えばキー操作で腕を上げたり、歩いたりなどは可能でしょうか。 まだゲームプログラミングについてよくわかってないので馬鹿な質問をしてるかもしれませんが、回答よろしくお願いします。

  • ★C++(DirectX) vs Java(Java3D)★

    公開頒布するゲームの作成を考えていますが,その前に・・・ 手段としてJava+Java3Dで行う方法とC言語+DirectXでプログラムを行う方法があるようで・・・ 一般に売られているコンピュータゲームにはDirectXを含むものが多いため,後者の組み合わせでゲームを作っているのかなと勝手に思っていますが,実際のところどうなんでしょうか? 改ざんを防ぐためにはDirectXを使ったほうが良い等があるのでしょうか? ちなみに,JavaもC言語も学習していますし,作るゲームのジャンル(RPG,STG)などは考えず,さまざまなゲーム作成をしたいと考えています.

  • ゲーム用3Dモデル作成

    ゲーム用の3Dモデル、俗に言う”ローポリ”の作成をはじめようと思っています。 ・WindowsのDirectXで使えるファイル形式に出力できる(重要) ・モデリングしやすい ・テクスチャが張りやすい ・レンダリング機能はなくてもいい ・値段が手頃 ・アニメーションもDirectX形式で出力できる。(これはムリかな・・・) この条件に近いソフトがありましたら、シェアウェア、フリーソフト、市販の物なんでもいいので紹介してください。

  • C、C++でもぐらたたき

     C→C++を少し→Win32APIと学習してきました。 もぐらたたき(2D)を作りたいのですがWinAPIでも作れるのでしょうか?それともDirectXなどを使わないといけないでしょうか? いまいち分からないのですが、Win32APIで作れるゲームとDirectXで作れるゲームにはどんな違いがあるのでしょうか?3Dが作れることだけでしょうか?教えていただければ嬉しいです。

  • OpenGL得意なゲーム用グラボは?

    現在会社にてパソコンを新調するため調べている最中です。 あまり詳しい方では有りません。 調査の結果当然、「Quadro」が有力候補にあがったのですが 業務にてLumionというDirectXを使用するソフトを主体とすることになったため ゲーム用グラボと呼ばれる「Gefoce」か「Radeon」を選択しようということになりました。 しかし、CAD等での3Dモデリング作業も同じPCで行います。 2台用意すれば簡単なのですが、打ち合わせ時にモデリング→すぐその場でレンダリング といった使い方をするため1台でやりたいのです。 (とは言いつつデスクトップPCの予定) OpenGLにもそこそこ成績の良いゲーム用グラフィックボードは どんなものがあるのでしょうか・・・? (QuadroでDirectXのスコアの良い物があれば OKですが) 以上よろしくお願いいたします。

  • WinAPI、DirectXの本

    4月で専門学校2年生になるんですが、2年次からDirectXとWinAPIの授業があるようなので予習をしておこうと思ったのですが、たくさん本があってどれがいいのか分かりません。 皆さんはどういった本でこれらを勉強してきたのでしょうか。 両方とも全く触れてこなかったので入門レベルで、分かりやすい良い本を紹介して欲しいです。 ちなみに1年次はOpenGLとCをやっていました。

  • C#の学習について

    C#について質問させて頂きます。 私は情報学部の大学生で、この夏に学校ではやらないのでC#を少しでも覚えて遊ぼうと思っています。 そこで2つほど質問があります。 1.学校では一年時はC言語を習っています、「明解 C言語」という教科書を使い、今は半分程度まで終りました(関数のあたりです)、個人的に簡単なゲーム(座標を指定してターゲットに命中したら得点、のようなもの)は作ったりしてみたりしました。 この状態でC#を学習すると、ごちゃごちゃになって、どちらも使えなくなる、といった可能性はありますか? 2.C#を学習する上でわかりやすい参考書・サイトがあったら教えて頂けませんか? お時間がある時で構いませんので、よろしくお願いします。