游戏开发论坛

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

dx9中用d3d画直线的问题

[复制链接]

2

主题

3

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2003-12-9 08:39:00 | 显示全部楼层 |阅读模式
我想画一条有可以旋转的3d直线,可是画完了,在屏幕中却看不到
我是这么定义的
struct CUSTOMVERTEX3
{
  D3DXVECTOR3 position;
};
#define D3DFVF_CUSTOMVERTEX3 (D3DFVF_XYZ )
然后我打开了灯光,设置了材质
最后用

m_pDevice->DrawPrimitive(D3DPT_LINELIST, 0, 30 );画线
但是却看不到,谁来帮帮我。给段完整的简单画线的代码也行

13

主题

145

帖子

149

积分

注册会员

Rank: 2

积分
149
发表于 2003-12-9 09:38:00 | 显示全部楼层

Re:dx9中用d3d画直线的问题

看看DrawPrimitive的返回值。

1

主题

8

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2003-12-9 12:47:00 | 显示全部楼层

Re:dx9中用d3d画直线的问题

struct CUSTOMVERTEX3
{
  D3DXVECTOR3 position;

D3DCOLOR color;
};


#define D3DFVF_CUSTOMVERTEX3 (D3DFVF_XYZ!D3DFVF_DIFFUSE )

如果你非要使用灯光的话,还要加上一个法线向量分量,否则是无意义的。

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2003-12-9 15:01:00 | 显示全部楼层

Re:dx9中用d3d画直线的问题

我只是想知道
m_pDevice->DrawPrimitive(D3DPT_LINELIST, 0, 30 );
第三个参数定义的线长吗???

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2003-12-9 20:49:00 | 显示全部楼层

Re:dx9中用d3d画直线的问题

第三个参数不是线长,是个数

应该先 m_pDevice->SetStreamSource(...);
再         m_pDevice->SetFVF(....);
再         m_pDevice->DrawPrimitive(...);

别忘了这些要放在 m_pDevice->BeginScene();
和        m_pDevice->EndScene();   中间

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2003-12-9 21:09:00 | 显示全部楼层

Re:dx9中用d3d画直线的问题

#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)

struct CUSTOMVERTEX
{
        FLOAT x, y, z;      // 顶点坐标
        DWORD color;        // 顶点颜色
};

LPDIRECT3DVERTEXBUFFER9 lpVB;

CUSTOMVERTEX* pVertices = NULL;
m_pDevice->CreateVertexBuffer(2*sizeof(CUSTOMVERTEX),0,D3DFVF_CUSTOMVERTEX,
                D3DPOOL_DEFAULT,&lpVB,NULL);

lpVB->Lock(0,0,(void**)&pVertices,0);
pVertices[0].x=0.0f;
pVertices[0].y=0.0f;
pVertices[0].z=0.0f;
pVertices[0].color=0xffffffff;

pVertices[1].x=100.0f;
pVertices[1].y=100.0f;
pVertices[1].z=100.0f;
pVertices[1].color=0xffffffff;
lpVB->Unlock();

m_pDevice->Clear(0,NULL,D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
m_pDevice->BeginScene();
m_pDevice->SetStreamSource( 0, lpVB,0, sizeof(CUSTOMVERTEX) );
m_pDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
m_pDevice->DrawPrimitive( D3DPT_LINELIST,0,1);
m_pDevice->EndScene();

lpVB->Release();
lpVB=NULL;

我没测试,错了别骂我
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-4-22 16:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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