【发布时间】:2016-12-27 05:28:03
【问题描述】:
我正在尝试制作一个 gdi+ 到 opengl 的翻译器(因为 gdi+ 是 v.slow),但我不知道该怎么做才能使绘制的图元与实际屏幕坐标匹配(就像在 gdi+ 中一样)。如果没有这个功能,它将毫无用处,因为移植将非常困难。我目前在 vb.net 中使用 openTK。 例如-
GL.Begin(PrimitiveType.Lines)
GL.Vertex2(0, 0)
GL.Vertex2(100, 0)
GL.End()
渲染一条远超过 100 像素的线。透视设置为:
Dim perspective As Matrix4 = Matrix4.CreatePerspectiveFieldOfView(1, Width / Height, 1, 10000)
Dim lookat As Matrix4 = Matrix4.LookAt(0, 0, 225, 0, 0, 0, 0, 1, 0)
眼睛的 Z 设置为 255,因为它可以提供精确的像素测量值,但仅限于屏幕中心。随着我们进一步前进,它根本不准确。我认为我需要使表面成为球形,以便其上的每个点都处于相同的距离,但不知道该怎么做。
以下是示例图片。线条下方的矩形是 100px(gdi+),线条是使用上面的代码 (gl) 制作的。 Please open this link to view the image
【问题讨论】:
-
在渲染 2d 事物时不应该使用正交投影吗?否则长度将取决于 z 值和张角。
标签: vb.net opengl 3d gdi+ opentk