【发布时间】:2015-03-21 18:58:11
【问题描述】:
我尝试使用 3D 坐标显示 2D 文本。 我在关注this tutorial(解决方案#1:2D 方式)。我按照本教程中的说明做了所有事情,但可能有问题。代码如下:
void Update()
{
glm::mat4 projectionMatrix = glm::perspective(45.0,640.0/480.0,0.01,500.0);
glm::mat4 viewMatrix = glm::lookAt(glm::vec3(0.0,0.0,0.0),glm::vec3(0.0,0.0,-5.0),glm::vec3(0.0,1.0,0.0));
glm::vec4 worldSpace(0.f,1.0,-5.f,1.0);
glm::vec4 screenSpace = projectionMatrix * viewMatrix * worldSpace;
screenSpace /= screenSpace.w;
ovlay.setPosition(screenSpace.x,screenSpace.y);
}
projectionMatrix 是我正在使用的透视图。
viewMatrix 是我的相机位置和方向。
worldSpace 是我想用来计算 2D 坐标的 3D 位置。
screenSpace 应该给我在 2D 空间中的位置,但我得到了一些奇怪的结果:
x = 0, y = 0.358518
我认为它应该类似于x = 320, y = 100。
如果有人知道我做错了什么,我会很感激。
【问题讨论】: