gpt4 book ai didi

c++ - 如何以另一种颜色在顶点缓冲区中绘制顶点

转载 作者:太空宇宙 更新时间:2023-11-04 11:55:14 31 4
gpt4 key购买 nike

我正在使用 Direct3D 9 来画线。

我现在使用的顶点格式为 D3DFVF_XYZ|D3DFVF_DIFFUSE 并存储在顶点缓冲区中。它们是用 DrawPrimitive 作为 D3DPT_LINELIST 绘制的。

如何在不锁定顶点缓冲区以修改其内容的情况下更改整个绘制顶点缓冲区甚至特定顶点的绘制颜色?这必须在每一帧完成。

这可以用顶点缓冲区吗?我更喜欢没有自定义着色器的解决方案(使用默认的 direct3d 9 管道)。

如果这是不可能的,下一个最好的性能明智的做法是什么?我只能想到锁定顶点缓冲区或使用 DrawPrimitiveUP。两者在性能方面都非常糟糕。


更新了解决方案代码:

m_pDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
m_pDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
m_pDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_CONSTANT);
m_pDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_CONSTANT);
m_pDevice->SetTextureStageState(0, D3DTSS_CONSTANT, D3DCOLOR_ARGB(120,0,255,0));

顶点不再需要 FVF_DIFFUSE

最佳答案

使用固定功能管道,您可以使用 SetTextureStageState ( doc ) 来指定常量颜色,它应该与 D3DTSS_CONSTANT ( doc ) 一起使用。使用此选项,您可以为整个绘图调用设置颜色。

关于c++ - 如何以另一种颜色在顶点缓冲区中绘制顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16448206/

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