glLoadIdentity的问题

qq727791967 2010-12-10 09:34:29
为了使两次调用glTranslatef效果不叠加,在第二次glTranslatef之前我使用了glLoadIdentity,但是为什么第二次glTranslatef后画出的东西不见了?如果循环调用 glPushMatrix()和glPopMatrix()可以解决这个问题,但是我想知道原因
...全文
368 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Flower195 2012-09-20
  • 打赏
  • 举报
回复
LZ 知道是什么原因了吗? 我也是遇到这里有点迷惑了。刚开始学OpenGL. 还请指点。
zhanghaowow 2010-12-20
  • 打赏
  • 举报
回复
glLoadIdentity不是重置场景么
peng_weida 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ssbjmhs 的回复:]
glLoadIdentity()函数的作用是对这个函数以下的起作用吗?
[/Quote]
是啊,我是那样理解的,对后续的变换函数启作用!
qiannianmen_110 2010-12-15
  • 打赏
  • 举报
回复
我说说我的想法吧(当然,我的水平也很菜,高手别见笑啊)

glLoadIdentity()就是把当前矩阵变成单位矩阵。


我感觉你之所以看不见第二个“中国”。
我感觉有两种原因。
第一种我不太确定,我是拿c写opengl的!所以你用的TextOutPut我表示我没见过啊……(c里面的glut库里面auxSolidSphere这个函数也没有!)但是好像在opengl里面直接写字直接调用这种函数就可以了吗?这个我就不知道了!我觉得有一点点可能是因为你直接调用TextOutPut所以他显示不出来。我觉得你可以再画个其他什么图形试试看。
第二种我觉得可能是你定义的视景体的问题。恩……我忘了是不是叫这个了!就是用glOrtho或者glPerspective那些修改的投影的东西。你调用glTranslatef (0,0,1.0f);这样相当于是往电脑屏幕外面移动。很有可能就移出视景体外面了!那样当然就看不到了!

我再补充点没用的,你连续调用glTranslatef (0,0,1.0f);和glTranslatef (0,0,1.1f);的效果。就相当于glTranslatef (0,0,2.1f);当然,两次调用中间别画其他东西了!
ssbjmhs 2010-12-13
  • 打赏
  • 举报
回复
glLoadIdentity()函数的作用是对这个函数以下的起作用吗?
const001 2010-12-12
  • 打赏
  • 举报
回复
初学者支持下!
qq727791967 2010-12-10
  • 打赏
  • 举报
回复
to fandh :你可以说的具体些吗?或者在代码的基础上改一下
fandh 2010-12-10
  • 打赏
  • 举报
回复
可能是,如果没有没有压栈的话,可能会导致glLoadIdentity对以前的影响!
压栈的话,只对当前的有影响,对以前的没有影响!
qq727791967 2010-12-10
  • 打赏
  • 举报
回复
代码如下:
glPushMatrix();
glColor3f(1,1,1);
glTranslatef (0,0,1.0f);
auxSolidSphere(0.02f);//这个可以画出来 glLoadIdentity();
glTranslatef (0,0,1.1f);
TextOutPut(0,0,"中国");//这个我找不到了

19,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧