gpt4 book ai didi

c++ - 使用带直接 x 的点 Sprite 。需要采取什么步骤?

转载 作者:行者123 更新时间:2023-11-28 03:59:16 25 4
gpt4 key购买 nike

这仍然是一个悬而未决的问题。

我正在尝试让点 Sprite 系统在我的世界中渲染太阳。我注意到另一个用户问了一个类似的问题(使用相同的代码,大概来 self 的类(class):))但他们无法完成这个问题。我目前的代码如下:

 float fPointSize = 10.0f,fPointScaleB = 100.0f;

IDirect3DDevice9 *m_Device = LudoRenderer::GetInstance()->GetDevice(); m_Device->SetRenderState(D3DRS_POINTSPRITEENABLE,true); m_Device->SetRenderState(D3DRS_POINTSCALEENABLE,true);

 m_Device->SetRenderState(D3DRS_POINTSIZE,
*((DWORD*)&fPointSize));
m_Device->SetRenderState(D3DRS_POINTSCALE_B,
*((DWORD*)&fPointScaleB));

m_Device->SetRenderState(D3DRS_ALPHABLENDENABLE,true);
m_Device->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_ONE);
m_Device->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_ONE);


std::wstring hardcoded = L"..\\Data\\sun.png";
m_SunTexture = LudoTextureManager::GetInstance()->GetTextureData(hardcoded.c_str()).m_Texture;

m_Device->SetTexture(0,m_SunTexture);
m_Device->DrawPrimitive(D3DPT_POINTLIST,0,12);

我没有在屏幕上看到我的太阳,而且它似乎正在对我的世界的其余部分进行 alpha 混合,而不是在我试图加载的任何太阳上。这可能是因为我正在使用哪些设备?任何帮助将不胜感激:)

最佳答案

您实际上似乎并没有在那里进行绘制调用。您是否错过了发布一些代码,或者这可能是您的问题?

如果您错过了绘制调用,我建议 DrawPrimitiveUP() 调用可能是您想要的调用。您还需要设置流格式以匹配您的 vetex 结构 ( setFVF() )。沿着这些线的东西:

#define D3DFVF_SUNVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)

struct SUNVERTEX
{
float x,y,z;
DWORD colour;
};

D3DVECTOR pos = { 0.f, 0.f, 0.f }; // Set this to the position you want
SUNVERTEX sunVert = { pos.x, pos.y, pos.z, D3DCOLOR_RGBA( 255, 255, 0, 255 ) };

IDirect3DDevice9& device = LudoRenderer::GetInstance()->GetDevice();
device->SetFVF( D3DFVF_SUNVERTEX );
device->DrawPrimitiveUP( D3DPT_POINTLIST, 1, sunVert, sizeof(SUNVERTEX) );

如果您有时间,我强烈建议您阅读 DirectX SDK 文档中的“编程指南”(您应该已经安装了它)。这不是一个教程,但确实涵盖了 DirectX 体系结构的基础知识。

关于c++ - 使用带直接 x 的点 Sprite 。需要采取什么步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1698707/

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