我目前正在学习本教程:
我完全理解如何旋转/缩放/翻译该教程中的每个字符串。
但是有谁知道以用户可配置的方式剪切/变细/扭曲每个琴弦需要哪些步骤?
据我所知,这些不是 OpenGL 调用的一部分,所以通常如何对 3D 文本进行此类转换?
我目前正在学习本教程:
我完全理解如何旋转/缩放/翻译该教程中的每个字符串。
但是有谁知道以用户可配置的方式剪切/变细/扭曲每个琴弦需要哪些步骤?
据我所知,这些不是 OpenGL 调用的一部分,所以通常如何对 3D 文本进行此类转换?
您可以制作自己的转换矩阵。它们甚至不必“有意义”,你可以用你认为合适的任何奇怪的扭曲来填充它们。例如,剪切应该如下所示:
float shear[] = {
1, Ky, 0, 0,
Kx, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1 };
glMultMatrixf(shear);
您需要操作模型视图矩阵。这个关于矩阵的页面可能有助于剪切、扭曲等。您glLoadMatrix
用来加载新值。对于旋转、缩放和变换,只需使用普通的 OpenGL 函数。
编辑:如果矩阵中已有值,则可以使用glMultMatrix
. 但是,如果可能的话,我首先加载剪切等,然后在此之上应用其他东西。