gpt4 book ai didi

c++ - DirectX 9 在 TRIANGLE FAN 中隐藏第一个三角形

转载 作者:行者123 更新时间:2023-11-30 02:57:46 25 4
gpt4 key购买 nike

我的问题是:如何使用 D3DPT_TRIANGLEFAN 绘制正确的金字塔(三角形四边形金字塔)?

我用作积分:

CUSTOMVERTEX vertices[] =
{
{ 0.0f, 3.0f, 0.0f, 0x00ff0000, }, //The top Vertex
{ 1.0f, 0.0f, -1.0f, 0xff00ff00, }, //(A) vertex
{ 1.0f, 0.0f, 1.0f, 0xff0000ff, }, //(B) vertex
{ -1.0f, 0.0f, 1.0f, 0xffffff00, }, //(C) vertex
{ -1.0f, 0.0f, -1.0f, 0xffff00ff, }, //(D) vertex
{ 1.0f, 0.0f, -1.0f, 0xff00ff00, }, //(A) vertex
};

CUSTOMVERTEX 是:

struct CUSTOMVERTEX 
{
float x, y, z;
DWORD color;
};

我这样调用它:

g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, 5);

金字塔绘制正确,但屏幕上绘制了一个额外的三角形,由顶部和第一个顶点构成(一个直角三角形,在金字塔的底部具有 PI/2 角,另一个点是<<1.0f, 0.0f, -1.0f>>(第一点(A))。

所以我想要的是隐藏那个三角形,我尝试让设备从 1 绘制到 5,但这只给我基础( (A)-(B)-(C)-(D) 平面),并且我还尝试制作剔除 D3DCULL_CW,当我将金字塔旋转一半时,我可以看到额外的三角形,一半被另一个平面隐藏。

最佳答案

<a href="http://msdn.microsoft.com/en-us/library/windows/desktop/bb174371%28v=vs.85%29.aspx" rel="noreferrer noopener nofollow">IDirect3DDevice9::DrawPrimitive()</a> 的最后一个参数在你的情况下,原始计数应该是 4 吗?

如果您想要包含底部,您必须将金字塔渲染为三角形列表,而不是因为完整的金字塔不能用扇形表示。

关于c++ - DirectX 9 在 TRIANGLE FAN 中隐藏第一个三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14199395/

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