| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3553 人关注过本帖
标题:关于glTranslatef函数
只看楼主 加入收藏
sunstudent
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2007-10-14
结帖率:100%
收藏
 问题点数:0 回复次数:7 
关于glTranslatef函数
void bsipic::Point()//画点
{ glBegin(GL_POINTS);//
glVertex3f( 0.0f, 1.0f,-1.0f);//a点
glVertex3f(-1.0f,-1.0f, 0.0f);//b点
glVertex3f( 1.0f,-1.0f, 0.0f);//c点
glEnd();
}
在下面函数中掉用它
void OpenGL::play()
{ glPushMatrix();
glPointSize(4);
glTranslatef (-5, 4,-13);
glColor3f(1.0f, 0.0f, 0.0f);
Point();
glPopMatrix();}
void OpenGL::Render()//OpenGL图形处理
{ glClearColor(0.0f, 0.0f, 0.6f, 1.0f); // 设置刷新背景色
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);// 刷新背景
glLoadIdentity(); // 重置当前的模型观察矩阵
play();
SwapBuffers(hDC);
glFlush(); // 更新窗口
// 切换缓冲区
r+=1;if(r>360) r=0;
}就可以事成三个红颜色的点了
但是,我把glTranslatef (-5, 4,-13);中的参数一改,图形在变位置,我想知道坐标是怎么样确字的,和glTranslatef的关系是怎么样的了,谢高手帮助,谢谢!
搜索更多相关主题的帖子: glTranslatef 函数 
2007-11-09 17:09
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
glTranslatef(float x, float y, float z);
x,y,z这是三维坐标的三个轴, 它是相对于原点的.

在这里用了堆栈函数glPushMatrix(),glPopMatrix(),所以glTranslatef(-5, 4, -13)就是当前的原点,Point()函数就以这个原点来画点.

=×&D o I p R e E n C g T l X&×=
2007-11-09 22:44
sunstudent
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2007-10-14
收藏
得分:0 

这样说好你不太对吧,为什么glTranslatef(-5, 4, -13)就是当前的原点了,我该变了其中的参数,那改变后的为什么不是当前的原点了啊,glTranslatef(-5, 4, -13)是OPenGL中的移动函数,它到底是按哪个坐标原点在移动啊,原点又怎 么确定的,还有一个重要的函数没给出
void COPenglView::OnSize(UINT nType, int cx, int cy)
{
GLsizei width,height;
width = cx;
height = cy;
glViewport(0,0,width,height); // 设置OpenGL视口大小。
glMatrixMode(GL_PROJECTION); // 设置当前矩阵为投影矩阵。
glLoadIdentity(); // 重置当前指定的矩阵为单位矩阵
gluPerspective // 设置透视图
( 60.0f, // 透视角设置为 45 度
(GLfloat)width/(GLfloat)height, // 窗口的宽与高比
0.1f, // 视野透视深度:近点1.0f
3000.0f // 视野透视深度:始点0.1f远点1000.0f
);
// 第一个参数设置镜头广角度,第二个参数是长宽比,后面是远近剪切。
glMatrixMode(GL_MODELVIEW); // 设置当前矩阵为模型视图矩阵
glLoadIdentity();
CView::OnSize(nType, cx, cy);}

Render()函数是在OnPaint() 函数中调用它的

2007-11-10 11:18
sunstudent
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2007-10-14
收藏
得分:0 
改变glTranslatef的参数。为什么就看不到画的点了(移出了屏幕外),glTranslate是移位函数,OPenGL中的,到底原点是怎么确定的,glTranslatef是原占怎 么移动的,Render()函数是在OnPaint() 函数中调用后,不该glTranslatef的参数就可以显示画的点了
2007-11-10 11:32
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 

是说错了.我晕.
glPushMatrix()是使当前的画点,平移或旋转操作不会影响到其它的图形.
glTranslatef()是平移函数.glTranslatef (-5, 4,-13);改为glTranslatef (0.0, 0.0,-13);就可知原点是在中心位置.


=×&D o I p R e E n C g T l X&×=
2007-11-10 12:31
sunstudent
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2007-10-14
收藏
得分:0 
知道了,原点是在屏幕中心,谢谢了!为什么原点是在屏幕中心的,是默认的吗?然后怎 么样自定义坐标,也就是说,想定原点在哪,就哪,谢谢
2007-11-10 12:38
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 

此问题我以发信给你了.


=×&D o I p R e E n C g T l X&×=
2007-11-10 12:53
sunstudent
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2007-10-14
收藏
得分:0 
虽然不是很明白,不过谢谢
2007-11-10 14:05
快速回复:关于glTranslatef函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022101 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved