c++ - 我如何使用 DrawPrimitiveUP 以便它使用我定义的结构中的颜色值?

标签 c++ directx

我需要使用 DrawPrimitiveUP 绘制线条,我需要它使用我定义的结构中的颜色值。

代码中的重要片段:

struct PointVertexColor
{
 float x, y, z;   // Position
 DWORD color;   //Colour
};

#define D3DFVF_PointVertexColor ( D3DFVF_XYZ | D3DFVF_DIFFUSE ) 

PointVertexColor myLines[1024];

device->DrawPrimitiveUP( D3DPT_LINELIST, myLinesCount, myLines, sizeof( PointVertexColor ) );

我有一个点光源集,启用了照明和环境照明。

问题是,如果我设置 Material ,它会使用 Material 颜色,而不是我的数据结构中的颜色。我如何设置它以使其使用 DWORD 颜色,然后将其设置回使用 Material 以供以后的代码使用?

最佳答案

如果您知道的话,问题就很明显了——您不能同时使用顶点颜色和光照。解决方案是禁用该部分代码的照明,然后稍后重新启用它。

希望对遇到同样问题的人有所帮助。

关于c++ - 我如何使用 DrawPrimitiveUP 以便它使用我定义的结构中的颜色值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3080377/

相关文章:

c++ - PlaySound 不工作

delphi - 有 Delphi 的游戏引擎吗?

c++ - NLP项目,python或C++

c++ - 对于 DirectX 11,我可以做什么来避免在每个 render() 中计算缓冲区?

c++ - 最小化时 DirectX 崩溃

c# - 捕获 DirectX 应用程序的视觉输出 - 即使在后台?

c++ - DirectX7 SetPalette 总是失败

c++ - 如何从基于 C++ 的 COM 对象写入 VB6 即时窗口?

C++:如何制作一个已经包含元素的 vector

c++ - 为什么我不能用这个功能在Qt框架中打开另一个进程?