如何重置系统
how to reset system
当我执行以下操作时,指针的坐标发生了变化。现在,如何重置坐标系以便在草绘另一个对象之前进行0,0,0
?
glPushMatrix();
glTranslatef(0.0f, -500.0f, 1200.0f);
glRotatef(270.0f, 1.0f, 0.0f, 0.0f);
glPushMatrix();
glColor3f(0.0f, 1.0f, 1.0f);
gluCylinder(quadric,10.0f,10.0f,1000.0f,32,32);
glPopMatrix();
我将绘制另一个对象,但当前的原点系统并不0,0,0
. 我认为重点在于已经勾勒出的圆柱体。
而且,如果我在第一个对象之后草绘另一个对象,它也会旋转。为什么?
glPushMatrix()
将矩阵推送到当前活动的矩阵堆栈上(在您的情况下可能是模型视图)。 glTranslate()
、glRotate()
等与顶级模型视图矩阵一起使用,渲染也是如此。 glPopMatrix()
从堆栈中删除顶部矩阵。
因此,一旦您平衡了glPushMatrix()
和glPopMatrix()
调用,堆栈将处于与开始时相同的状态。
glPushMatrix () ;
glTranslatef(0.0f, -500.0f, 1200.0f ) ;
glRotatef ( 270.0f, 1.0f, 0.0f, 0.0f );
glColor3f ( 0.0f, 1.0f, 1.0f );
gluCylinder(quadric,10.0f,10.0f,1000.0f,32,32);
glPopMatrix();
glPushMatrix () ;
glTranslatef(0.0f, -500.0f, 1200.0f ) ;
glRotatef ( 270.0f, 0.0f, 1.0f, 0.0f );
glColor3f ( 0.0f, 1.0f, 1.0f );
gluCylinder(quadric,10.0f,10.0f,1000.0f,32,32);
glPopMatrix();
(此代码绘制 2 个独立对象:一个具有旋转的 x 轴,另一个具有旋转的 y 轴)
每个glPushMatrix()
呼叫都需要一个相应的glPopMatrix()
呼叫。如果要对一个对象进行"局部"转换(即平移,旋转),只需调用glPushMatrix()
,进行转换,绘制对象并调用glPopMatrix()
。然后你的坐标系终于再次未变换,你可以绘制下一个对象。
如果你不明白这一点,你也可以在应用一些转换(再次重置所有转换)后在模型视图矩阵上使用glLoadIdentity()
- 但是如果你在ModelviewMatrix上使用与转换相关的代码(即gluLookAt),你必须在每次glLoadIdentity()
调用后再次执行此操作。
glLoadIdentity();
glTranslatef(0.0f, -500.0f, 1200.0f ) ;
glRotatef ( 270.0f, 1.0f, 0.0f, 0.0f );
glColor3f ( 0.0f, 1.0f, 1.0f );
gluCylinder(quadric,10.0f,10.0f,1000.0f,32,32);
glLoadIdentity();
glTranslatef(0.0f, -500.0f, 1200.0f ) ;
glRotatef ( 270.0f, 0.0f, 1.0f, 0.0f );
glColor3f ( 0.0f, 1.0f, 1.0f );
gluCylinder(quadric,10.0f,10.0f,1000.0f,32,32);
相关文章:
- QTableView:endMoveRows在模型中重置水平页眉大小
- 更改"child's parent's style sheet"时如何将孩子的样式表重置为 Qt 默认样式表?
- 切换大小写后如何阻止变量重置?
- 当客户端在 write() 期间终止连接时,由对等套接字错误重置连接
- 移动后是否需要重置标准::列表?
- 在读取文件后重置句柄
- C++变量在调用 x64 程序集函数后重置为 0
- Adafruit 羽毛RFM69HCW在使用过程中会冻结,需要硬重置
- 变量始终在函数中重置为默认值
- 为什么我的 LogError 函数会重置 GetLastError?
- 无法重置 std::shared_ptr 标准::设置<>中的对象...为什么?
- C++上的手动重置事件(来自 C#)实现:如何避免争用条件
- 如何在IQualProp::get_AvgFrameRate中重置帧速率?
- 奇怪的UC3 用户页面 NVRAM 使用后重置行为
- 如何在接触时重置我的角色位置?
- 如何重置系统
- MFC/C++:需要遥远的"wall clock"时间而不重置系统的时间
- 使用设置系统时间调整重置时钟速率,而无需使用时间服务器
- C++重置系统命令
- 系统()调用批处理可执行流文件使程序在windows上重置