我正在尝试在Direct3D9上显示一个旋转的立方体。 我可以成功绘制它,但在旋转期间,不会绘制一些像素。我想在旋转过程中显示立方体的每个部分。每个面的大小为0.5f,并且它从点0,0,0旋转Pitch Yaw Roll。我试图禁用Z-Buffer或设置视口的高Z值但没有成功。有什么建议?哦,我在线框模式下渲染它。
编辑:我确认问题出在Z Buffer上。我试图在Z轴之间转换立方体,很明显视图介于0.0和1.0之间,但SetViewport不会改变它,我不明白为什么......
编辑:如果禁用ZBUFFER,顶点仍会被切割。我尝试使用参数(m,90,800 / 480,-0.1,100)使用此实现(http://pastebin.com/EVCRG6f7)设置新的投影矩阵,但问题仍然存在。
编辑:我尝试使用OpenGL相同的顶点和视图矩阵,我在Direct3D9上使用了我的立方体正确绘制。我用这些值初始化它: 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 );