OpenGL 有一些自己的规则:
函数名的命名规范 是以gl开头 之后每一组成词的第一个字母大写 例如
glBegin , glCopyPixels
常量以GL开头 后加_ 之后所以字母大写 例如
GL_2D , GL_RGB
数据类型它自带了自己的数据类型 写法 就是在我们之前的数据类型前面加GL 例如
GLbyte , GLint
OpenGL 自己有一些实用的函数(OpenGL Utility,GLU) 这个是不能在屏幕上显示的库
因为这个库与设备无关的函数 窗口管理是依赖于计算机的
那怎么显示?
在window系统下 WGL函数提供了窗口系统到OpenGL的接口
现在我们来开始绘制一条线把
绘制前的准备 :
glut32.dll glut.dll 放在C:\Windows\SysWOW64 这是64位的
32位的放在 C:\Windows\System32
glut32.lib,glut.lib 放在VS 对应的 VS2012\VC\lib下面
好了准备完成 上代码
#include<windows.h> //包含了WGL函数
#include<GL/GL.h> //OpenGL库
#include<GL/GLU.h> //OpenGL库
#include<stdio.h> //标准输入输出函数
#include<stdlib.h> //最常用的系统函数
#include<math.h> //数学函数
#include<GL/glut.h> //处理窗口管理操作
//初始化操作
void init()
{
glClearColor(1.0,1.0,1.0,0);//设置背景颜色 不过这样背景颜色是不显示的
//这段是要告诉OpenGL怎么将图形投影到显示器中 我们是2维线 OpenGL看作是三维线的特例来处理
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,200.0,0.0,150.0);//这个表示使用正投影将世界坐标系二维矩形区域映射到屏幕上 x 0 - 200 y 0 150
//只要是在该矩形内定义的对象 都会显示窗口上
}
//显示线段
void lineSegment(void)
{
glClear(GL_COLOR_BUFFER_BIT);//这样背景色才会显示
//GL_COLOR_BUFFER_BIT 是OpenGL的常数 用来指定颜色缓存中的位值,该缓存将
//使用glClearColor函数中指定的值来设定
glColor3f(1.0,0,0);//设置对象的颜色
glBegin(GL_LINES);
glVertex2i(180,15);
glVertex2i(10,145);
glEnd();
glFlush(); //强制清空所以缓存来处理OpenGL函数
}
int main(int argc, char *argv[])
{
glutInit(&argc,argv);//初始化GLUT
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);//设置显示窗口的缓存和颜色模式 默认都是单缓存和RGB颜色
//后面将会更详细地讨论颜色模型及动画应用的双缓存 和 观察三维场景的参数选项等其他选项
glutInitWindowPosition(50,100);//显示的位置
glutInitWindowSize(400,300);//显示的大小
glutCreateWindow("An Example OpenGL Program");//显示窗口在创建时给点标题
init();
//lineSegment 这个是OpenGL定义一的线段
glutDisplayFunc(lineSegment);//将图赋值给显示窗口
glutMainLoop();//加上这段图片才会显示出来 还会检查鼠标 键盘等设备
}
效果展现:
那些库可以去网速找找很多