如图,在(0,0,0)位置和(0,5,5)位置分别画了个茶壶,想在原点绘制x,y,z三条短线表示坐标轴,画出来却在左上角,画的坐标轴好像默认了左上角为原点,想请教原因。ps:视点位置(10,10,10),注视点位置(0,0,0),向上向量(0,1,0)。
另外,绘制段里,在不同的位置绘制了两次茶壶(见代码),为什么窗口最小化再恢复以后只剩一个了?(见图2)
        // 开始渲染
m_SceneManager.BeginRender();

pTeapot->DrawSubset(0);
// 换坐标
D3DXMATRIX mat;
D3DXMatrixTranslation(&mat,0.0,5.0,5.0);
m_SceneManager.GetDevice()->SetTransform(D3DTS_WORLD,&mat);
pTeapot->DrawSubset(0);
//
// 结束渲染
m_SceneManager.EndRender();

解决方案 »

  1.   

    画坐标短线的两句没有加到上面,附:CUSTOMVERTEX vertices[] =
        {
            { -20.0f, 0.0f, 0.0f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color
            { 20.0f, 0.0f, 0.0f, 1.0f, 0xffff0000, },        { 0.0f, -20.0f, 0.0f, 1.0f, 0xff00ff00, },
    { 0.0f, 20.0f, 0.0f, 1.0f, 0xff00ff00, }, { 0.0f, 0.0f, -20.0f, 1.0f, 0xff0000ff, },
    { 0.0f, 0.0f, 20.0f, 1.0f, 0xff0000ff, },
        }; m_pIDirect3DDevice->CreateVertexBuffer( 6*sizeof(CUSTOMVERTEX),
            0, D3DFVF_CUSTOMVERTEX,
    D3DPOOL_DEFAULT, &m_pvb, NULL );
    void* pVertices;
    m_pvb->Lock(0,sizeof(vertices),(void**)&pVertices,0);
    memcpy(pVertices,vertices,sizeof(vertices));
    m_pvb->Unlock();
            
           m_pIDirect3DDevice->SetStreamSource(0,m_pvb,0,sizeof(CUSTOMVERTEX));
    m_pIDirect3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
    m_pIDirect3DDevice->DrawPrimitive(D3DPT_LINELIST,0,3);