2

我有一个正在绘制的 3D 场景,我想为对话文本绘制一个矩形,该矩形将被拉伸到整个屏幕的宽度,考虑到性能,实现这一目标的最佳方法是什么?

我发现 glOrtho() 可以用于精确的像素放置,但由于它是一个矩阵乘法任务,在对话场景中我的应用程序不会感觉更重吗?如果是,我是否应该尝试找到一个数学解决方案来根据一些 Z 距离找到我的左窗口角的 X 位置并从那里绘制一个 QUAD?(这甚至可能吗?)

4

1 回答 1

4

glOrtho()是要走的路。

OpenGL 的渲染 Pipeline过程中,在 Primitive Assembly 阶段,每个顶点都会从眼睛坐标转换(投影)到剪辑坐标。无论您的投影矩阵是用于 3D 透视还是 2D 正交化,在光栅化开始之前,它仍然是每个顶点的一次矩阵乘法。

glOrtho()会将您的投影矩阵更改为正交矩阵,但矩阵只需要每帧生成一次,并且这样做所需的方程非常简单:

在此处输入图像描述

图片来源:MSDN)

一旦你有了一个投影矩阵,不要让矩阵乘法的想法吓到你。这正是显卡的设计初衷,如今对于任何处理器或 GPU 来说,这几乎不是一项令人恐惧的任务。

于 2012-12-31T18:45:20.530 回答