首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

direct3d 三角

2012-07-28 
direct3d 三角形好久没有来CSDN了,有个问题请教各位大哥,我利用direct3D创建了一个三角形,代码如下(由于参

direct3d 三角形
好久没有来CSDN了,有个问题请教各位大哥,我利用direct3D创建了一个三角形,代码如下(由于参数太长,为了方便,我换成了具体的数字,在我的程序中,三角形是能够建立成功的)我现在想把三角形填充成红色或者其他颜色,请问各位大哥 我具体该怎么做?O(∩_∩)O谢谢
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_TEX1)
struct CUSTOMVERTEX1
{
  FLOAT x, y, z;
  DWORD color;
};
LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL; //顶点缓冲区对象
int x=0; 

if(x==0)
 {
  vertices9[0].x = 6.0f; 
  vertices9[0].y = 6.0f;
  vertices9[0].z = 0.0f;
  vertices9[0].color = 0xff0000ff;//蓝色

  vertices9[1].x=4.5f;//"\"
  vertices9[1].y=6.0f;
  vertices9[1].z = 0.0f;
  vertices9[1].color = 0xff0000ff;//蓝色
 
  vertices9[2].x=1.5f;
  vertices9[2].y=3.0f;
  vertices9[2].z = 0.0f;
  vertices9[2].color = 0xff0000ff;//蓝色

  vertices9[3].x = 6.0f; 
  vertices9[3].y = 6.0f
  vertices9[3].z = 0.0f;
  vertices9[3].color = 0xff0000ff;//蓝色

  vertices9[4].x=4.5f;//"\"
  vertices9[4].y=6;
  vertices9[4].z = 0.0f;
  vertices9[4].color = 0xff0000ff;//蓝色

  vertices9[5].x=1.5f;
  vertices9[5].y=3.0f;
  vertices9[5].z = 0.0f;
  vertices9[5].color = 0xff0000ff;//蓝色

 //创建顶点缓冲区
  pd3dDevice->CreateVertexBuffer( 6*sizeof(CUSTOMVERTEX1), 0, D3DFVF_CUSTOMVERTEX1, D3DPOOL_DEFAULT, &g_pVB1, NULL);

  //填充顶点缓冲区
  g_pVB1->Lock(0, sizeof(vertices9), (void **) &pVertices, 0);

  memcpy(pVertices, vertices9, sizeof(vertices9));
  g_pVB1->Unlock();

  pd3dDevice->SetStreamSource(0, g_pVB1, 0, sizeof(CUSTOMVERTEX1));
  pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX1);

  pd3dDevice->DrawPrimitive(D3DPT_LINELIST, 0, 3);//最后一个为绘制顶点的数目 
  //释放顶点缓冲区对象
  SAFE_RELEASE(g_pVB1);
}

[解决办法]
把上面的“ 0xff0000ff;//蓝色”换成“D3DCOLOR_ARGB(255,0,0,255)”比较直观:红到底了!!

但上面定义的顶点格式不对,应换成:D3DFVF_XYZ|D3DFVF_DIFFUSE 或其他什么表示能看到的着色。
[解决办法]
代码太少,而且函数体不明确

就凭这几段代码的话,我感觉是顶点顺序出了问题,你的顶点顺序从z负轴往原点看时是逆时针
不知道你的相机空间在哪,假如在z负半空间,那么就应该是其他问题
[解决办法]
你的三角形背面朝向观察者了?
[解决办法]
“不行”的表现在什么?
颜色没变?还是看不见图像?还是不能执行?有什么错误提示?
说完整点,大家都可以帮助你的。
[解决办法]
纠正一个无关的错误
 pd3dDevice->DrawPrimitive(D3DPT_LINELIST, 0, 3);//最后一个为绘制顶点的数目

这里的最后一个参数是指要渲染的三角形个数

还有就是,你能不能把你的运行截图发上来
[解决办法]
三角面有法向量。

热点排行