1
Я надеялся отобразить «X» в (50,0,0) с помощью DirectXTK и после статьи о биллинге. однако, похоже, у меня это не так. Может ли кто-нибудь помочь мне.DirectXTK spriteFont в 3D-пространстве
XMVECTOR textPosition = XMVectorSet(50, 0, 0, 0);
unique_ptr<BasicEffect> basicEffect(new BasicEffect(m_pd3dDevice));
unique_ptr<CommonStates> commonStates(new CommonStates(m_pd3dDevice));
/*basicEffect->SetWorld(XMMatrixScaling(1,-1, 1) * XMMatrixTranslationFromVector(textPosition));*/
/* basicEffect->SetWorld(XMMatrixTranslationFromVector(textPosition));
basicEffect->SetView(m_View);*/
basicEffect->SetProjection(m_Projection);
basicEffect->SetTextureEnabled(true);
basicEffect->SetVertexColorEnabled(true);
basicEffect->Apply(m_pImmediateContext);
wstring message = L"X";
XMFLOAT2 textOrigin;
XMStoreFloat2(&textOrigin, m_font->MeasureString(message.c_str()));
const float textSize = 1.0f;
m_spriteBatch->Begin(SpriteSortMode_Deferred, nullptr, nullptr, commonStates->DepthRead(), commonStates->CullNone());
m_font->DrawString(m_spriteBatch.get(), message.c_str(), XMFLOAT2(0, 0), Colors::White, 0, textOrigin, XMFLOAT2(textSize, textSize), SpriteEffects_None, 0.0f);
m_spriteBatch->End();
это представляется перспективным
XMVECTOR textPosition = XMVectorSet(50, 0, 0, 0);
wstring message = L"X";
textPosition = XMVector3Transform(textPosition, m_View);
textPosition = XMVector3Transform(textPosition, m_Projection);
XMFLOAT3 pos;
XMStoreFloat3(&pos, textPosition);
pos.x /= pos.z;
pos.y /= pos.z;
pos.x = (pos.x + 1.0) * GetViewPort().Width/2.0;
pos.y = (-pos.y + 1.0) * GetViewPort().Height/2.0;
m_spriteBatch->Begin();
m_font->DrawString(m_spriteBatch.get(), message.c_str(), XMFLOAT2(pos.x, pos.y), Colors::White, 0.0f, XMFLOAT2(0, 0), XMFLOAT2(0.5f, 0.5), SpriteEffects_None);
m_spriteBatch->End();
с DirectX Tool Kit в '' SpriteBatch'' вы можете «отключить» окончательное масштабирование окна просмотра с помощью '' SetRotation (DXGI_MODE_ROTATION_UNSPECIFIED), '' Вы можете обеспечить полное преобразование в качестве необязательного параметра transformationMatrix на '' Begin''. –