【问题标题】:Retrieve Vertex Coordinates检索顶点坐标
【发布时间】:2012-05-22 02:17:54
【问题描述】:

我的问题是:

有没有办法在平移或旋转后检索顶点的坐标?

示例:x = 10,y = 10,z = 0

在对 glTranslate 或 glRotate 的一系列调用之后,我如何知道 x、y 和 z 的实际状态?

谢谢。

【问题讨论】:

标签: opengl-es coordinates vertex


【解决方案1】:

这是不可能的...opengl 将您的顶点数据发送到 GPU,并且只有在 GPU 上您才能在转换后获取它们。

要获得转换后的顶点,您必须自己将它们乘以矩阵

for each vertex:
   vertex_transformed = matrix * vertex

在旧的 OpenGL 中:

glGetFloatv(GL_MODELVIEW_MATRIX, m);
x = pos.x*m[0] + pos.y*m[4] + pos.z*m[8] + m[12];
y = pos.x*m[1] + pos.y*m[5] + pos.z*m[9] + m[13];
z = pos.x*m[2] + pos.y*m[6] + pos.z*m[10] + m[14];

一些更高级的方法是使用变换反馈并将这些变换后的顶点存储到缓冲区中(但该缓冲区仍将存储在 GPU 上)。

【讨论】:

  • 好的,但是..如何在转换后使用 gl 方法检索矩阵?和.. 矩阵(float[16])和顶点相乘的数学运算是什么? ...对于转换反馈,我如何创建这个缓冲区来存储进度?
  • 没问题 :) 转换反馈有点高级...我需要更多这方面的经验,所以我现在无法向您解释。
猜你喜欢
  • 1970-01-01
  • 2011-09-08
  • 2019-03-04
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多