opengl入门

基本概念

1,OpenGL:是图形硬件的一种软件接口。通俗点讲就是一套API,调用接口而已,用于图像的渲染。与微软的Direct类似,不过它是跨平台的。
2,OpenGL渲染管线:是指从调用OpenGL图形程序到图形最终渲染到屏幕的实现过程。其实就是OpenGL底层代码执行的一个流程。具体流程是这样的:它首先是一个CS的架构模式,它的程序允许通过网络运行,运行图形程序并发出绘图命令的计算机称为客户机(类似发送者,就是处理逻辑代码与调用API,一般由cpu执行),接收这些命令并执行绘图任务的计算机称为服务器(类似接收者,通过客服端发来的命令完成图形渲染,一般由GUP执行)。如果程序并不通过网络运行,那么客户机同时也是服务器。而渲染过程就是cup不停的往缓冲区送逻辑处理数据,GPU再去执行这些数据进行渲染。一般我们最希望的情况就是cup与GPU都在不停的工作,而如果有任何一方有等待,我们把这种情况称为管线停滞。下面贴个服务端操作流程图,如下:
这里写图片描述
3,GLUT:OpenGL工具库,进一步封装,屏蔽了一些繁琐的操作,简化了窗口,输入等的操作。
4,像素的颜色是储存在一个名为位平面的图形硬件中的,可以采用的储存方式有两种:可以把像素颜色的R,G,B和alpha值直接储存到位平面中,也可以储存一个颜色索引值,用它来引用颜色查找表中的一个颜色项。其实就是一块内存区域被称为颜色缓冲区,通常被计算机所绘制的前一副图像所填充(所以每帧需要清屏)。
5,OpenGL使用的坐标系是右手坐标系,左右手坐标系只有Z的朝向不同,如下图:
这里写图片描述

示例程序

#include "GLTools.h"
#include "GLShaderManager.h"
#ifdef __APPLE__
#include <glut/glut.h>
#else
#define FREEGLUT_STATIC
#endif


void display()
{
    glClear(GL_COLOR_BUFFER_BIT);  //清除颜色缓冲区
    glColor3f(1.0, 0.0, 0.0);   //设置颜色
    glBegin(GL_POLYGON);  //绘制多边形
        glVertex3f(0.25, 0.25, 0.0);  //指定顶点
        glVertex3f(0.75, 0.25, 0.0);
        glVertex3f(0.75, 0.75, 0.0);
        glVertex3f(0.25, 0.75, 0.0);
    glEnd();
    glFlush(); //让缓冲区中的图像最终显示,而不是一直放在缓冲区等待
}

void init()
{
    glClearColor(0.0, 0.0, 1.0, 0.0);  //背景颜色
    glMatrixMode(GL_PROJECTION);  //指定当前矩阵(一般与glLoadIdentity一起使用)
    glLoadIdentity();  //重置当前指定的矩阵为单位矩阵,类似于一个复位操作

    /*正交投影(Xmin, Xmax, Ymin, Ymax, Zmin, Zmax),参数指定了投影的长方体,
     这个函数简单理解起来,就是一个物体摆在那里,你怎么去截取他。*/
    glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}


int main(int argc,char* argv[])
{
    glutInit(&argc, argv);    //窗口初始化
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);  //显示模式:单缓冲,RGB模式
    glutInitWindowSize(250, 250);  //窗口大小
    glutInitWindowPosition(100, 100); //窗口位置
    glutCreateWindow("hello"); //窗口标题
    init();
    glutDisplayFunc(display); //窗口内容改变时重绘的回调函数
    glutMainLoop(); //循环
    return 0;
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值