Path: chuka.playstation.co.uk!news1.scei.co.jp!usenet From: Shigeru Kobayashi Newsgroups: playstation.ny.program.questions Subject: [Q] =?iso-2022-jp?B?GyRCO0RBfCQ9JE4jMhsoSg==?= Date: Sat, 02 Aug 1997 11:49:36 +0900 Organization: PlayStation Net Yarouze Lines: 62 Message-ID: <33E2A040.A96980EA@inetc.roland.co.jp> NNTP-Posting-Host: 133.111.200.223 Mime-Version: 1.0 Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 4.0 [en] (Win95; I) X-Priority: 3 (Normal) 小林です 以前こちらで質問しました残像ですが、なんとか実現できました。お恥ずかし い限りではありますが、とりあえずソースはこんな感じです(関連する部分だ けです)。 short *p; { actbuf = GsGetActiveBuff(); GsSetWorkBase((PACKET *)GpuPacketArea[actbuf]); GsClearOt(0,0,&worldot[actbuf]); //残像処理 setRECT(&rc, 0, 0, 128, 128); //転送元矩形領域の設定 StoreImage(&rc, (u_long *)0x80090000); for( p = 0x80090000; p < 0x80098000; p++ ){ *p = *p | (1<<15); } setRECT(&rc, 320, 256, 128, 128); //転送先矩形領域の設定 LoadImage(&rc, (u_long *)0x80090000); //残像用 bgspr の登録 GsSortSprite(&bgspr[2],&worldot[actbuf],4); //ノンブロック関数の終了待ち DrawSync(0); //垂直同期割り込みを待つ VSync(0); //ダブルバッファの切り替え GsSwapDispBuff(); GsSortClear(bg_r, bg_g, bg_b, &worldot[actbuf]); //GPUに描画を開始させる GsDrawOt(&worldot[actbuf]); } これで後は透明の bit を立てた Sprite を背景用に設定しています。しかし、 とりあえずできたもののいくつか問題が出てきました。 1) この方法で描画すると 128 * 128 くらいの大きさを処理する分にはいいの ですが、それを超えるとあきらかに処理が追いつかなくなってしまいます。 2) 今のところこれで動いているようですが、StoreImage などのノンブロック 関数の処理終了は特に感知しなくとも大丈夫なのでしょうか。 自分で思い付いた方法としてはこの様な感じなのですが、もっといい方法など ありましたらよろしくお願いいたします。 Shigeru Kobayashi kotobuki@inetc.roland.co.jp