gpt4 book ai didi

opengl - 你如何在 OpenGL 中获得模型 View 和投影矩阵?

转载 作者:行者123 更新时间:2023-12-03 10:07:58 25 4
gpt4 key购买 nike

我正在尝试使用 OpenGL 着色语言 (GLSL) 1.5 版来制作顶点和几何着色器。

我了解到在 GLSL 1.5 版中,内置变量如 gl_ModelViewProjectionMatrix已弃用,因此您必须手动传递它们。如果我已经设置了模型 View 和投影矩阵(例如使用 gluLookAtgluPerspective),那么我如何让矩阵传递到顶点和几何着色器中?我做了一些搜索,有些网站似乎提到了一个功能 glGetMatrix() ,但我在任何官方文档中都找不到该函数,而且它似乎不存在于我正在使用的实现中(当我尝试使用该函数编译它时,出现编译错误 unknown identifier: glGetMatrix)。

最佳答案

嘿,让我们在这里放慢一点:) 是的,您确实通过 glGetFloatv(GL_MODELVIEW_MATRIX, ptr) 收到了矩阵。 ... 但这绝对不是你应该在这里做的事情!

让我解释:

在 GLSL 中,内置变量如 gl_ModelViewProjectionMatrix或类似 ftransform() 的函数已弃用 - 没错,但这只是因为 GL 3.x 中不推荐使用整个矩阵堆栈 并且您应该使用自己的矩阵堆栈(或使用任何其他解决方案,矩阵堆栈很有帮助,但不是必须的!)。

如果您仍在使用矩阵堆栈,那么您将依赖 OpenGL 2.x 或 1.x 的功能。没关系,因为现代显卡仍然支持所有这些,因为 GL 兼容性配置文件 - 切换到新的 GL 版本很好,但您现在可以继续使用它。

但是如果您使用的是较旧版本的 OpenGL(带有矩阵堆栈),也请使用较旧版本的 GLSL。 尝试 1.2,因为更高版本(包括您的 1.5)被设计为与 OpenGL3 兼容,其中 OpenGL 中不再存在诸如投影或模型 View 矩阵之类的东西,并且预计将作为自定义、用户定义的显式传递 uniform如果需要,变量。

OpenGL 和 GLSL 版本之间的对应关系曾经有点棘手(在他们清理版本编号以匹配之前),但它应该或多或少类似于:

GL    GLSL

4.1 - 4.1
4.0 - 4.0
3.3 - 3.3
3.2 - 1.5
3.1 - 1.4
3.0 - 1.3
2.x and lower - 1.2 and lower

所以,长话短说 - 着色器内置制服已被弃用,因为 OpenGL 中的相应功能也已被弃用;要么选择更高版本的 OpenGL,要么选择更低版本的 GLSL。

关于opengl - 你如何在 OpenGL 中获得模型 View 和投影矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4202456/

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