openGL的安装使用

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

效果
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值