gpt4 book ai didi

c++ - 如何访问转换后的 openegl 模型 View 矩阵 [尝试过 glGetFloatv()]?

转载 作者:行者123 更新时间:2023-11-28 06:29:07 31 4
gpt4 key购买 nike

我正在尝试在“x”轴上旋转并保存转换后的矩阵,以便稍后可以使用它进一步旋转;或从已经旋转的角度看另一个轴。

    //rotate
glRotatef(yROT,model[0],model[4],model[8]);//front over right axis
//save model
glGetFloatv(GL_MODELVIEW_MATRIX, model);

不幸的是,我注意到 openGL 必须缓冲转换,因为单位矩阵已加载到模型中。有解决方法吗?

天哪,你为什么要这样做?

我一直在尝试理解四元数、欧拉或轴旋转。这些概念并不难,但即使在看过示例 *edit [我发现的大多数公开课都没有为傻瓜用户很好地记录或对移动有限制],我仍然在数学上遇到麻烦。

我决定想办法作弊。

编辑*“稍后”是指在下一个代码循环中。换句话说,yRot 是我希望我的 View 从保存的视角旋转的度数。

最佳答案

我的建议:根本不要为 glRotate 操心,一开始使用它们从来都不是一件愉快的事,也没有严肃的程序使用过它们。

如果您想使用固定功能管道(= 无着色器),请使用 glLoadMatrix 加载您当前需要的任何转换。无论如何,对于着色器,您必须在概念上对 glUniform 执行相同的操作。

使用现有的矩阵数学库,如 GLMEigenlinmath.h 来构造变换矩阵。好处是,您可以随时复制矩阵,因此您无需摆弄glLoadIdentityglPushMatrixglPopMatrix在您需要的地方制作拷贝并从中开始工作。

顺便说一句:在 OpenGL 中没有“模型”这样的东西。这不是 OpenGL 的工作方式。 OpenGL 一次绘制一个点、线或三角形,其中每个称为 primitive 的元素都被单独转换到(屏幕)帧缓冲区上的某个位置并转换为像素。一旦图元被处理,OpenGL 就已经忘记了它。

关于c++ - 如何访问转换后的 openegl 模型 View 矩阵 [尝试过 glGetFloatv()]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27958924/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com