gpt4 book ai didi

c++ - 如何在 3D 点上绘制文本?

转载 作者:行者123 更新时间:2023-11-30 04:27:44 25 4
gpt4 key购买 nike

我想在 3D 点上绘制文本。文本请求 2D points rect x y x1 y1

我使用 irrlight 引擎。但我只需要公式。

i have:
core::vector3df point;

core::rect<s32> viewport = driver->getViewPort();
core::matrix4 matProj = driver->getTransform(video::ETS_PROJECTION);
core::matrix4 matView = driver->getTransform(video::ETS_VIEW);
core::matrix4 matWorld = driver->getTransform(video::ETS_WORLD);


core::quaternion point_qua(point.X ,point.Y , point.Z , 1);

// formula
point_qua = point_qua*(matWorld*matView*matProj);

std::cout << "\nX=" << point_qua.X;
std::cout << "\nY=" << point_qua.Y;

但是 x 和 y 坐标不正确。他们给了我负 y。和左上角的文字绘图。这个公式正确吗?

最佳答案

差不多。

您的公式给出了 OpenGL 屏幕空间中的位置,从 [-1, -1] 到 [1, 1]。 OpenGL 屏幕空间中的位置如下所示:

[-1, 1]-----------------------------------------[1, 1]
| |
| |
| |
| |
| |
| [0, 0] |
| |
| |
| |
| |
| |
[-1, -1]----------------------------------------[1, -1]

要以像素为单位,按如下方式转换:

pixelsX = (1 + point.X) * Viewport.Width / 2;
pixelsY = (1 - point.Y) * Viewport.Height / 2;

关于c++ - 如何在 3D 点上绘制文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10724202/

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