计算机图形学和OpenGL(一)OpenGL初步

      计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。(来自百度百科)ios

OpenGL是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。c++

OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。(来自百度百科)
算法

今天开始就学习计算机图形学和OpenGL,首先配置开发环境。编程

OpenGL核心库系统自己都已经包含,可是除了OpenGL核心库以外咱们还须要GLUT这个实用工具包。windows

下载地址:http://download.csdn.net/detail/yue19870813/7883421。缓存

下载完成后解压出来会有5个文件,包括:glut.h, glut.dll, glut32.dll, glut.lib, glut32.lib。
编程语言

将dll文件copy到C:\Windows\SysWOW64目录下(若是为32位系统则在:C:\Windows\System32);函数

将lib文件copy到C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\下对应的版本,个人是64位;工具

最后将.h文件copy到C:\Program Files (x86)\Windows Kits\8.1\Include\um\gl目录下,到此为止GLUT配置完成。
oop

1、基本的OpenGL语法

OpenGL基本库中函数名都要以gl为前缀,每一个单词第一个字母大写,例如:glBegin,glClear,glCopyPixels等。

OpenGL中常量是GL为前缀,每一个单词大写,之间使用下划线分割。

OpenGL中也有基本的数据类型,例如:GLbyte、GLshort、GLint、GLfloat、GLdouble、GLboolean。

2、程序中包含的头文件

在windows系统中咱们要在程序中引入OpenGL的核心库和windows.h。所以咱们的头文件应该为:

#include <windows.h>
#include <GL\GL.h>
#include <GL\GLU.h>
可是咱们使用的是GLUT来处理窗口操做,因此就不须要引入GL.h和GLU.h了,只须要引入glut.h就能够了。此外咱们还要引入c++中经常使用的头文件,最终引入的内容应该为:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
#include <string>  

#include <windows.h>
#include <GL\glut.h>
3、使用GLUT对窗口进行管理。

使用OpenGL实用库的第一步是初始化GLUT,初始化函数是:

glutInit(&argc, argv);
下面的函数能够给显示的窗口一个标题:

glutCreateWindow("Test OpenGL Program");
接着是咱们主要要作的事情,就是在窗口显示内容,使用下面命令能够将在lineSegment(咱们自定义的绘图方法,后面将会给出)中绘制的图形赋给显示窗口:

glutDisplayFunc(lineSegment);
在全部绘制完成的最后,咱们要调用下列语句将图形内容激活,该函数必须是程序中的最后一个。

glutMainLoop();
glutMainLoop()会使程序进入一个无穷循环之中,至关于咱们的主循环。

4、完整的OpenGL程序。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
#include <string>  

#include <windows.h>
#include <GL\glut.h>


using namespace std;

void init(void)
{
	//设置显示窗口的背景为白色。参数顺序为:红、绿、蓝、透明度。
	glClearColor(1.0, 1.0, 1.0, 0.0);
	//设置投影类型:正投影
	glMatrixMode(GL_PROJECTION);
	//观察参数:x坐标值从0到200,y是从0到150
	gluOrtho2D(0.0, 200.0, 0.0, 150.0);
}

//绘制线段的函数
void lineSegment(void)
{
	//将窗口颜色的设置显示到窗口上,参数是颜色缓存的位值
	glClear(GL_COLOR_BUFFER_BIT);
	//设置显示内容颜色
	glColor3f(1.0, 0.0, 0.0);
	//绘制内容
	glBegin(GL_LINES);
		glVertex2i(180, 15);
		glVertex2i(10, 145);
	glEnd();

	glFlush();

}

int _tmain(int argc, char **argv)
{
	glutInit(&argc, argv);
	//设置窗口的缓存和颜色模型
	//下面指定的是:窗口使用单个缓存而且使用RGB颜色模型来设定颜色值。
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
	//设置窗口左上角的位置
	glutInitWindowPosition(50, 100);
	//设置窗口的宽高
	glutInitWindowSize(800, 600);
	glutCreateWindow("Test OpenGL Program");

	init();
	glutDisplayFunc(lineSegment);
	glutMainLoop();
	return 0;
} 
这样一个线段就被绘制出来了:



参考内容:《计算机图形学(第三版)》 电子工业出版社

转载请标明出处:http://blog.csdn.net/letthinking/article/details/39154401

相关文章
相关标签/搜索