OpenGL学习笔记【3】——OpenGL学习起始框架

OpenGL学习笔记【3】——OpenGL学习起始框架

今天学习了OpenGL的入门,了解了一下他的流程框架,具体什么什么直接操作硬件啊什么的OpenGL的资料就不讲了,什么时候整理一下。直接进入流程框架:

我们用的glut辅助库,他能让我们减少好多的操作,例如创建窗口,初始化设备,他都为我们建好了。

开始:

1.初始化opengl

2.设置渲染模式为:GLUT_DOUBLE | GLUT_RGBA

3.设置窗口大小,和标题,

4.创建窗口,

5.进入Opnegl里面的初始化。Opengl里面的初始化这里的初始化一定要在创建窗口以后。

6.设置渲染的函数

7.设置变化窗口大小,调整视口的函数

8.主程序循环。

这就是程序的主框架,我们只要把这些内容写入到main函数中,然后再自己实现相关的函数就可以了。是不是给我们带来了很大的方便呢。废话少说。奉上源代码:

#include  < gl\glut.h >

void  display( void )
{
    glClear(GL_COLOR_BUFFER_BIT 
| GL_DEPTH_BUFFER_BIT);    // 清楚颜色数据和深度数据(清屏)

    
    glBegin(GL_TRIANGLES);            
//绘制一个三角型
    glColor3f(1.0,0,0);                //绘制颜色为红色
    glVertex3f (00-2.0);        //绘制三角型的一个顶点0,0,-2
    glColor3f(0,1.0,0);                //同理绘制其他两个顶点
    glVertex3f (11-2.0);
    glColor3f(
0,0,1.0);    
    glVertex3f (
10-2.0);
    glEnd();                    
//结束绘制三角型

    glutSwapBuffers();            
//交换缓冲区。显示图形
}


// 初始化
void  init ( void
{
    glClearColor (
1.00.00.00.0);    //清理颜色,为黑色,(也可认为是背景颜色)
}


// 当窗口大小改变时,会调用这个函数
void  reshape(GLsizei w,GLsizei h)
{
    
//这里小说明一下:矩阵模式是不同的,他们各自有一个矩阵。投影相关
    
//只能用投影矩阵。(只是目前情况下哦,等我学多了可能就知道为什么了。)

    glViewport(
0,0,w,h);        //设置视口
    glMatrixMode(GL_PROJECTION);    //设置矩阵模式为投影变换矩阵,
    glLoadIdentity();                //变为单位矩阵
    gluPerspective(60, (GLfloat)w / h, 01000);    //设置投影矩阵
    glMatrixMode(GL_MODELVIEW);        //设置矩阵模式为视图矩阵(模型)
    glLoadIdentity();                //变为单位矩阵
}



int  main( int  argc,  char **  argv)
{
    glutInit(
&argc, argv);        //Opnegl初始化
    glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGBA); //设置显示模式为双缓冲,RGEBA

    glutInitWindowSize (
250250);            //窗口大小
    glutInitWindowPosition (100100);        //窗口位置
    glutCreateWindow ("hello");                //创建一个标题为hello的窗口
    init ();                                //初始化资源,这里一定要在创建窗口以后,不然会无效。
    glutDisplayFunc(display);                //窗口大小改变时的回调
    glutReshapeFunc(reshape);                //绘制图形时的回调
    glutMainLoop();                            //主循环。
    return 0;  
}
在这里只是话了一个三角形。呵呵。

你可能感兴趣的:(OpenGL学习笔记【3】——OpenGL学习起始框架)