openGL的安装使用
安装OpenGL,同时也会安装OpenGL Utilities和OpenGL Utility Toolkit
sudo apt-get install libgl1-mesa-dev
注意,显卡支持OpenGL的,安装相对应的驱动程序,才可以启用显卡的OpenGL功能了(^==^,mark)。
如果自行安装的话,相应的
头文件/usr/include/GL/
动态库在/usr/lib/i386-linux-gnu/
测试一下
/*样本程序: 旋转的六边形
*文件名: test.cpp
*编译: gcc -o test test.cpp -lGL -lglut -lGLU -lm
*
*/
#include <GL/glut.h>
#include <math.h>
#define PI 3.14159 //设置圆周率
int n = 6; //多边形变数
float R = 10; //外接圆半径
float theta = 0.0; //旋转初始角度值
bool bigger = false; //增长方向
void mydisplay(void);//画出多边形,相当于画笔
void myreshape(int w, int h);//画布
void myidle();//调整多边形的角度
int main(int argc, char* argv[])
{
glutInit(&argc, argv); //初始化GLUT库;
glutInitWindowSize(700,700); //设置显示窗口大小
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); //设置显示模式;(注意双缓冲)
glutCreateWindow("A Rotating Square"); // 创建显示窗口
glutDisplayFunc(mydisplay); //注册显示回调函数
glutReshapeFunc(myreshape); //注册窗口改变回调函数
glutIdleFunc(myidle); //注册闲置回调函数
glutMainLoop(); //进入事件处理循环
return 0;
}
/*画笔*/
void mydisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.9,0.7,0); //设置绘图颜色
glBegin(GL_POLYGON); //开始绘制六边形
for (int i=0;i<n;i++)
//glVertex2f( R*theta+i*2*PI/n, R*theta+i*2*PI/n);
glVertex2f( R*cos(theta+i*2*PI/n), R*sin(theta+i*2*PI/n));
glEnd();
glutSwapBuffers(); //双缓冲的刷新模式;
}
/*间接调整多边形的坐标,使其旋转*/
void myidle()
{
theta += 1.0;
if(bigger) R += 0.05; else R-=0.05;
if ( abs(R-2) <= 0.01) bigger = true;
if ( abs(R-10) <= 0.01 ) bigger = false;
if (theta >= 2*PI) theta -= 2*PI;
glutPostRedisplay(); //重画,相当于重新调用Display(),改编后的变量得以传给绘制函数
}
/*画布*/
void myreshape(GLsizei w,GLsizei h)
{
glMatrixMode(GL_PROJECTION); //投影矩阵模式
glLoadIdentity(); //矩阵堆栈清空
gluOrtho2D(-1.5*R*w/h,1.5*R*w/h,-1.5*R,1.5*R); //设置裁剪窗口大小
glViewport(0,0,w,h); //设置视区大小
glMatrixMode(GL_MODELVIEW); //模型矩阵模式
}
编译,必须带参数-lGL -lGLU -lglut,为的是链接相关的库,-lm对应的是math.h
gcc -o test test.c -lGL -lGLU -lglut -lm
运行
./test
效果