渲染后的OpenGL点位置(3d - > 2d)

时间:2010-11-23 15:28:02

标签: opengl rendering matrix-multiplication

我有一个OpenGL场景,里面有一些数字。你能告诉我在“渲染”后计算数字顶点位置需要做些什么吗?我知道我可能需要手动繁殖一些矩阵,但我不知道它们中的哪一个以及如何。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:6)

查看gluProject()功能。

编辑:也可在OpenGL FAQ中找到:
9.100 How can I find the screen coordinates for a given object-space coordinate?
(但答案相同。)

答案 1 :(得分:2)

你想知道pixles中屏幕上的最大范围吗?

如果是这样,最简单的方法是为所有顶点调用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

}