游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2487|回复: 4

谁能帮我看一下这个问题呀!(代码) 画三角形

[复制链接]

6

主题

43

帖子

43

积分

注册会员

Rank: 2

积分
43
QQ
发表于 2003-11-4 21:18:00 | 显示全部楼层 |阅读模式
我用DIRECT9 SDK做的,程序可以成功运行,可以显示背景色,但不能显示出
三角形,D8和D9有些函数不太一样!


void CD3DWnd::InitD3D()
{
//        m_pD3D=Direct3DCreate8( D3D_SDK_VERSION )
        m_pD3D=Direct3DCreate9(D3D_SDK_VERSION);
        D3DPRESENT_PARAMETERS d3dpp;
        ZeroMemory(&d3dpp,sizeof(d3dpp));
       
        d3dpp.Windowed=true;
        d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD;
        d3dpp.BackBufferFormat=D3DFMT_UNKNOWN;
        if(FAILED(m_pD3D->CreateDevice(
                D3DADAPTER_DEFAULT,
                D3DDEVTYPE_HAL,
                m_hWnd,
                D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                &d3dpp,&m_pDevice)))
        {
               
        }
       


    m_pDevice->SetRenderState( D3DRS_LIGHTING, FALSE );
        m_pDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );

}
void CD3DWnd::Render()
{
        if(m_pDevice!=NULL){
        m_pDevice->Clear(
                0,NULL,D3DCLEAR_TARGET,
                D3DCOLOR_XRGB(0,0,255),
                1.0f,0);
        m_pDevice->BeginScene();
        //code
        this->SetupMatrices();
        m_pDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
        m_pDevice->SetStreamSource( 0, m_pVB, 0,sizeof(CUSTOMVERTEX) );
        m_pDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 1 );



        m_pDevice->EndScene();

        m_pDevice-&gtresent(NULL,NULL,NULL,NULL);
        }
}


int CD3DWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
        if (CWnd::OnCreate(lpCreateStruct) == -1)
                return -1;
       
        // TODO: Add your specialized creation code here
        this->InitD3D();
        this->InitGeometry();
        m_nRotateY=0;
        SetTimer(1,50,NULL);
        return 0;
}

void CD3DWnd::InitGeometry()
{

        CUSTOMVERTEX vertices[]={
                {-1.0f,-1.0f,0.0f,D3DCOLOR_XRGB(0,0,0)},
                {0.0f,1.0f,0.0f,D3DCOLOR_XRGB(0,255,0)},
                {1.0f,-1.0f,0.0f,D3DCOLOR_XRGB(255,255,0)}
        };
         
        m_pDevice->CreateVertexBuffer(
                        sizeof(vertices),
                        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();
}

void CD3DWnd::SetupMatrices()
{
        float angle=m_nRotateY*D3DX_PI/180;
        D3DMATRIX matWorld;
       
        D3DXMatrixRotationY(&(D3DXMATRIX)matWorld,angle);
        m_pDevice->SetTransform(D3DTS_WORLD,&matWorld);
        D3DXVECTOR3 eye(0.0f,3.0f,-5.0f);
        D3DXVECTOR3 lookat(0.0f,0.0f,0.0f);
        D3DXVECTOR3 up(0.0f,1.0f,0.0f);
        D3DMATRIX matView;
        D3DXMatrixLookAtLH(&(D3DXMATRIX)matView,&eye,&lookat,&up);
        m_pDevice->SetTransform(D3DTS_VIEW,&matView);
        D3DXMATRIXA16 matProj;
    D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f );
    m_pDevice->SetTransform( D3DTS_PROJECTION, &matProj );

}

void CD3DWnd::OnTimer(UINT nIDEvent)
{

        this->Render();
        m_nRotateY+=2;
        //::AfxMessageBox("asdfasdf");
        CWnd::OnTimer(nIDEvent);
}

24

主题

161

帖子

179

积分

注册会员

Rank: 2

积分
179
发表于 2003-11-4 23:11:00 | 显示全部楼层

Re:谁能帮我看一下这个问题呀!(代码) 画三角形

根本就没画

改一改把

24

主题

161

帖子

179

积分

注册会员

Rank: 2

积分
179
发表于 2003-11-4 23:15:00 | 显示全部楼层

Re:谁能帮我看一下这个问题呀!(代码) 画三角形

按错键了,重来
把这一段放到
void *pVertices;//这一句有毛病
m_pVB->Lock(0,sizeof(vertices),(void**)&pVertices,0);
memcpy(pVertices,vertices,sizeof(vertices));
m_pVB->Unlock();
下面一句之前
m_pDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 1 );
里面还有一些错误
建议好好看一下dx9带的例子或用向导生成一个三角形的新工程

6

主题

43

帖子

43

积分

注册会员

Rank: 2

积分
43
QQ
 楼主| 发表于 2003-11-5 19:32:00 | 显示全部楼层

Re: 谁能帮我看一下这个问题呀!(代码) 画三角形

哦,我知道什么错了,在定义视图的时候勿用了D3DMATRIX,实际上应该是D3DXMATRIX,看的我都想吐了,不知道这两者究竟有什么区别 [em7]

6

主题

100

帖子

105

积分

注册会员

Rank: 2

积分
105
发表于 2003-11-6 09:10:00 | 显示全部楼层

Re:谁能帮我看一下这个问题呀!(代码) 画三角形

晕呀,怎么都用dx,没人用opengl吗???
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-24 01:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表