- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
OpenGL文档说gluLookAt()调用应在GL_MODELVIEW矩阵上完成:
http://www.opengl.org/resources/faq/technical/viewing.htm
实际上,文档链接到一篇文章,该文章说在GL_PROJECTION矩阵上使用gluLookAt()非常糟糕:
Help stamp out GL_PROJECTION abuse
另一方面,有许多教程和示例实际上在GL_PROJECTION矩阵上调用了gluLookAt()。同时,虽然上面提到的文章确实说不要在GL_PROJECTION矩阵上使用它,但它说在大多数这样的用法中,这样做没有明显的问题。
那么我的问题是:在现实生活中的项目中使用gluLookAt()的最佳方法是什么?在GL_PROJECTION矩阵上使用它真的很多吗?
最佳答案
gluLookAt()函数为您提供了一个转换矩阵,可以转换场景中对象的旋转。因此,这显然是模型转换,必须放入GL_MODELVIEW矩阵中。
至于为什么,当您自己在顶点着色器中进行操作时,这将变得更加清晰:
虽然顶点的位置确实只是v.pos * modelview * projection
,但需要模型 View 矩阵而不需要用于其他计算的投影分量(例如,照明和雾)。这就是固定功能管道将这两个矩阵分开的原因。
因此,您应该遵循API中指定的范例,尤其不要相信任何无数糟糕的opengl“教程”。
关于opengl - GL_PROJECTION矩阵或GL_MODELVIEW矩阵上的gluLookAt()最佳用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9539796/
将 glRotatef() 放在 glMatrixMode(GL_PROJECTION); 之后有什么区别 glMatrixMode(GL_PROJECTION); glLoadIdentity();
我想将 OpenGL 与 C++ 结合使用来创建一个带有“相机”(透视图)和要查看的对象的基本场景。我找到了示例代码 here .但出于某种原因,尽管我已将所有必要的包含和库捆绑在一起(见下文), /
glMatrixMode(GL_PROJECTION)有什么区别和 glMatrixMode(GL_MODELVIEW) ? #include #include #include #define
我有一个 iPhone 应用程序,我在 appDidFinishLaunching 中调用这三个函数: glMatrixMode(GL_PROJECTION); glOrthof(0, rect.si
原始问题 我想使用“gluPerspective”、“glViewport”和“gluLookAt”来操作我的相机和屏幕。 我将哪些功能应用于哪种矩阵模式?我应该/必须以什么顺序使用它们? 例如,我正
我是一名优秀的程序员,十分优秀!