如题!急!!

解决方案 »

  1.   

    在OnTime里,旋转三角形,绘制到dc
      

  2.   


    我贴代码啦   帮忙看看是什么原因?
    void CControl3DCtrl::InitD3D()//初始化
    {
    m_pD3D = Direct3DCreate9(D3D_SDK_VERSION);
    D3DPRESENT_PARAMETERS d3pp;
    ZeroMemory(&d3pp,sizeof(D3DPRESENT_PARAMETERS));
    d3pp.Windowed = TRUE;
    d3pp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    d3pp.BackBufferFormat = D3DFMT_UNKNOWN;
    m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,m_hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3pp,&m_pDevice); m_pDevice->SetRenderState(D3DRS_LIGHTING,FALSE);
    m_pDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE);
    }
    void CControl3DCtrl::InitGeometry()//建模
    {
    float angle = m_nRotateY/180*PI;
    D3DXMATRIX matworld;
    D3DXMatrixRotationY(&matworld,angle);
    m_pDevice->SetTransform(D3DTS_FORCE_DWORD,&matworld); D3DXMATRIX matView; D3DXVECTOR3 m_Eye(0.0f,5.0f,3.0f);
    D3DXVECTOR3 m_At(0.0f,0.0f,0.0f);
    D3DXVECTOR3 m_Up(0.0f,1.0f,0.0f); D3DXMatrixLookAtLH(&matView,&m_Eye,&m_At,&m_Up);
    m_pDevice->SetTransform(D3DTS_VIEW,&matView); D3DXMATRIX matProj;
    D3DXMatrixPerspectiveFovLH(&matProj,PI/4,1.0f,1.0f,1000.0f);
    m_pDevice->SetTransform(D3DTS_PROJECTION,&matProj);}
    void CControl3DCtrl::SetupMatrices()//设置变换矩阵
    {
    CUSTOMVERTEX vertices[] = 
    {{ -1.0f, -1.0f, 0.0f, D3DCOLOR_XRGB(255,0,0) }, //点 A,红色 
    {  0.0f, 1.0f, 0.0f, D3DCOLOR_XRGB(0,255,0) }, //点 B,绿色 
    {  1.0f, -1.0f, 0.0f, D3DCOLOR_XRGB(0,255,255) }};//点 C,浅蓝  m_pDevice->CreateVertexBuffer(sizeof(CUSTOMVERTEX),0,D3DFVF_CUSTOMVERTEX,D3DPOOL_DEFAULT,&m_pVB,NULL);

    void *pVertice;
    m_pVB->Lock(0,sizeof(vertices),(void**)&pVertice,D3DLOCK_DISCARD);
    memcpy(pVertice,vertices,sizeof(vertices));
    m_pVB->Unlock();}
    void CControl3DCtrl::Render()//渲染函数
    {
    m_pDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,255),1.0f,0);
    m_pDevice->BeginScene(); SetupMatrices(); m_pDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
    m_pDevice->SetStreamSource(0,m_pVB,0,sizeof(CUSTOMVERTEX));
    m_pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,0,1); m_pDevice->EndScene();
    m_pDevice->Present(NULL,NULL,NULL,NULL);
    }//消息映射
    int CControl3DCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    if (COleControl::OnCreate(lpCreateStruct) == -1)
    return -1; InitD3D();
    InitGeometry();
    m_nRotateY = 0;
    SetTimer(1,40,NULL); return 0;
    }void CControl3DCtrl::OnTimer(UINT_PTR nIDEvent)
    {

    m_nRotateY += 2;
    Render(); COleControl::OnTimer(nIDEvent);
    }到底应该在哪里改??
      

  3.   

    你的Render里调用了SetupMatrices,但SetupMatrices函数是挂羊头卖狗肉,本来应该重新调整世界矩阵,干的却是设置顶点数据的活。