1

Direct3D9 で回転する立方体を表示しようとしています。正常に描画できますが、回転中に一部のピクセルが描画されません。回転中に立方体のすべての部分を表示したいと思います。各面のサイズは 0.5f で、ポイント 0、0、0 から Pitch Yaw Roll で回転しています。Z バッファを無効にするか、ビューポートの Z 値を高く設定しようとしましたが、成功しませんでした。何かアドバイス?あ、ワイヤーフレームモードでレンダリングしてます。 切り絵

編集: 問題が Z Buffer にあることを確認しました。Z 軸の間で立方体を変換しようとしましたが、ビューが 0.0 と 1.0 の間であることは明らかですが、SetViewport はそれを変更せず、理由がわかりません...

編集:ZBUFFERを無効にしても、頂点はまだカットされています。パラメータ(m、90、800 / 480、-0.1、100)を使用 して、この実装( http://pastebin.com/EVCRG6f7 )で新しい射影行列を設定しようとしましたが、問題は解決しません。カット画像2

編集: Direct3D9 で使用したのと同じ頂点とビュー マトリックスを OpenGL で試したところ、キューブが正しく描画されました。これらの値で初期化しています:

                m_pp.BackBufferWidth            = width;
                m_pp.BackBufferHeight           = height;
                m_pp.BackBufferFormat           = D3DFMT_X8R8G8B8;
                m_pp.BackBufferCount            = 0;
                m_pp.MultiSampleType            = D3DMULTISAMPLE_NONE;
                m_pp.MultiSampleQuality         = 0;
                m_pp.SwapEffect                 = D3DSWAPEFFECT_FLIP;
                m_pp.hDeviceWindow              = hWnd;
                m_pp.Windowed                   = !fullscreen;
                m_pp.EnableAutoDepthStencil     = TRUE;
                m_pp.AutoDepthStencilFormat     = D3DFMT_D24S8;
                m_pp.Flags                      = 0;
                m_pp.FullScreen_RefreshRateInHz = (fullscreen) ? 60 : 0;

                p_device->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );
                p_device->SetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID );
                p_device->SetRenderState( D3DRS_LIGHTING, FALSE );
                p_device->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
                p_device->SetRenderState( D3DRS_ALPHATESTENABLE, FALSE );
                p_device->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
                p_device->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
                p_device->SetRenderState( D3DRS_SCISSORTESTENABLE, FALSE );
                p_device->SetRenderState( D3DRS_ZENABLE, TRUE );
4

0 に答える 0