对OpenGL学习的记录
2016.3.8
http://www.cnblogs.com/crazyxiaom/articles/2073586.html
根据这个网址进行学习、入门,红宝书和绿宝书已经下载好了,这个网址学习完成就去看书,并且实践。
修改(2016.3.12)
http://my.oschina.net/simon203/blog/106566
这个网址内容和上面的那个应该是一样的,但是图片是可以观看到的
2016.3.9
在上面的那个网址中的太阳地球月亮的代码例子中缺少了以下语句,使得代码运行后无效果(就是全黑的界面),添加了代码之后有效果了。
glDepthFunc(GL_LEQUAL);
百度上的英文解释:
glDepthFunc - specify the value used for depth buffer comparisons---为深度缓存的比较指定参数?
具体的意义还不是很明白,暂且留有疑问,但是好像是要和启用深度缓存配套使用
2016.3.12
void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez,
GLdouble centerx, GLdouble centery, GLdouble centerz,
GLdouble upx, GLdouble upy, GLdouble upz);
前三个参数表示了观察点的位置,中间三个参数表示了观察目标的位置,最后三个参数代表从(0,0,0)到 (x,y,z)的直线,它表示了观察者认为的“上”方向。
这里好像有三个坐标系,即屏幕坐标系、视口坐标系、世界坐标系(http://bbs.csdn.net/topics/340062286),个人不是很理解,限于时间,就不求甚解了,在修改中间的三个参数可以知道xyz的大致方向,不确定对不对
投影变换作用:就是定义一个可视空间,可视空间以外的物体不会被绘制到屏幕上。OpenGL支持两种类型的投影变换,即透视投影和正投影。
http://blog.csdn.net/why_study/article/details/8204838
OpenGL视口变换函数:glViewport
glViewPort(x:GLInt; y:GLInt; Width:GLSizei; Height:GLSizei);
调用glViewPort函数来决定视见区域,告诉OpenGL应把渲染之后的图形绘制在窗体的哪个部位。当视见区域是整个窗体时,OpenGL将把渲染结果绘制到整个窗口。
此外,在OpenGL中坐标点是以窗口的左下角为起始点(就是原点),横向的是宽度,纵向的是高度。
glOrtho函数可以将当前的可视空间设置为正投影空间--详细解释http://www.cnblogs.com/onlycxue/archive/2013/08/14/3256623.html
//不显示控制台窗口
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
OpenGL的glut函数说明
https://www.opengl.org/resources/libraries/glut/glut-3.spec.pdf
2016.3.15
计算机3D图形在实质上也是平面的,它只是在计算机屏幕上所显示的二维图像,但它可以提供深度(或者第三维)的幻觉。2D + 透视= 3D。--《OpenGL超级宝典(第四版)》
2016.3.15
glBegin(GL_LINES);
glVertex3f(0, 0, 0);
glVertex3f(100 , 0, 0);//右边
glEnd();
glBegin(GL_LINES);
glVertex3f(0, 0, 0);
glVertex3f(0, 100, 0);//上边
glEnd();
以上代码是沿xy轴绘制的100单位像素点的直线,但是实际效果看到的两条线并不一样长,原因是该函数glOrtho。glOrtho()最好是设置成和屏幕的分辨率相当的,要不然,后面的glVertex3f函数绘制的单位像素点与实际的单位像素点并不是1:1的关系。
顶点数组
http://blog.sina.com.cn/s/blog_4d035b080100k3el.html
利用视点变换来实现旋转缩放等
http://www.docin.com/p-776799704.html
2016.3.22
在例子与应用中学习
2016.4.4
在程序中加入音乐