やっと復帰。いやー、年を取るたびに直りにくさを実感してしまいます。
色々やろうかと思ってたけど、結局まる二日ストールして、結局31日になって
しまったり。洗濯したり掃除したりして終了。
そんな訳で今年を振り返り。あいも変わらずツマミ食いしては散らかした
という感じ。7月くらいから本物お仕事が忙しくなってきた事もあって、
その辺を境にコーディングはサボり気味になってたかも(^^;
Intuos3を買ったのも今年なんだけど、使い切れてないなぁという感じ。
ゲームはPS2用ソフトのオーディンスフィアを買ったのですが結局クリアできずに
放置。後はひたすらにPS3で鉄拳5DRばかり。そしてそれは今も継続中(^^;
振り返ればいつも通りです(^^; 来年もこんな感じでまったり行くんだろうなと
思います。
そんな訳で今年の更新はここまで。それでは良いお年を。
風邪悪化で起き上がる事ができず。30分Web巡回したら力尽きる
感じ。
風邪悪化で起き上がる事ができず。
仕事納めで早めに帰着。
体調不良継続で即死。
風邪で体調悪くて早めに帰着。
即死。
早くも無く遅くも無く。
SPEコードをPS3の実機でテストしてみたり。
SPEコードは関数ではなく、SPEにロードする実行ファイルの形で
コンパイルします。つまるところmain()から実行が開始される
ようなイメージになってます。なので、実はコマンドプロンプト
からも実行できます。そして、SPE専用の spu-gdbが用意されて
いますので、デバッガも使用する事ができます。
そんな訳で次のようなコードを書いてみました。
#include <stdio.h> #include <spu_intrinsics.h> #include <spu_mfcio.h> #define MAX_BUFSIZE (4096) unsigned char LS[MAX_BUFSIZE] __attribute__((aligned(128))); int main(unsigned long long spe, unsigned long long argp, unsigned long long envp) { int i,j ; vector unsigned int v = (vector unsigned int){ 0x00000001, 0x00000002, 0x11111111, 0x02020202 } ; vector unsigned int *pt ; pt = (vector unsigned int*)&LS[0] ; pt[0]=v ; for( i=0 ; i<16 ; i++ ) printf("%02x ",LS[i]) ; printf("\n") ; for( i=0 ; i<8 ; i++ ){ pt[0]+=v ; } for( i=0 ; i<16 ; i++ ) printf("%02x ",LS[i]) ; printf("\n") ; return(0) ; }
[tane@localhost cell_test]$ spu-gcc -O2 spe_unit_test.c [tane@localhost cell_test]$ ./a.out 00 00 00 01 00 00 00 02 11 11 11 11 02 02 02 02 00 00 00 09 00 00 00 12 99 99 99 99 12 12 12 12
(gdb) info registers r0 {uint128 = 0x0000030c000000000000000000000000, v2_int64 = {0x30c00000000, 0x0}, v4_int32 = {0x30c, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x30c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x3, 0xc, 0x0 <repeats 12 times>}, v2_double = {0x0, 0x0}, v4_float = {0x0, 0x0, 0x0, 0x0}} :出過ぎるので省略 r127 {uint128 = 0x00000000000000000000000000000000, v2_int64 = {0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v2_double = { 0x0, 0x0}, v4_float = {0x0, 0x0, 0x0, 0x0}} id 0x6 6 pc 0x30c 0x30csp 0x3ff30 0x3ff30 fpscr 0x00000000000000000000000000000000 0 srr0 0x0 0 lslr 0x3ffff 262143 decr 0x7d19f380 2098852736 decr_status 0x0 0 (gdb) print/x &LS $1 = 0xf00 $3 = {0x1, 0x2, 0x11111111, 0x2020202} (gdb) print/x pt[0] $4 = {0x9, 0x12, 0x99999999, 0x12121212}
早くも無く遅くも無く。
SPEプログラミングの流儀を勉強。
SPEの実行バイナリはPPEの実行バイナリとは別に用意する必要があります。
コマンドプロンプト上で最初に起動をかけるのはPPEの実行バイナリで、
PPEの実行バイナリ内で SPEの実行バイナリのロードとSPEプログラムの
実行を制御するという感じになります。これらSPE用プログラムの
ローディングや実行制御は ライブラリlibspe に一通り用意されており、
おおよそ雛形に沿ってコーディングすれば良いようです。
SPEは直接メモリをアクセスする事ができません。SPEがアクセスできるメモリ領域は
Local Strage(LS)と呼ばれる256KBのローカルメモリのみです。その為、
昼過ぎ起床。
ちょろりお出かけ。ゲーセンに寄ったり。
空いていたので「DEATH SMILES」をやってみたり。見た目の印象よりは遊びやすい
気も。気のせいかも知れませんが。あと「虫ひめさまふたり デスレーベル」。
人がやっているのを鑑賞。これぁ厳しすぎてダメかも。そして 鉄拳6を
一度だけやってみたり。対戦相手が強いのもあるのですが、ジョイスティック
ではさっぱり技が出せず。そんな訳でストレート負け。遠めで見ると
ほとんど判らないのですが、テクスチャとかHD用になってるって感じで、
PS3の鉄拳5DRで慣れた目で見ても、やっぱ奇麗です。
リモートマシンのファイルをWindowsのMeadowから編集する方法が無い
か調べてみたり。sshが使用できればOKそうなのですが、うまくいかなかったので、
PuTTY
というソフトの中の、plink.exeという実行ファイルと、Emacsパッケージの
TRAMPを使ってリモートファイル編集する方法を使ってみたり。
既にTRAMPが入っていれば、後の方法は簡単で、plink.exeをパスの通った場所に
置いた後でMeadowを起動し、
C-x,C-fのファイルオープンで、「/plink:tane@192.168.1.x:~/foo.txt」
と入れれば、192.168.1.xにユーザtaneでログインして ホームディレクトリ
下のfoo.txtを開くという形になります。
.emacsの中に「(setq tramp-default-method "plink")を加えれば、
最初の「plink:」は不要で、user@hostから始めれば良いようです。
少し開くのに時間がかかりますが、複数のターミナルウインドを行ったり来たり
する必要が無いので楽チンです。
で、PS3-Linuxでgdcをビルドしてみたり。折角なので、Subversionで持ってきてあった
少し古いDMD2.0ベースのgdcをビルドしてみたり。説明書通りにパッチをあてた
後にmake。でも cc1d のリンクでエラー。
d/d-lang.glue.o: In function `d_init': /home/tane/develop/dlang/gcc/gdc/gcc-4.0.3/build/gcc/../../gcc/d/d-lang.cc:376: undefined reference to `rs6000_cpu_cpp_builtins' collect2: ld はステータス 1 で終了しました
/usr/lib64/libstdc++.so.6: undefined reference to `_Unwind_GetIPInfo@GCC_4.2.0'
起きたら夕方。寝すぎ。
CellSDKのインストールはエラー無く終了していたり。てか、クロスのSDKの
インストールにあれだけ失敗してたのは何だったのだろう?
でも、どこにインストールされているかがよく判らず、クロスSDKと同じ
/opt/cellの下を探していたのですが見つからず。で、どうやら普通に
/usr/binとかにインストールされているらしい。
うっかり yum updateを実行したらさっぱり終わらず。それにしても、
yumってなんであんなにメモリ食うの?たかがパッケージインストール
で時間もかかり過ぎるし、256MB以上のメモリが必要ってのも全く納得がいきません。
そういやバックアップを戻す話。kbootコマンドプロンプトからps3-boot-game-osで
XMBの起動に戻ります(もし立ち上がらなくなった場合は、PowerOFF状態から、
長押しでPowerONすると強制的にXMB起動になります)。で、リストアで戻して
完了。全て元通り。場合によって大容量メディアが必要というのが問題と
言えば問題かも知れませんが、難しいところです。
ちょろりサンプルを見ながらSPEを使用したプログラムを書いてみたり。
でも、ちょろっと書いただけでは全く使えてない感じに。
一つはPPEとSPEはメモリのコヒーレンシをハードで保障していないようなので、
そこを意識したプログラミングを行う必要がありそう。次にSPEを使用する
にはlibspeというライブラリを使用するのですが、それとは別にthreadを
使用してlibspeの関数群を並列実行させるコードにする必要があるようです。
コンパイルオプションを積むだけで自動的にSPEを使った実行バイナリが
生成できる訳では無いのが難しさを感じるものの、逆にチューニングの
し甲斐があるという感じでしょうか。チューニング後はライブラリ化できれば、
以降、楽に開発できるようになっていくという感じなのかも。
あまりにもメモリを食いすぎるので、Xが立ち上がらないように/etc/inittabを
書き換えてみたり。これで、起動直後の使用メモリは160M、SWAP使用は0
となり、普通に使うには十分という感じになってみたり。あぁでも、
SWAPが使えるという事はMMUが実装されている訳で、実際のゲームで
使っているかどうかは別にして、使う事が可能ってのは地味に凄い
事かも。
そういや、Folding@homeのアップデートが入っていたり。オートパワーオフ
とBGM機能が追加された模様。
昼ごろ起床。
唐突ですが、PS3にLinuxを入れてみる事にしたり。その為の材料を
購入しに秋葉ヨドに出かけたり。
[tane@localhost ~]$ cat /proc/cpuinfo processor : 0 cpu : Cell Broadband Engine, altivec supported clock : 3192.000000MHz revision : 5.1 (pvr 0070 0501) processor : 1 cpu : Cell Broadband Engine, altivec supported clock : 3192.000000MHz revision : 5.1 (pvr 0070 0501) timebase : 79800000 platform : PS3 [tane@localhost ~]$ uname -a Linux localhost.localdomain 2.6.23.1-42.fc8 #1 SMP Tue Oct 30 13:05:49 EDT 2007 ppc64 ppc64 ppc64 GNU/Linux
camera { right < 16/9, 0, 0>} #local p=function{pattern{granite}}isosurface{function{y-.3+p(x/10,9,z/10)}contained_by{box{-9,9}}}light_source{<3,.5,8>,1}media{scattering{2,<3,2,1>/9}emission<.3,.4,1>density{function{.1/(y+1)}}}sphere{0,1pigment{granite poly_wave 4}scale-7*y+9hollow}
Image Resolution 1920 x 1080 ---------------------------------------------------------------------------- Pixels: 2075520 Samples: 2130744 Smpls/Pxl: 1.03 Rays: 2130744 Saved: 0 Max Level: 1/5 ---------------------------------------------------------------------------- Ray->Shape Intersection Tests Succeeded Percentage ---------------------------------------------------------------------------- Isosurface 45443375 3290961 7.24 Isosurface Container 45443375 45443375 100.00 Isosurface Cache 941523 0 0.00 Sphere 45443375 45443375 100.00 ---------------------------------------------------------------------------- Isosurface roots: 45443375 Function VM calls: 1063690256 ---------------------------------------------------------------------------- Calls to Noise: 6134615952 Calls to DNoise: 10 ---------------------------------------------------------------------------- Media Intervals: 2130744 Media Samples: 42195787 (19.80) Shadow Ray Tests: 86625262 Succeeded: 1963770 ---------------------------------------------------------------------------- Smallest Alloc: 9 bytes Largest Alloc: 38428 bytes Peak memory used: 407414 bytes Total Scene Processing Times Parse Time: 0 hours 0 minutes 0 seconds (0 seconds) Photon Time: 0 hours 0 minutes 0 seconds (0 seconds) Render Time: 1 hours 10 minutes 52 seconds (4252 seconds) Total Time: 1 hours 10 minutes 52 seconds (4252 seconds)
Image Resolution 1920 x 1080 :中略 Total Scene Processing Times Parse Time: 0 hours 0 minutes 0 seconds (0 seconds) Photon Time: 0 hours 0 minutes 0 seconds (0 seconds) Render Time: 0 hours 34 minutes 53 seconds (2093 seconds) Total Time: 0 hours 34 minutes 53 seconds (2093 seconds)
早くも無く遅くも無く。
CellSDKのインストール。何度もリトライをしてやっとインストールする
事ができました。
簡単なprintf("hello world\n");のCプログラムをコンパイル。
[tane@localhost cell]$ ppu-gcc -O2 test.c [tane@localhost cell]$ ppu-objdump -d a.out | head a.out: file format elf64-powerpc Disassembly of section .init: 00000000100004e0 <._init>: 100004e0: 7c 08 02 a6 mflr r0 100004e4: f8 01 00 10 std r0,16(r1) 100004e8: f8 21 ff 91 stdu r1,-112(r1) 100004ec: 48 00 01 09 bl 100005f4 <.call_gmon_start>
ELF Header: Magic: 7f 45 4c 46 02 02 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2's complement, big endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: EXEC (Executable file) Machine: PowerPC64 Version: 0x1 Entry point address: 0x1009dc30 Start of program headers: 64 (bytes into file) Start of section headers: 674752 (bytes into file) Flags: 0x0 Size of this header: 64 (bytes) Size of program headers: 56 (bytes) Number of program headers: 5 Size of section headers: 64 (bytes) Number of section headers: 36 Section header string table index: 33
早くも無く遅くも無く。
先日のSDKインストールは朝になっても終わってなかったり。しかも
帰ってから見たら、エラーで停止してたり。
仕方ないのでもう一度。やっぱり回線が細いらしく、ちっともダウンロード
が終わらないという感じ。またこのまま待つしかないという感じか?
それにしても、SDKを入れるのに一体何日かかってるんだ?(^^;
久々に鉄拳。少し勝てたり。
早くも無く遅くも無く。
先日立ち上がらなかったWings3Dの更新版が来てたり。とりあえず
起動はOK。今回のバージョンから、POVへのExporterが標準装備
されたようなのですが、ずっこけて動かず。
再コンパイルしたバージョンでもダメっぽい予感。
今まではKaios氏の作成したプラグインをずっと使っていたのですが、
Kaios氏のホームページが消えた為、知る人ぞ知るプラグインに
なってしまっているのが現状です。Erlangの本を買ってみた事
だし、標準装備版のPOVプラグをいじってみようかしら?
Fedora8インストールの続き。結局、GUIインストーラーを使うと
途中でハング状態に陥る為、テキストインストーラーで入れて
やっと立ち上がりました。えーと、何故Fedoraをインストール
していたのか忘れるくらいの状況なのですが、CellSDKを
使うという本来の目的にやっと進めるかも。
そんな訳で、yumのアップデートを入れたり、ホームディレクトリを
バックアップから戻したりして、やっとこCell-SDKのインストール。
ツールをIBMのサイトからダウンロードするには、まずサインアップを
する必要があるのですが、そこが一番面倒臭い感じ。サインアップを
済ませてダウンロードページに辿り着けば、ISOイメージのファイル 2個と
rpmファイル1個をダウンロードして、同じページの「Installation Instructions」
の通りにやれば yumを使ってネットワークからダウンロードされると
いう感じのようです。何故か回線が細くてなかなかダウンロードされない
ので、とりあえずほっぽらかして寝る。
遅めに帰着。
Fedora8のインストール。ほっぽらかしていたら、ファイルが見つからん
などとエラーをこいて止まってました。リトライしたら再開したので
またそのままほっぽらかしで仕事に出てたのですが、なにやら固まった
状態で動かなくなっていたり。
しかたなくリブート。それにしても、Fedora6の時もそうでしたが、
Fedoraのインストールって絶対一回以上失敗するのはなんで?
PS3のファームアップデート。今回のVer2.10の目玉の一つはwmvを再生
できるようになった事でしょう。
以前は PS3がwmvを知らない為に
用事にならなかったWindows Media Playerを使ったDLNAサーバーも、
問題無し。ただしビデオはwmvしか見せられませんが。
また、以前見つけた
ハイデフのwmvファイルの再生を試したり。
我が家のPC(P4-3.02GHz)だとつっかかる所があったのですが、
全くストレス無く再生できてみたり。発売されてから随分時間の
経つPS3ですがここにきてやっと使い勝手が良くなってきたように
思います。
早くも無く遅くも無く。
Fedoraのアップグレード。結局、LVMを使っているFC6をFedora7にアップグレード
するのはバグっててダメという事らしいので、Fedora8にアップグレードする
という暴挙に出ていました。とりあえず、アップグレードは成功して、めでたく
立ち上がるようになったのですが、一度rebootすると ディスクが死んでしまい
ましたorz。とりあえず立ち上がりはするものの、swap割り当てが0の為、
yumすらまともに動作できず。
多分壊れたのは、以前買った怪しい
ジャンク品のHDDだと思われ。どうしようもないので、あきらめてFedora8を
再インストールする事に決定。うーむ、ちょろっとCellSDKを使ってみたかった
だけなのに大掛かりな事になってる所がトホホくせぇ。
AM中に起床。
Fedoraのアップグレード続き。yum upgradeは終了していたので、リブート。
でもカーネルパニックで立ち上がらず。
Kernel panic: No init found. Try passing init= option to kernel.どうやらFedora7では、/dev/hd* というデバイスが無くなって、/dev/sd* に 置き換えられているという事らしい。一旦、FC6のカーネルに切り替えて設定など を確認してみました(ここで立ち上がらなかったらアウトなのですが、 一応大丈夫でした)。
title Fedora (2.6.23.8-34.fc7) root (hd0,0) kernel /vmlinuz-2.6.23.8-34.fc7 ro root=/dev/VolGroup00/LogVol00 rhgb quiet initrd /initrd-2.6.23.8-34.fc7.img
/usr/sbin/vgcreate VolGroup99 /dev/sda /dev/sdb
起きたら午後もいい時間。
そういや、12月のアップデートで庭に出る事のできるようになった
「まいいつ」ですが、空が何故か曇っていたり。確かに今日は実際の天気も少し
曇り気味なのですが、何かしら連動してたりするのかしら?
ちょいと遠出して池袋のジュンク堂まで。仕事関係の本を探すついでに
少し見回ったり。で、「Erlang入門」なる本を見つけて思わず買って
しまったり。本の帯には「マルチコア時代の並列処理言語Erlangを学ぼう!」
と書かれていたのですが、TANE的にはWings3Dの開発言語という認識
しか無かったりする訳ですが(^^;。
あと、Interface誌1月号を何気に手に取ったところ、
PS3のCPUであるCBE(Cell Broadband Engine)を使って、ソフトを書く記事が載って
いたり。シミュレーターを使うとかクロス環境でコンパイルするとか、
興味深い内容だったのでこれもお買い上げ。
帰ってからCBEのSDKの記事を読んだり。IBMのalphaWroksのサイトを
見てみると、SDK-3.0というのがリリースされていて、それを使うには
Fedora7が必要だという事らしい。そんな訳でFedora6→7にアップグレード
するところから始める事に。うむー。
Fedoraのアップグレードをやってる最中に先週買ったままだった「カーズ」を観たり。
お約束の要素がちりばめられているのですが、全てのネタ振りを最後にきっちり
押さえてるところは流石です。普通に面白かったです。
Fedoraのアップグレードは終わりそうにないのでほっぽらかし。
飲み会から帰って眠くて死亡。
早くも無く遅くも無く。
ツールチップの話。上手くツールチップの表示できるCのサンプルと比べ
ながら調べてみたところ、原因が判ってみたり。
ツールチップを表示するのには、CreateWindowEX()にTOOLTIPS_CLASSを使って
生成した後、TOOLINFOでツールチップに対する情報を設定した変数への
ポインタをSendMessage()でツールチップのHWNDに送るという手順に
なります。このとき、各種設定を行うTOOLINFO構造体のサイズは、
Cの場合、
typedef struct tagTOOLINFOW { UINT cbSize; UINT uFlags; HWND hwnd; UINT uId; RECT rect; HINSTANCE hinst; LPWSTR lpszText; }
struct TOOLINFOW { UINT cbSize; UINT uFlags; HWND hwnd; UINT uId; RECT rect; HINSTANCE hinst; LPWSTR lpszText; LPARAM lParam; void* lpReserved; }
const size_t TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof, TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof, TTTOOLINFOA_V2_SIZE = TOOLINFOA.lpReserved.offsetof, TTTOOLINFOW_V2_SIZE = TOOLINFOW.lpReserved.offsetof, TTTOOLINFOA_V3_SIZE = TOOLINFOA.sizeof, TTTOOLINFOW_V3_SIZE = TOOLINFOW.sizeof;
早くも無く遅くも無く。
最も簡単そうなツールチップを表示する部品クラスを作って
いるのですが、何故かうまく表示されなくて悩んでみたり。
早くも無く遅くも無く。
先日のコンパイルエラーの話。
クラス Foo1 を継承してクラス Foo2 を作ったのですが、そのクラス Foo2 を
クラス Foo1の中で使おうとして、クラス定義が衝突してみたり。
冷静に考えてみますに、自分の子孫の機能を自分自身に取り込むって
のは変な話な訳で。そこんところを直したらコンパイルは大丈夫
になったり。でも、肝心の動きの方が思い通りにならず。
鉄拳。勝って負けてイーブン。
早くも無く遅くも無く。
先日仕入れた「ONEPIECE(48)」を読んだり。ウソップがすげぇ。
鉄拳。少し勝ち点を取り戻してなんとか六段に返り咲き。ぴひゅー。
ちょろりコーディング。んー?何故かコンパイルエラー。
AM中に起床。
ちょろりお出かけ。ちょいと本を探しに出たのですが、目的の物は
見つからず。全然関係無いですが、「レミーのおいしいレストラン」と
ついでに「カーズ」のBlu-rayディスクを買ってみたり。
とは言っても、PS3とディスプレイを買った時のヨドバシポイントの残りで
ゲットしたので支払いは無し。他、本屋でマンガの新刊など購入して終了。
そんな訳でレミーの方を観たり。PIXERの映画はMr.インクレディブルのDVDを
観たのが最後なので、約2年半ぶりって
感じ。解像度の点を引いてもネズミ群のフサフサ感や水の表現、グラスにワインを
注ぐシーンなど、少し前だと使ってるだけでスゲーという技術も、随分と普通に
使われているように思いました。ネズミが料理をするって設定は少々無茶な感じ
がしなくもありませんでしたが、直接料理をする訳では無いってのが見所だったかも。
普通に面白かったと思います。
因みに、邦題は「レミーの...」ですが、原題は「RATATOUILLE」のようです。
実は原題のタイトルは本編の中で出てくるキーとなる料理で、そこに
かけているようなのですが、邦題ではそれが全く通じない感じになってる
かも。でも、日本では「RATATOUILLE」という
料理名自体が馴染みの無いものだと思いますので、「レミーの...」の方が
判りやすいかも。
で、コメンタリーも観たり。BDのためかどうかは判りませんが、コメンタリーが
全て日本語吹き替えされていたり。それはさておき、今回のコメンタリーでは、CG技術の
話が殆ど出てこなかったように思います。逆にモーションや演技の話が非常に
多く出てきてました。実際、「動き細けぇー」って感じに思ったので、
今まで以上に力を入れたんだろうなと思われます。それにしても、製作
開始は随分前のようで、完成までに時間がかかったみたいですが、特典映像に
入ってた製作風景の中に2007年のタイムスタンプの入った仮映像が映っていたりと、
ギリギリまで作っていたっぽい感じがしました。いつもそういうもんなのかしら?
起きたら夕方。寝すぎ。
コーディング。やっと原因が判ってみたり。
もともとの現象は、レバーコントロールの中に自作のGDIウインドを
はめ込んだところ、何故かレバーコントロールの表示がうまくできたり
できなかったりするというものでした。
で、コード自体をどうしていたかと言うと、親ウインドでWM_SIZEを受け取ると、
子となるレバーコントロールのHWNDにMoveWindow()でサイズ変更を通知してました。
このとき、親ウインド配下にはレバーコントロール以外にも子ウインドが
いくつか存在しており、これらにも同様にサイズ変更を通知してました。
怪しい動きをしていたときにどうしていたかと言うと、
子ウインドのHWNDをキーとしたDの連想配列を使用して、サイズ変更を通知
したいHWNDのリストを作ってました。取り出すのには、.keysプロパティを
使ってHWNDの一覧を作るという感じです。で、ここに問題がありました。
.keysで取り出したHWNDの一覧は、配列のキーとして登録された順番とは
何も関係無い順番で取り出されます。サイズ変更メッセージを送る順番が
思った順と狂ってしまった場合に、見た目が変になるという感じだった
ようです。で、描画順番を保障するようにしたところ、必ず思惑通りの
描画になってみたり。ふーむ。
今回、結果的にPAINTSTRUCTをstatic宣言しなくても大丈夫な感じになって
しまったのですが、結局、static宣言が関係あったのかなかったのかが
はっきりしていない為、今後も注意して見る必要がありそう。
ちょっとコードを整理したり。
早くも無く遅くも無く。
コーディング。タイミングの方を疑って、ウインド生成の方法を
変えてみたり、メッセージを送る手順を変えてみたり。
PAINTSTRUCTはstatic宣言してもしなくても関係無い感じになってみたり。
色々試してみたところ、どうやらレバーコントロールのウインドリサイズ
を行わなければ(最初に決めたサイズのままなら)大丈夫な予感がし始めてみたり。
早くも無く遅くも無く。
BeginPaint, EndPaintを、外付けのC関数でラップして、PAINTSTRUCTで宣言
される変数もCの関数内の領域を使ってみるようにしてみたり。でも、あんま動きに違い
は無い感じ。そもそもPAINTSTRUCT宣言によって確保した変数のポインタ
は一切変化していないので、PAINTSTRUCTの問題ではないような気がしてきたり。
起動の度に期待通りに動いたり動かなかったりするので、
何かしらWindowsの動作タイミングと関係がありそうな予感。うーむ。
早くも無く遅くも無く。
今日の鉄拳。イーブンくらい。
ちょろりコーディング。普通に static PAINTSTRUCTを使って描画する
ウインドをレバーコントロールに入れると、何故か動きが変になったり。
static宣言の有無で動きが変わるようなので、いよいよ
PAINTSTRUCTを使うときに何故かstatic宣言しておかないとうまく
描画されない時があるという原因を調べないとダメかも。
早くも無く遅くも無く。
今日の鉄拳。何故か通信状態が悪くて対戦できず。
早くも無く遅くも無く。
今日の鉄拳。調子良くて勝ち点を取り戻してみたり。
ちょろりコーディング。
AM中に起床。
ちょろりコーディングしたり、鉄拳で新しいコンボを練習したり。
ちょろりおでかけ。鉄拳6を見たり。全面ハイデフ筐体に入れ替わって
いたり。PS3の鉄拳5DRを見慣れてしまっているせいか、画面のクリアさ
はそんなに驚く要素ではなくなっていたのですが、ハイデフ表示スペック
をフルに使って、モデリングなんかは随分細かい所まで作り込んである
なぁという感じ。今日見てる中では新キャラを使う人は居なかったり。
PS3で遊べるようになるのが今から楽しみなのですが、鉄拳5の実績から言うと、来年の
夏前に出れば良いかなって感じかも。
プロレスのハッスル。今までどういうものかよく判らなかったのですが、
ここ最近 TV東京で試合の模様や深夜番組などが放送されるようになり、
なんとなくどういうものか判ってみたり。ショーに徹しているという事を
踏まえて観ると、意外と面白くて思わず見てしまうというのが正直な感想です。
プロレス技などしっかり出す所は出しているので、見せ場はきっちりしている感じに
思います。
起きたら夕方。寝すぎ。
TV観たり、Web巡回して一日終了。
今日の鉄拳。勝ち点を取り戻して五段に返り咲き。