« おにゅうPCだよ~ん♪(その3) | トップページ | 買ってしまったよ!「IBM Refreshed PC」バッグ »

2008年2月16日 (土)

「Windows Vista」と「GeForce 8600」のコラボ不具合?

影やその他のを予めレンダリングしテクスチャーにしておく事は…
結構ある。

多分…。

で処理を作って試してみた所…
「Windows Vista」と「NVIDIA GeForce 8600」の組み合わせで
カリングがひっくり返る現象に遭遇…。

しかも、カリングを設定し直しても変化しない…。

「Windows 2000」と「NVIDIA GeForce 8600」の組み合わせでは、
発生しない…。

他の「Windows Vista / 2000 / 98」でも発生しない…。

どうやら固有のものらしい…。

つまりバグ!

だと思う…。(汗)

色々やってみた結果…
こんな所にクリアを入れると対処できる事が分かった…。

でも、対処療法なので本当に正しいかどうか不明…。

この他にもレンダリングターゲットサーフェイスとステンシルサーフェイスを
保持しておくと発生しない事を確認している。

ゲームなんかは、画面の大きさが固定なのが多いので保持しておくと思われる。

するとこの現象には、遭遇しない。

今回、画面の大きさを任意に変更できるようにした結果、
処理ごとに個別にレンダリングターゲットを
切り替えるようにした時に起きた不具合。

以下、対応済みの処理の骨格部分。

環境は、「Microsoft Visual Studio 6.0」と「DirectX 8」だよ。

// 描画用テクスチャーだよ
LPDIRECT3DTEXTURE8    RenderTexture;

void SubRendering( void )
{
    LPDIRECT3DSURFACE8    RenderTargetSurface, DepthStencilSurface;
    LPDIRECT3DSURFACE8    RenderSurface, DepthSurface;

    // デフォルトの設定をバックアップ
    d3dDevice->GetRenderTarget( &RenderTargetSurface );
    d3dDevice->GetDepthStencilSurface( &DepthStencilSurface );

    // レンダリングターゲットを作成
    RenderTexture->GetSurfaceLevel( 0, &RenderSurface );
    d3dDevice->CreateDepthStencilSurface( 256, 256, D3DFMT_D16, D3DMULTISAMPLE_NONE, &DepthSurface );

    // レンダリングターゲットを切り替え
    d3dDevice->SetRenderTarget( RenderSurface, DepthSurface );

    // レンダリング開始
    d3dDevice->BeginScene( );
    d3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB( 255, 0, 0 ), 1.0f, 0 );
    // ここでレンダリング。
    pMesh->DrawSubset( 0 );
    d3dDevice->EndScene( );

    // レンダリングターゲットを元に戻す
    d3dDevice->SetRenderTarget( RenderTargetSurface, DepthStencilSurface );

    // ※ここにクリアを付けると発生しない…。外せば発生する…。
    // ※何故かは、聞かないでくれ!
    d3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0, 0, 0 );

    RenderSurface->Release( );
    DepthSurface->Release( );
    RenderTargetSurface->Release( );
    DepthStencilSurface->Release( );
}

他の人に聞いたらレンダリングターゲットサーフェイスと
ステンシルサーフェイスを作り置きしているそうだ…。

期せずしてバグを回避している模様…。(汗)

とりあえず、解決したから良しとしよう♪

もしかしたらこのやり方が駄目なのかも…
だれか詳しい人教えてくださいませ…。

|

« おにゅうPCだよ~ん♪(その3) | トップページ | 買ってしまったよ!「IBM Refreshed PC」バッグ »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/108365/40137852

この記事へのトラックバック一覧です: 「Windows Vista」と「GeForce 8600」のコラボ不具合?:

« おにゅうPCだよ~ん♪(その3) | トップページ | 買ってしまったよ!「IBM Refreshed PC」バッグ »