過去の自分へ送る記事である。

このタイプの記事は二度目。
ずいぶんと調子に乗ったこと書いていたのをまた発見したので。

この記事。
ゲーム業界が


また偉そうにゲーム業界のことをお客様の視点で書いてんだけど・・・
もうどうしようもないよね。何も考えずに叩くユーザだよ。ゲハ板にいそうな。

消してしまおうかなとか思ったけど、己への戒めとして残しておくよ。


特にひどいのが最後よ。
任天堂がスクエニより嫌いになっちまっただってよ。
初めて批判を覚えた中学生かよッて感じだわ。当時18歳。


少しはゲーム業界に詳しくなったから今の意見を簡単に書いておこう。

任天堂はやべえ。ほぼゲームだけで世界企業になってる時点でやべえ。
スクエニもやべえ。グラフィック技術が特にね。世界的に見てもトップクラス。
後SCEもやべえ。特に今はPS4も出て更にこれからって感じ。


とにかく、一般人でも知ってるような企業は、全部やべえんだよ。当たり前だけど。
常にユーザの事一番に考え、悩んで悩んで商品を世に出してる。
正直、頭のおかしい連中しかいないんだろうなと思う。
自分もその一部になりてえな。その一歩は踏み出せそうだけどさ。


批判はさ、理由を付けて、相手に納得させないと何も価値がないってことを専門学校で知ったよ。そういう議論は楽しいとも知ったよ。

そんなわけで、過去の自分へのメッセージでした。
この記事も、後で読み返したらウワアアアアアアアアアアってなるんだろうね。


次はいつになるかな。
前回の記事でDirectXMathなるものがあることを書いた。

これは数学的な処理をまとめたもので、例えばベクトルや行列を構造体として定義していたり、
内積や外積を求めたり、逆行列を求めたりする関数が宣言されている。


DirectXなので、当然ゲームに使えそうなものしかないが、これはかなり重宝するものだ。
D3DX系にもこういったものがあった。
が、前回書いたように、D3DXは使えない。(使おうと思えば使える)

で、DirectXMathについて調べていたら、これを扱うには注意点があるようだ。


何も考えずに使うと、特定のCPU上では、これが動かない可能性があるというのだ。
何も考えずといったのは、本来動かない環境でも、動かす方法はあるということだ。

具体的には、
SSE/SSE2に対応していないCPU
また、ARMアーキテクチャのCPUでは、ARM-NEONに対応していないCPU
の2つである。

?????
である。


今まで自分のCPUが速いのか遅いのかでしか考えなかった俺には、全くわからない。
が、それではプログラマ失格。逃げてはいけない。そのうち取り上げるかも。

とにかく、自分のCPUではどうなのか調べてみた。

DirectXMath自体に調べる関数があった。
XMVerifyCPUSupport()である。戻り値はBOOL。

で、自分は対応していたので安心。このライブラリを使える。
が、もしも対応していなかった時は、_XM_NO_INTRINSICS_を#defineで宣言してやればいい。


すぐ気づくだろうが、これがめんどくさい。#defineはプリプロセッサである。
つまりコンパイル時に解決されるため、例えば、アプリ起動時にCPUを調べ、
それに合わせて処理を切り替える・・・ということが簡単にできないのだ。
これに対応するくらいなら、アプリ終了させたほうが楽。

やるとしても、別の数学系ライブラリをリンクさせて、使い分けるくらいかな・・・?
おすすめは出来ないな。


といっても、先述した条件に当てはまってしまうCPUは、今の時代では殆ど無いと思う。
(完全に個人的な意見)
理由としては、SSEが初めて登場したのが1999年だから。SSE2も2000年である。

ので、それ以前の古いCPUの載ったPCは使ってる人なんてかなり少ないと思う。
まあ、だからって今のCPU全部がSSEに対応してるかって言われると・・・わからん。


とりあえず、アプリ実行時に調べることくらいはしてあげたほうが、ユーザには優しいかも。
自分用のメモなので、かなり雑多に書く。

Windows8にはD3DX系が無い。
代用として、DirectXTexやDirectXMath、DirectXTKがある。
要ダウンロード。


それを使う際、プリプロセッサに以下の文字列を追加すること。
それによりターゲットにするOSが変わる。


_WIN32_WINNT=0x0600

デフォルト値は0x0602で、これはWindows8を表す。
7にしたいなら0x0601、Vistaなら0x0600を設定。

おそらく、下位のOSで設定しても、上位のOSでは動くと思う。
(まだテストしてない。そのうちしないと)
プリプロセッサだから、あくまでコンパイル時だけの話なのかな?


参考:
http://www44.atwiki.jp/bokuyo/pages/190.html
http://d.hatena.ne.jp/poyonon/20121106/1352152645