我有一个 OpenGL 场景,上面有一些数字。你能告诉我我需要做什么来计算“渲染”后的数字顶点位置吗?我知道我可能需要手动乘以一些矩阵,但我不知道它们中的哪一个以及如何。
提前感谢您的帮助!
我有一个 OpenGL 场景,上面有一些数字。你能告诉我我需要做什么来计算“渲染”后的数字顶点位置吗?我知道我可能需要手动乘以一些矩阵,但我不知道它们中的哪一个以及如何。
提前感谢您的帮助!
看一下gluProject()
功能。
编辑:也可以在OpenGL FAQ中找到:
9.100 如何找到给定对象空间坐标的屏幕坐标?
(虽然答案相同。)
您想知道屏幕上像素的最大范围吗?
如果是这样,最简单的方法是为所有顶点调用 gluProject 并存储最大和最小 x 和 y 位置。
可能看起来像这样:
GLdouble modelview[16], projection[16]
GLint viewport[4];
glGetDoublev(GL_MODELVIEW_MATRIX, *modelView);
glGetDoublev(GL_PROJECTION_MATRIX, *projection);
glGetIntegerv(GL_VIEWPORT, *viewport);
double tx, ty, tz;
for(i = 0; i < VertexCount; i++)
{
glProject(vertices[i].x, vertices[i].y, vertices[i].z,
modelview, projection, viewport,
*tx, *ty, *tz);
// now, the 2d position of the ith Vertex is stored in tx, ty, tz.
// you can now use these values to determine the 2d-extends on your screen
}