游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1796|回复: 5

Mesh和画矩形的问题

[复制链接]

22

主题

92

帖子

94

积分

注册会员

Rank: 2

积分
94
QQ
发表于 2005-8-22 22:29:00 | 显示全部楼层 |阅读模式
有一个画矩形的类,使用D3D的顶点来实现的
有一个Mesh类,使用ID3DXMESH实现
问题是:如果画矩形函数和Mesh类中的渲染函数一起使用,如下:

//渲染物体到3D世界
DWORD CMesh::Render( void )
{
        if (m_pMesh != NULL)
        {
                for (DWORD j = 0; j < m_dwNumMaterials; j++)
                {
                        m_pD3DDevice->SetMaterial(&m_pMeshMaterials[j]);
                        m_pD3DDevice->SetTexture(0, m_pMeshTextures[j]);
        
                        m_pLocalMesh->DrawSubset(j);
                }
               
                return m_pLocalMesh->GetNumFaces();
        }
        return 0;
}
就会使画的矩形的颜色发生变化,白的变蓝的,灰的变黑的。
如果只调用画矩形函数,是完全正常的。
我猜想是Mesh类中的渲染函数改变了设备的渲染参数导致,可改了许久没有找出,望高手指教,谢谢。

8

主题

182

帖子

268

积分

中级会员

Rank: 3Rank: 3

积分
268
发表于 2005-8-23 11:45:00 | 显示全部楼层

Re:Mesh和画矩形的问题

画矩形后这样调用一下。
m_pD3DDevice->SetMaterial(纯白的材质);
m_pD3DDevice->SetTexture(0,NULL);

8

主题

182

帖子

268

积分

中级会员

Rank: 3Rank: 3

积分
268
发表于 2005-8-23 11:46:00 | 显示全部楼层

Re: Mesh和画矩形的问题

错了,应该是画mesh后这样调用。

13

主题

101

帖子

101

积分

注册会员

Rank: 2

积分
101
发表于 2005-8-23 11:50:00 | 显示全部楼层

Re:Mesh和画矩形的问题

你是先画矩形还是先画mesh啊? 我觉得如果先画矩形是不应该出现这样的问题的。
你画矩形的代码给我们看看阿。

22

主题

92

帖子

94

积分

注册会员

Rank: 2

积分
94
QQ
 楼主| 发表于 2005-8-24 10:36:00 | 显示全部楼层

Re:Mesh和画矩形的问题

HRESULT CGeometry9:rawFilledRect(float x1, float y1, float x2, float y2)
{
    VERTEX2D* pVertices;
       
    if( FAILED( m_pVBRect->Lock( 0, sizeof(VERTEX2D)*4, (VOID**)&pVertices, 0 ) ) )
        return E_FAIL;
       
    pVertices[0] = VERTEX2D( x1, y1, m_d3dColor );
    pVertices[1] = VERTEX2D( x2, y1, m_d3dColor );
    pVertices[2] = VERTEX2D( x1, y2, m_d3dColor );
    pVertices[3] = VERTEX2D( x2, y2, m_d3dColor );
    m_pVBRect->Unlock();
       
        //使用索引缓存
        VOID* pIndices;       
        static WORD wIndices[] = {0, 1, 2, 3, 2, 1};
       
        if( FAILED( m_pIBRect->Lock( 0, sizeof(wIndices), (VOID**)&pIndices, 0 ) ) )
                return E_FAIL;
        memcpy( pIndices, wIndices, sizeof(wIndices) );
        m_pIBRect->Unlock();

        m_pd3dDevice->SetFVF( D3DFVF_VERTEX2D );
        m_pd3dDevice->SetStreamSource( 0, m_pVBRect, 0, sizeof(VERTEX2D) );
        m_pd3dDevice->SetIndices( m_pIBRect );
       
        m_pd3dDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST,
                                                                                0,
                                                                                0,
                                                                                4,  // 顶点数
                                                                                0,
                                                                                2); // 两个三角列
        return S_OK;
}

22

主题

92

帖子

94

积分

注册会员

Rank: 2

积分
94
QQ
 楼主| 发表于 2005-8-24 10:49:00 | 显示全部楼层

Re:Mesh和画矩形的问题

hugp1973
高手,问题已经解决
我在测试还有什么其他问题
不同再问你,谢谢啦^_^
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-27 13:37

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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