我想将一个3D位置转换成2D屏幕位置。我看了一个类似的问题:将3D点投影到2D屏幕坐标,但我并不完全理解它。我认为为了计算2D位置,我需要投影矩阵,但我不知道它是如何使用的,除了将一个点转换成位置坐标空间之外。此外,在OpenGL中,cam.FieldOfView是否等于farZ?
请问有人能帮我完成这个函数吗?这些参数足以计算2D位置吗?Pos已经是相对于摄像机位置的向量了。
请问有人能帮我完成这个函数吗?这些参数足以计算2D位置吗?Pos已经是相对于摄像机位置的向量了。
Vector2* convert(Vector3& pos, Matrix4& projectionMatrix, int screenWidth, int screenHeight)
{
float ratio = screenWidth / screenHeight;
...
screenX = screenWidth * ( 1.0f - screenX);
screenY = screenHeight * ( 1.0f - screenY);
return new Vector2(screenX, screenY);
}