掲示板の方でちょっと問題になっているとある状態につて確認していたときの出来事。普通の環境でもなることがないわけではないですが、グラフィックカードが新しく、かつ強力名ものを使っていればまず起こらない現象だと思うとんでもない状況が・・・。
何だ、このノイズが大量に描画されている状態は?
(WindowModePatchは関係ないですが)ある設定状態にしてゲームを起動してみると、画面上に大量のノイズが描画される事態に。
いったい何事だ?が第一感。一度起動していてそのときには通常動作しているし、ゲームの体験版なのでまさかコンピュータウイルスということは皆無だろうし・・・。
まあ、先に種明かしをするなら「グラフィックドライバでアンチエイリアス処理で無理矢理強力な状態を指定したためにグラフィックチップが暴走状態になった」という状態です。以前にも使いすぎたグラフィックカードのファンとチップの間のグリスが固まって熱暴走状態を作ってしまったことがありましたが、それと同じような状態でした。こうなるとさすがに再起動くらいしか復旧手段はないのであっさりと再起動。ゲームを落としてもノイズが出たままで回復しなかったので仕方がないですね。
なお、そのゲームですが、グラフィックドライバでアンチエイリアス処理を指定するとどうもジャギーのポイントで微妙なノイズが描画されているのがとても気になりました。ゲームの問題ではなくグラフィック側の問題でしょうが、たまにこうなると言うことも書いておきましょう。・・・グラフィックカードの寿命なのかな?
AMDのグラフィックカードはこの頃使っていないので特性がわからない
Radeonのグラフィックカードはその熱暴走を起こして壊れたもの以降は使っていないのでどうなっているのかがわからないのが痛いです。Radeonが嫌い、というわけではなく仕事の関係でAMDよりもNVIDIAを使用した方が良い状態が続いているためです。CUDAや3DVisionが典型ですね。機能として似たようなものはあるかもしれませんが、指定されるとどうしようもないです。似たような問題でCPUもAMDのものが使いづらい状態なのがまた。いくつかマシンを組んでそれぞれでチェックをすればよいのですが、そこまでするだけの資金力がないのがさらに問題。
ウィンドウのサイズを変更すると自動的に描画サイズが変更されるゲームがある
たまにWindowModePatchを使っていなくてもウィンドウのサイズを変更することで自動的に描画サイズが変更されるゲームがあります。ウィンドウサイズの変更は拙作の「WindowResizer」なんかで変更できるので試してみるとおもしろいかもしれません。ただ、このやり方でサイズを変更すると拡大したときにかなり画像が荒れるのが弱点です。
この方法ですが、どうせなので種明かしをすると「Direct3D(8以上)の描画を行うときに最終描画を行うPresentという処理でグラフィック側が勝手に拡大処理を行う」というものです。
プログラムがわかる人のために解説すると、Direct3D9で最終描画を行うPresentは次の定義を持っています。
HRESULT Present( CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion );
この中のpDestRectにおもしろい定義があり、ヘルプより「NULL の場合は、クライアント領域全体に転送されます。矩形が転送元クライアント領域に収まっていない場合、矩形は転送元クライアント領域に合わせてクリップされます」となっています。そのため、NULLを指定するとするとこの「クライアント領域全体」が「ゲームウィンドウ全体」の意味となりゲームウィンドウのサイズを外部から変更したときに拡大時のみ自動的にサイズ調整が行われる、という状態になります。おもしろいですよね。中にはこれを利用しているタイプのゲームもありますし。
年末なのでいろいろとやりたいことが
自身の部屋やPCに関する物理的、論理的掃除はほぼ終わっています。コミケは参加しない(という資金がない)のでとりあえず無視。いまは来年に備えていろいろと勉強しているところです。Fortranを使うよりもCを使った方が自分の場合は早いような気がするのですが、行列演算が一発でできるのがうらやましいです。C++なら複素数クラスやら行列クラスを作って演算を簡易化できるのでしょうが、それって許されるのでしょうか。
ちなみにバイクで雪道は絶対にやめましょう。滑るだけでは済みませんよ。試しで(車が通らない)とある山道を走ってみたのですが、滑るわ登らないわ下りはブレーキ効かないわバランスは保てないわ・・・という状態で自動車よりひどい状態でした。唯一自動車より良かったのが重量が軽いので雪にはまったとしても脱出できることくらいですが。そんな状況を作る時点で問題ありすぎですが。