首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenGL变换

OpenGL变换
EN

Stack Overflow用户
提问于 2012-02-17 13:21:04
回答 1查看 4K关注 0票数 3

我有一个关于原点的物体,比如x,y,z。

我想对点应用一些转换,比如旋转和平移,并在转换点呈现对象。我正在使用glTranslatef()glRotatef()函数。看上去像这样:

代码语言:javascript
运行
复制
glTranslatef(x,y,z); 
glRotatef(Ang,0,1,0); // rotated around Y axis at an arbitrary angle
glTranslatef(xt,yt,zt); // further translation
<render the object>

即使它将我从复杂的矩阵转换操作中拯救出来,我仍然不知道最终位置相对于原点的实际坐标值。是否有一种方法可以在不进行矩阵运算的情况下检索转换点的实际位置坐标?

EN

回答 1

Stack Overflow用户

发布于 2012-02-17 13:28:05

可以使用OpenGL状态使用glGetDoublev检索矩阵。

代码语言:javascript
运行
复制
GLdouble projectionMatrix[16];
glGetDoublev(GL_PROJECTION, projectionMatrix);

GLdouble modelViewMatrix[16];
glGetDoublev(GL_MODELVIEW, modelViewMatrix);

还要注意的是,当你先平移,然后旋转,你也旋转了平移向量。通常,您在原点旋转对象,然后将其转换,从而在平移结束点产生一个旋转的对象。

编辑:以获得转换后的坐标p',您需要使用以下矩阵来转换点p:

代码语言:javascript
运行
复制
p' = projectionMatrix * modelViewMatrix * p

我建议在这种操作中使用glm

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9328992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档