您的位置:首页 > 运维架构

1.1 编写你的第一个OpenGL的程序

2008-07-01 00:08 309 查看
1.1 编写你的第一个OpenGL的程序
千里之行,始于足下。
--------------------------------------------------------------------------------------------------------
大家好,欢迎加入到OpenGL的学习团队来,好的开始就是成功的一半,但是真正艰辛的是在路上,而让你收获快乐也是在路上。坚持,是一种勇气,一份信念,一种力量,一份守望。
希望大家能够坚持到底,这个才是你们真正成功的关键。
今天先来介绍OpenGL的简单的开发环境的搭建。
1. OpenGL简介
OpenGL是一个跨平台的3D图形开发的跨平台的库,在www.opengl.org上可以看到大量关于OpenGL的知识。
2.开发环境的搭建
OpenGL常常用到的开发语言为C或C++(当然,现在也有Java版本的OpenGL)。所以开发OpenGl的程序要有一个C/C++的编译器。在这里我们选择VS2005,当然,你也可以选择VC6.0。
为了使用OpenGL,必须有以下3个库和相关的文件。
OpenGL(OpenGL的API工具)
GLU(OpenGl使用的程序库)
GLUT(OpenGL 使用工具包,主要用来处理窗口和各种消息(键盘、鼠标)等操作)
由于在windows中,前面两个库都是操作系统自带的,所以不用安装。
下面先谈谈如何加载GLUT的库。
在群中下载glut的文件,
(1) 将glut32.dll复制到你的windows/system32目录下。
(2) 将glut32.lib文件复制到你安装VS2005的目录Program Files/Microsoft VisualStudio 8/VC/lib下面。
(3) 将glut.h复制到Program Files/Microsoft VisualStudio 8/VC/PlatformSDK/Include/gl下面。
这样的话,你就可以使用glut中的库函数了。

3.搭建好环境之后,就可以编写你的第一个OpenGL的程序了。
我们先来个最简单的程序看看,在屏幕中画几个点。
在显示屏幕上,最基本的单位是像素,其实就是一个带有颜色的点,不要看画点简单,实际上所有复杂的图形图像都是有点来构成的。
先看看画点时使用的代码:
glBegin(GL_POINTS);
glVertex2i(100,50); // 坐标为100, 50
glVertex2i(100,50);
glVertex2i(150, 130);
glEnd();
在代码中,第一行的GL_POINTS表示画点。接下来三行就是画点的语句。那么,这时候的坐标是怎么确定的?

glColor3f(1.0, 0.2, 0.3); //用来设置点的颜色
三个参数分别为Red, Green, Blue三种颜色的占的比例来确定,范围为0.0-1.0。
我们这里使用坐标体系先从最简单的开始,



从图中可以看到,横的为X轴,竖的为Y轴。
窗口的大小就是像素的大小。
那么这个坐标体系是如何建立的?在OpenGL中我们使用以下的语句来建立上述坐标体系。
void myInit(void)
{
//glClearColor(1.0,1.0, 1.0, 0.0);
//glColor3f(0.0,0.0, 0.0);
//glPointSize(2.0); //设置点的大小
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 640.0, 0.0,480.0); //窗口的宽从0-640,高度从0-480
}

//////////////////////////////////////////////////////////////
主函数
int main(int argc, char** argv)
{
glutInit(&argc, argv); // 初始化工具套件
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//设置显示模式
glutInitWindowSize(640,480); //设置窗口的尺寸
glutInitWindowPosition(100,150); //设置窗口在屏幕上的位置
glutCreateWindow("my first attempt"); //创建打开窗口,参数为窗口的名称

glutDisplayFunc(myDisplay); // 注册重新绘制函数
myInit();
glutMainLoop(); // 进入不停循环,处理窗口信息

return0;
}
完整的程序如下:
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
//
// @filename:drawpoint.cpp
// @功能:在屏幕上画点

#include <windows.h>
#include <gl/gl.h>
#include <gl/glut.h>
///////////////////////////////////////////////////////////////////
void myInit(void)
{
//glClearColor(1.0,1.0, 1.0, 0.0);
//glColor3f(0.0,0.0, 0.0);
glPointSize(4.0); //设置点的大小
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 640.0, 0.0,480.0); //世界窗口的宽从-640,高度从-480
}
/////////////////////////////////////////////////////////////////////
void myDisplay()
{
glClear(GL_COLOR_BUFFER_BIT); // 清除屏幕,重画
// glColor3f(1.0, 0.2, 0.3); //用来设置点的颜色
glBegin(GL_POINTS);
glVertex2i(100, 50); // 坐标为,50
glVertex2i(10, 150);
glVertex2i(300, 400);
glEnd();
glFlush();
}
////////////////////////////////////////////////////////////////////
int main(int argc, char** argv)
{
glutInit(&argc, argv); // 初始化工具套件
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//设置显示模式
glutInitWindowSize(640,480); //设置窗口的尺寸
glutInitWindowPosition(100,150); //设置窗口在屏幕上的位置
glutCreateWindow("my first attempt"); //创建打开窗口,参数为窗口的名称

glutDisplayFunc(myDisplay); // 注册重新绘制函数
myInit();
glutMainLoop(); // 进入不停循环,处理窗口信息

return0;
}
编译上述程序,你将会得到以下的运行结果。



尝试使用不同的颜色,不同的点的大小,来画出更多的点。

好了,第一个程序hello world就这样完成了,是不是觉得有点新鲜,用了不到50行的程序,就告别了DOS的黑窗口,进入了windows的时代。实际上这都是glut库的功劳。

--------------------hevean(何怀文)
2008-6-30
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: