gpt4 book ai didi

OpenGL glMatrixMode(GL_PROJECTION) 与 glMatrixMode(GL_MODELVIEW)

转载 作者:行者123 更新时间:2023-12-05 05:25:49 29 4
gpt4 key购买 nike

glRotatef() 放在 glMatrixMode(GL_PROJECTION); 之后有什么区别

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glRotatef(red, green, blue);

并在 glMatrixMode(GL_MODELVIEW);

之后放置 glRotatef()
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(red, green, blue);

最佳答案

来自 documentation :

glMatrixMode() 指定哪个矩阵是当前矩阵。

GL_MODELVIEW - Applies subsequent matrix operations to the modelview matrix stack.

GL_PROJECTION - Applies subsequent matrix operations to the projection matrix stack.

它们是什么意思?

如果您将当前矩阵模式设置为投影(例如 glMatrixMode(GL_PROJECTION)),您需要更改投影矩阵。自然地,其中一个应该是下一行:

对于正交投影:

  • glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far);
  • gluOrtho2D(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);

对于透视投影:

  • void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far);
  • void gluPerspective(GLdouble fov, GLdouble aspect, GLdouble near, GLdouble far);

如果您将当前矩阵模式设置为模型 View (例如 glMatrixMode(GL_MODELVIEW)),您是说我在模型 View 矩阵中,我可以应用基本操作来转换我的对象,例如:

  • glRotatef();
  • glTranslatef();
  • glScalef();

在你的问题中,如果你在 gl_projection 而不是 gl_modelview 之后使用 rotatef,你会旋转你的投影矩阵,这会破坏你的投影矩阵。

`

关于OpenGL glMatrixMode(GL_PROJECTION) 与 glMatrixMode(GL_MODELVIEW),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29804087/

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