gpt4 book ai didi

c++ - 如何使用 D3DPT_TRIANGLESTRIP 基元类型在 DirectX 中绘制两个分离的矩形

转载 作者:太空狗 更新时间:2023-10-29 20:49:11 24 4
gpt4 key购买 nike

我是 DirectX 的新手,我正在尝试使用 D3DPT_TRIANGLESTRIP 在一个场景中绘制两个矩形。一个矩形没问题,但两个矩形是完全不同的球类游戏。是的,我可以使用用 D3DPT_TRIANGLELIST 基元类型绘制的四个三角形来绘制它们。我的好奇心在于使用 D3DPT_TRIANGLESTRIP 所涉及的技术。我使用 D3DPT_TRIANGLESTRIP 为一个 Rectangle 使用的部分代码如下:

CUSTOMVERTEX recVertex[] = {
{ 10.0f, 10.0f, 0.10f, 1.0f, 0xffffffff, }, // x, y, z, rhw, color
{ 220.0f, 10.0f, 0.10f, 1.0f, 0xffffffff, },
{ 10.0f, 440.0f, 0.10f, 1.0f, 0xffffffff, },
{ 220.0f, 440.0f, 0.10f, 1.0f, 0xffffffff, },
};

if( FAILED( g_pd3dDevice->CreateVertexBuffer( 4 * sizeof( CUSTOMVERTEX ),
0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVB, NULL ) ) )
{
return E_FAIL;
}

更多重要代码...

VOID* precVertex;    
if( FAILED( g_pVB->Lock( 0, sizeof( recVertex ), ( void** )&pGameField, 0 ) ) )
{
return E_FAIL;
}
memcpy( precVertex, recVertex, sizeof( recVertex ) );

然后像这样渲染...

g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof( CUSTOMVERTEX ) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );

基于这个模型,我可以轻松地复制代码,更改自定义顶点上的 x 和 y 值,并创建另一个顶点缓冲区,它会起作用。

我个人觉得这不是最好的方法,特别是考虑到我必须绘制 100 个矩形或类似东西的情况。问题是,我没有其他想法。所以我的问题是,使用 D3DPT_TRIANGLESTRIP 绘制两个矩形的最有效方法是什么?还有可能复制和转换当前矩形的方法吗?

最佳答案

将第二个矩形的四个顶点添加到顶点缓冲区,然后调用 DrawPrimitive 两次。

g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof( CUSTOMVERTEX ) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 4, 2 );

关于c++ - 如何使用 D3DPT_TRIANGLESTRIP 基元类型在 DirectX 中绘制两个分离的矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1345179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com