No.1ベストアンサー
- 回答日時:
回答有り難う御座います。
8系ですか。下位バージョンであれば互換性の点では問題ないと思いますが、9系サンプルソースの解析をしようとしたとき若干躓きそうです。
DirectX自体詳しくないのでわかりませんが、8.0で学ぶとすれば9.0との差異などをプラスアルファで理解しておかなければなりませんね。
C++系は多くのサイトがDXライブラリの使用を前提としているので、クラスに関する知識が深まらないというのが好ましくない点です。(あるいはLibやヘッダを解析しながらという方法もありますが)
No.8
- 回答日時:
>マルチタスク、マルチスレッド処理とはまた別なものなのでしょうか。
上記の2つはシングルコアCPUでも動きます。正確に書くならCPUマルチコア・マルチCPUにより並行処理プログラミングですね。マルチタスク、マルチスレッドの概念とは完全に同じではありません。
SIMDはCPUコア内の演算回路の拡張に対応した命令コードです。専用のレジスタ上に置いた複数のデータ同士を1命令で加算とか減算したりするために使います。C言語だと文法上表現できないんですよ。
x86のSIMD命令(MMXやSSE)。拡張に次ぐ拡張でややこしいことに。
http://ja.wikipedia.org/wiki/Streaming_SIMD_Exte …
http://krypton1.at.infoseek.co.jp/x86/x86.htm
度重なる回答、誠に感謝しております。
>正確に書くならCPUマルチコア・マルチCPUにより並行処理プログラミングですね。マルチタスク、マルチスレッドの概念とは完全に同じではありません。
・ハードウェアよりな考え方ということですね。
物理的に処理する領域(レジスタ)が分かれているということでしょうか。
>x86のSIMD命令(MMXやSSE)
・参考サイトをある程度理解するのに少々時間を要しました。
CやC++ではSSEを出すことはできないんですね。
>C言語だと文法上表現できないんですよ。
・C言語はメモリに直接アクセスできる言語なのでレジスタに対してもアクセス可能なのではないかと考えていました。
No.7
- 回答日時:
>・CPUですか?つまりCPUのスペックでCかC++かを選ぶということでしょうか。
(あくまで一要因として)ゲームボーイ程度の8ビットCPUではC言語でも厳しいですね。命令コード自体がコンパイラに向いていません。16ビット系でC言語、32ビットでC/C++言語の混在と大雑把に考えてよいと思います(私見ですが)。
C++が使えるようになったのはメモリ量の増大とCPUクロックの大幅アップのお陰です。あとはゲームプログラマが開発ツールなどのプログラムでVC++を使ってC++に慣れてきたことかな?
部品化、ライブラリ化だとかだとC++の方が開発効率良いですからね。
セガの人が書いた「ゲームプログラマになる前に覚えておきたい技術」
http://www.shuwasystem.co.jp/gpro-sp/
もC++で書かれてますね。
>つまり非常に多用される処理においてはアセンブラを使用する場合がある、という認識でよろしいでしょうか
行列演算とか、やたら計算は多いのにシンプルな処理はアセンブラで書かないと効率よく処理できない場合があります。あと物理演算系とか。それにx86コア等のSIMD系の命令コードを持つCPUでSIMD系のコードを出してくれるC/C++コンパイラはありませんので、必然的にアセンブラを使います。
http://www.atmarkit.co.jp/icd/root/31/5783731.html
回答有り難う御座います。
>メモリ量の増大とCPUクロックの大幅アップのお陰です。
・高性能CPUの場合CとC++の処理速度はほとんど変わらないが、上記の様なCPUを使用する場合に差が出てくるということですね。
>行列演算とか、やたら計算は多いのにシンプルな処理はアセンブラで書かないと効率よく処理できない場合があります。あと物理演算系とか。
・成程、単純計算の集合はコンパイラが最適化してくれるのかなと思っていましたがそういうわけでもないのですね。
>x86コア等のSIMD系の命令コードを持つCPUでSIMD系のコードを出してくれるC/C++コンパイラはありませんので、必然的にアセンブラを使います。
・参考サイトを読んでみましたが少々難解で理解しきれていない部分が多いです。
CやC++ではSIMD系コードでCPUに命令を与えてやることはできないから、機械語と一対一であるアセンブラで直接命令を与えてやる必要がある。という解釈でよろしいでしょうか。
マルチタスク、マルチスレッド処理とはまた別なものなのでしょうか。
No.6
- 回答日時:
>DSではC言語が使用されているのですか。
いや断言はしませんよ。DSはARM系CPUですからC++でも問題なく使用できるスペックのCPUですからね。もちろんC++で開発しているメーカーもあると思いますよ。
>疑問なのですが、それでも尚アセンブラが使用され続けている理由はやはり処理速度の面なのではないのでしょうか。(つまりゲーム開発においてCやC++では速度面で不十分な面が存在するということでは?)
アセンブラで熟練者がコードが書けば、CやC++より速いコードがかけますがコンパイラのオプティマイザもバカにできません。ただアセンブラは可読性とメンテナンス性が悪すぎます。やはり、現在の大量のコードを書く時代にはC++の方が開発効率が良いです。
アセンブラはライブラリなどで高速性が必要な一部分で使われることはありますよ。
度々の御回答誠に有り難う御座います。
>いや断言はしませんよ。DSはARM系CPUですからC++でも問題なく使用できるスペックのCPUですからね。もちろんC++で開発しているメーカーもあると思いますよ。
・CPUですか?つまりCPUのスペックでCかC++かを選ぶということでしょうか。(あくまで一要因として)
>アセンブラで熟練者がコードが書けば、CやC++より速いコードがかけますがコンパイラのオプティマイザもバカにできません。
・確かにコンパイラの最適化処理は相当なものだという話を耳にしたことがあります。
私自身は使用していない変数をコンパイル時に除外してくれる程度の機能しか理解していませんが。
>アセンブラはライブラリなどで高速性が必要な一部分で使われることはありますよ。
・つまり非常に多用される処理においてはアセンブラを使用する場合がある、という認識でよろしいでしょうか。
確かにアセンブラのみでゲーム開発となると解析効率は相当に悪そうですね。
No.5
- 回答日時:
>その上でCを選択した理由に、ゲーム会社の採用条件にがアセンブラやC言語が多く見られたからです。
まぁ、今時のゲーム会社はC++を使っていると思いますけどね。特にPS3やXbox360の開発。DSならC言語かも知れませんけど。
>DXライブラリなどを使用してしまうと自分でクラスを作る必要性が薄くなってしまうので、学習用としてはどうなのだろうと思っています。
DXライブラリはDirectX周りの細かい仕様を知らずに作れてしまうのが問題ですね。まぁ目的を2Dゲームを作ることに置くのか、DirectXの習得を主眼に置くのかでDXライブラリの価値が違うと思います。楽に開発した貰うためのDXライブラリですし。
ゲーム開発メーカーのプログラマーも社内のライブラリやゲームエンジンを使っているので、担当する部分でDirectXの知識はかなり差があったりしますけど。
回答有り難う御座います。
>まぁ、今時のゲーム会社はC++を使っていると思いますけどね。特にPS3やXbox360の開発。DSならC言語かも知れませんけど。
・現在の主流がC++というのは初めて知りました。
DSではC言語が使用されているのですか。
>ゲーム開発メーカーのプログラマーも社内のライブラリやゲームエンジンを使っているので、担当する部分でDirectXの知識はかなり差があったりしますけど。
・会社ごとに独自のライブラリを使用しているということですよね。
そうなるとDirectXを理解するという点も踏まえ、独自の関数群を作ってゲームを作ってみたいな、と思ってしまいます。
No.4
- 回答日時:
#3です。
ゲーム会社でもいまどきはC++が普通ですよ。特にDirectXなんてわざわざCで書いたりはしません。
採用条件にアセンブラやCという話は、それらを理解していたほうが、よりコンピュータの本質的なところでの理解ができていると思われるからでしょう。
>・アセンブラは単純に理解しにくい。
>・C++、XNAは処理速度や容量を突き詰めていく場合どうしてもクラスの存在がネックとなると聞きました。
これも誤解です。アセンブラなんて理解するのは簡単ですよ。ただ、CやC++と同じことをするのに、数倍~数十倍の行数となるため最近ではあまり出番がないだけです。
クラスも素人が適当に書いたのならともかく、うまく書けば、容量には影響しません。なので、ゲームにC++が使われていなというのは違います。
再度の御回答有難う御座います。
>ゲーム会社でもいまどきはC++が普通ですよ。特にDirectXなんてわざわざCで書いたりはしません。
・そうでしたか、参考にした会社が偏っていたみたいですね。
>採用条件にアセンブラやCという話は、それらを理解していたほうが、よりコンピュータの本質的なところでの理解ができていると思われるからでしょう。
・そうなると業務上C言語が使用される機会は少なく(あるいはまったくない)、メモリやクラスなどの意義を理解するにあたってアセンブラやC言語の知識が必要であるということでしょうか。
>これも誤解です。アセンブラなんて理解するのは簡単ですよ。ただ、CやC++と同じことをするのに、数倍~数十倍の行数となるため最近ではあまり出番がないだけです。
・疑問なのですが、それでも尚アセンブラが使用され続けている理由はやはり処理速度の面なのではないのでしょうか。(つまりゲーム開発においてCやC++では速度面で不十分な面が存在するということでは?)
>クラスも素人が適当に書いたのならともかく、うまく書けば、容量には影響しません。なので、ゲームにC++が使われていなというのは違います。
・成程、そうなると現在ゲーム業界の主流はC++ということですね。
No.3
- 回答日時:
すなおにC++でやったほうが、何倍も簡単だと思いますよ。
Cを学んだ人がC++を学ぶための本としては、
「CプログラマのためのC++入門」がおすすめです。
http://www.bohyoh.com/Books/CppForCP/
これを読めば、C++なんてCとそんなに変わらないということがわかるはず。
回答有り難う御座います。
実を言いますとC++もある程度は学習済みです。
その上でCを選択した理由に、ゲーム会社の採用条件にがアセンブラやC言語が多く見られたからです。
ゲーム会社に就職するつもりはありませんが、現行企業のゲーム制作技術を学ぶにあたってどの言語が最適かと考え、とりあえずC言語を選択しました。(単純に企業の技術を真似てみたかったのです)
アセンブラ、C++、あるいはXNA(これはWindowsとXBOX360ですね)なんてものもありましたが、
・アセンブラは単純に理解しにくい。
・C++、XNAは処理速度や容量を突き詰めていく場合どうしてもクラスの存在がネックとなると聞きました。
C言語で勉強して、やはり難しいと思った時は素直にC++で勉強しようと思います。
No.2
- 回答日時:
DirexctX8と9の違いは、そう大きくなかったはずです。
http://dench.flatlib.jp/dxlist.html#dx9
まぁ、C++のライブラリを使う分にはクラスは構造体に関数のポインタを入れたのと似ていると言った感じの解釈で十分だと思いますけど。
再度の御回答有り難う御座います。
上記のサイトを読んでみたところ、3D系の処理を中心に変更が加わっているという解釈で宜しいでしょうか。(Shaderとか頂点フォーマットというのは3D系の用語ですよね)
現時点で3D系のゲームプログラミングを学習する予定はありませんので、先ほどご提示いただいたサイトを参考に勉強を始めてみようと思います。
C++既存の関数群を使用することに抵抗はないのですが、ゲームプログラミングに特化した(?)DXライブラリなどを使用してしまうと自分でクラスを作る必要性が薄くなってしまうので、学習用としてはどうなのだろうと思っています。
もっともクラスを作ること自体かなり難易度が高いらしいので、素直に既存ライブラリを使ったほうが賢明なのかもしれませんが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MIPSアセンブラ言語について
-
汎用レジスタのワーキングビッ...
-
アセンブラのLA
-
アセンブラからC言語に変換する...
-
PICに書き込むプログラムや変数...
-
ライン数とステップ数の違いは?
-
素朴な疑問 (C言語とアセン...
-
このアセンブラの意味を教えて...
-
フリーの6502アセンブラ
-
アセンブラ(アセンブリ)の何か...
-
組み込み系C言語の学習法
-
アセンブラの学習法
-
解析魔法少女を読んだ方に質問
-
アセンブラのコマンドについて
-
組み込みソフトのわかりやすい...
-
アセンブラエディタ
-
アセンブラの擬似命令について
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
エクセルVBAのIf,Then 構...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アセンブラからC言語に変換する...
-
ライン数とステップ数の違いは?
-
実行ファイルからソースはみれる?
-
PC-9801でマシン語を学習するに...
-
[C言語→アセンブリ言語]はどう...
-
void __cdeclなど_
-
アセンブラwordという単位
-
アセンブラ言語がわかりません。
-
バイナリの実行ファイルをgccを...
-
SHの命令の意味について
-
PC-9801 MS-DOSでの実行ファイ...
-
アセンブラエディタ
-
PICに書き込むプログラムや変数...
-
PICのアセンブラからC言語へ変...
-
アセンブラのLA
-
【H8マイコン】HEWで埋め込みア...
-
ニーモニックコードを使って割...
-
7セグメントLEDの点灯について
-
アセンブラのコマンドについて
-
MASMの機種依存についてお尋ね...
おすすめ情報