请登陆或者注册新用户 用户名 密码 记住密码 注册新用户

回 帖 快速回帖 发 新 帖 刷新版面
主题:[原创]OpenGL入门学习——第二课

作者:eastcowboy

专家分:25080

级别:126级别:126级别:126级别:126级别:126

发表时间:2006-7-31 15:58:00    [回复] 
楼主
大家好,这里是OpenGL入门教室。在正式开始前,我想罗嗦几句。

我的课程是写一章就上传一章的,因此不能保证上传时间的稳定性,这几天我辛苦一些,争取前面的课程可以写快一点。但大家也不能太心急,毕竟OpenGL是一个很大的课题,后面的内容会很多。对于我本人而言,随着学习的进行,制作课程的难度也会逐渐增大,相应的,制作时间也会增加。
大家等不及的话,学习时也可以找其他教材来看。

现在开始进行第二课。
需要看第一课的朋友,可以点这里

 

作者:B-FaMiLy

专家分:0

级别:1

发表时间:2008-4-6 8:15:00    [回复]  [引用]
41楼

     除了感谢只有感谢!!

 

作者:TopWay

专家分:20

级别:1

发表时间:2008-5-20 22:38:00    [回复]  [引用]
42楼

glVertex2f()是指定一个点.如果是glVertex3f()是指定三维坐标的点吗?

 

作者:eastcowboy

专家分:25080

级别:126级别:126级别:126级别:126级别:126

发表时间:2008-5-21 8:32:00    [回复]  [引用]
43楼
引用
glVertex2f()是指定一个点.如果是glVertex3f()是指定三维坐标的点吗?

是的。
而且还可以有glVertex4f,指定齐次坐标。
glVertex4f(x, y, z, w);
glVertex3f(x/w, y/w, z/w);
以上两者是等价的。

OpenGL内部以齐次坐标进行运算,也就是说需要四个值。如果指定的值少了,OpenGL会自动补充。x, y, z自动补充为0.0,w自动补充为1.0。因此有下面的转换:
glVertex2f(x, y);           --> glVertex4f(x, y, 0.0f, 1.0f);
glVertex3f(x, y, z);        --> glVertex4f(x, y, z, 1.0f);

 

作者:littleboy2008

专家分:320

级别:2

发表时间:2008-5-21 10:52:00    [回复]  [引用]
44楼
拜帖收藏!

 

作者:TopWay

专家分:20

级别:1

发表时间:2008-5-21 10:57:00    [回复]  [引用]
45楼
如果那样 ,那现在不是可以画 三维图象了...我去试一下

 

作者:eastcowboy

专家分:25080

级别:126级别:126级别:126级别:126级别:126

发表时间:2008-5-21 12:32:00    [回复]  [引用]
46楼
呵呵,可以画三维的图象的,但是需要注意一点,就是深度测试。
比如你画两个正方形,要知道哪个离观察者更近,这样才能确定哪个正方形可以遮住另一个。

最简单的做法就是在绘制前加上
glEnable(GL_DEPTH_TEST);
另外将
glClear(GL_COLOR_BUFFER_BIT);
换成
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

 

作者:revolutionar

专家分:240

级别:2

发表时间:2008-7-8 23:40:00    [回复]  [引用]
47楼
楼主好人啊

 

作者:wangcshe

专家分:0

级别:1

发表时间:2009-2-22 16:00:00    [回复]  [引用]
48楼

请问楼主,这个sin(x)的函数为什么是这样写的?
glBegin(GL_LINE_STRIP);
    for(x=-1.0f/factor; x<1.0f/factor; x+=0.01f)
    {
        glVertex2f(x*factor, sin(x)*factor);
    }
glEnd();
为什么这么写就不行呢
for(x=-10.0f; x<10.0f; x+=0.01f)
    {
        glVertex2f(x, sin(x));
    }
谢谢。

 

作者:eastcowboy

专家分:25080

级别:126级别:126级别:126级别:126级别:126

发表时间:2009-2-22 23:56:00    [回复]  [引用]
49楼
sin(x)的值域是[-1, 1]
若直接把sin(x)作为y坐标,则会观察到较大的波动。

 

作者:heeyu

专家分:0

级别:1

发表时间:2009-3-18 14:54:00    [回复]  [引用]
50楼
谢谢楼主~最近再做毕设...用OPENGL做一个画板........其中一步是...要画曲线....有点像windows自带画图程序那种...请问这个是怎么实现的啊

 

作者:s277421007

专家分:0

级别:1

发表时间:2009-6-19 17:17:00    [回复]  [引用]
51楼
正在学习中,貌似我比较慢,呵呵.

 

作者:hanyegudeng

专家分:0

级别:1

发表时间:2009-10-12 15:13:00    [回复]  [引用]
52楼

真的很好,谢谢LZ。

 

作者:dkaifan

专家分:0

级别:1

发表时间:2009-10-22 12:07:00    [回复]  [引用]
53
引用
例二、画一个五角星
/*
设五角星的五个顶点分布位置关系如下:
     A
 E       B

   D   C
首先,根据余弦定理列方程,计算
(假设五角星对应正五边形的边长为.0)
a = 1 / (2-2*cos(72*Pi/180));
......
quote]

这里求五角星的中心到顶点的距离a好像少了一个开方
1^2=a^2+a^2-2a^2cos(72*Pi/180)

a = sqrt(1 / (2-2*cos(72*Pi/180)));

 

[首页] [上页]  [下页] [尾页]     共有 53 回帖 当前第 3 页(共3页 20帖/页)     跳转至第
回 帖 快速回帖 发 新 帖 刷新版面

版主管理:  删除此帖   转贴   置顶   取消精华   强制结帖   >>>进入管理页面