zoukankan      html  css  js  c++  java
  • 【OpenGL】学习笔记#1

    没事干总要学点东西,这个系列的文章既是我的笔记,又是一篇教程(给我自己的教程),主干内容参考一篇国外教程,教程很粗略,但是代码不错,所以我借着它的脉络,补充网上的资料来扩充内容,每一句话都要理解是什么意思,还有实现的原理。不定期更新,国外教程网址在文末,有兴趣的同学可以去看看。

    一、OpenGL简介

    OpenGL是一套开放图形库API(的标准),因此可以跨平台,主要应用领域有医疗、工程、AR、电子游戏等领域,主要竞争对手是DirectX。

    二、OpenGL环境配置

    For Linux

    由于种种原因,国内访问不了官网的网址,因此采用开源软件库Mesa,它的API与OpenGL兼容,只需要确保安装了下列库和软件:

    cmake make g++ libx11-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxext-dev libxcursor-dev libxinerama-dev libxi-dev

    (使用aptitude将会更智能的替你解决依赖关系)


    For Windows

    有glut软件包下一个即可

    另外,无论是哪个平台,CMake都是绝佳的构建项目的工具,Qt Creator有内置的CMake支持!

    三、OpenGL的渲染流程

    1.VAO(Vertex Array Object顶点数组对象)和VBO(Vertex Buffer Object顶点缓冲区对象)

    很久以前,OpenGL是只有VBO的......(才怪,OpenGL3.0就引入VAO了!)

    简单的来说,VAO“高于”VBO,是VBO和OpenGL之间的一个抽象层,其中保存了顶点的颜色,深度,位置......属性,可以更便捷的操纵VBO而不用进行繁琐的重复操作。

    2.Shader(着色器)
    分为顶点着色器(Vertex Shader)和片元着色器(Fragment Shader
    顶点着色器处理VBO(和VAO)提供的顶点信息,每一个VBO(VAO)都会执行一次顶点着色器。
    然后,OpenGL会将这些数据组装成图元(prmitive),把他们变成真正可用的数据。
    接下来OpenGL会对图元进行光栅化,把他们从图元变成一个个片元,接着片元着色器将会发生作用,对每一个片元进行处理,把没有颜色的片元变成五颜六色的像素。

    3.交给GPU和CPU

     

     
     
    学习笔记更新到#6+GLSL笔记
     

      

    教程:http://www.opengl-tutorial.org/beginners-tutorials/

  • 相关阅读:
    严格模式
    排序,求最大值最小值
    原型继承
    android 系统
    BASE64Decoder
    jstl
    list  遍历
    2015GitWebRTC编译实录9
    2015GitWebRTC编译实录8
    2015GitWebRTC编译实录7
  • 原文地址:https://www.cnblogs.com/dudujerry/p/13532537.html
Copyright © 2011-2022 走看看