上一篇我们介绍了OpenGL基础相关的知识:OpenGL图形绘制和OpenGL入门,今天介绍一下OpenGL另一重要的成员----OpenGL着色器。

什么是OpenGL着色器?

Open GL ES 着色器语言是一种高级的图形编辑语言,主要特性有一下几点:

  1. OpenGL ES着色器语言是一种高级的过程语言
  2. 对顶点着色器,片元着色器使用的是同样的语言,不做区分
  3. 基于C/C++的语法及流程控制
  4. 完美支持向量与矩阵的各种操作
  5. 拥有大量的内置函数来提供丰富的功能

OpenGL关键技术点

  1. 着色器是使用一种叫GLSL的类C语言写成的

  2. 着色器的结构:

    1. 版本声明:#version version_number
    2. 变量:in type xxx; out type xxx; uniform type xxx;
    3. main函数
  3. 顶点差色器的输入为顶点属性(Vertex Attribute):

    1. 一般情况的上线为16个包含4分量的顶点属性
    2. 与硬件有关,通过GL_MAX_VERTEX_ATTRIBS查询:glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &nrAttributes);
  4. 着色器语言除C的基本数据类型外,还包含向量(Vector)和矩阵(Matrix)

    1. Vector相关的api:

      1. 访问4个属性:vec.x, vec.y, vec.z, vec.w
      2. 重组:vec2, vec3, vec4
  5. GLSL输入与输出:

    1. 两个着色器之间,输入和输出的类型和名称一样,就会自动匹配 —- 与顺序无关
    2. 顶点着色器的输入:通过layout来指定输入变量
    3. 片段着色器的输出:vec4颜色输出变量,指定片段最终的颜色
  6. GLSL的uniform:

    1. 作用:CPU直接向GPU的着色器发送数据的方式
    2. uniform是全局唯一
    3. 着色器里的定义:uniform type xxx;
    4. opengl代码设置uniform的值:
      1. 获取地址:glGetUniformLocation(shaderProgram, “uniform名称”)
      2. 使用着色器程序后,设置值:
        1. glUseProgram(shaderProgram);
        2. glUniform4f(location, 0.0f, greenValue, 0.0f, 1.0f);
  7. 改变三角形颜色的方法:

    1. 通过uniform传值给片段着色器
    2. 顶点数据里,添加颜色数据,再通过顶点着色器传给片段着色器
  8. 注意:片段着色器每次处理一个顶点,而不是一个图形

好了,至此,有关OpenGL着色器的基本概念和常用方法基本介绍完毕,在下一篇,我会详细的介绍OpenGL着色器更加高深的知识。如果你对作色器还是不够了解,可以参考我下面的地址,官网有很详细的介绍。

参考

在线学习OpenGL资料一
OpenGL在线学习api文档

创作不易,如果觉得我的博客对你有帮助,不防给我一颗小红心吧。

OpenGL(三)——OpenGL着色器基础相关推荐

  1. 【OPENGL】第三篇 着色器基础(一)

    在这一章,我们会学习什么是着色器(Shader),什么是着色器语言(OpenGL Shading Language-GLSL),以及着色器怎么和OpenGL程序交互. 首先我们先来看看什么叫着色器. ...

  2. OpenGL着色器基础

    前言: 本文翻译自LearnOpengl经典教程,OpenGL着色器基础介绍的比较通俗易懂,特总结分享一下! 为什么要使用着色器? 我们知道,OpenGL一般使用经典的固定渲染管线来渲染对象,但是随着 ...

  3. 《OpenGL编程指南》一第2章 着色器基础

    本节书摘来自华章出版社<OpenGL编程指南>一书中的第2章,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 第2章 着色 ...

  4. OpenGL在frag着色器中模拟手电筒效果

    在[OpenGL在frag着色器中模拟点光源]的基础上进行修改,得到手电筒效果(https://blog.csdn.net/qq_37340753/article/details/105029079) ...

  5. 第二十二章 opengl之高级OpenGL(几何着色器)

    OpenGL 使用几何着色器 用点造物体 爆破物体 法向量可视化 在顶点和片段着色器之间有一个可选的几何着色器(Geometry Shader), 几何着色器的输入是一个图元(如点或三角形)的一组顶点 ...

  6. OpenGL ES像素着色器

    OpenGL ES像素着色器 原文   http://www.tairan.com/archives/7509 目 录 准备开始 像素着色器 vs 顶点/片段着色器 像素着色器101:渐变 像素着色器 ...

  7. OpenGL ES像素着色器教程

    OpenGL ES像素着色器教程 时间 2014-08-27 09:54:51   泰然 原文   http://www.tairan.com/archives/7509 主题  OpenGL ES ...

  8. OpenGL使用计算着色器进行布料模拟

    OpenGL使用计算着色器进行布料模拟 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <stdio.h> #include &quo ...

  9. OpenGL使用计算着色器进行GPU光线跟踪

    OpenGL使用计算着色器进行GPU光线跟踪 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <stdio.h> #include & ...

  10. OpenGL ES _ 着色器_片断着色器详解

    OpenGL ES _ 入门_01 OpenGL ES _ 入门_02 OpenGL ES _ 入门_03 OpenGL ES _ 入门_04 OpenGL ES _ 入门_05 OpenGL ES ...

最新文章

  1. ie9下console不兼容的问题
  2. 好用的Span(富文本)api
  3. CAS SSO实践中,目前解决的问题和有待解决的问题
  4. 几何基础之点在多边形内的判断
  5. Scene Flow场景流halcon算子,持续更新
  6. 多线程并发如何高效实现生产者/消费者?
  7. 简易中控紫猫插件版(3)压缩包使用说明
  8. 语言统计学中的几个定律,可作为设计检索的参考
  9. 关于微信内置浏览器,打开图片上传功能,调用的问题
  10. 【python】去除字符串头尾的多余符号
  11. silverlight 学习笔记 (八):Prism中MEF的初步认识
  12. freeswitch 基于webrtc网页视频、语音通话官方例子video_demo安装
  13. WebShell -- 开启3389服务
  14. 基于自抗扰控制的压力环控制算法研究
  15. 放大电路、单管共发射极放大电路结构、工作原理、lceda仿真
  16. 如何应对美国对开源项目的出口管制?这是Linux基金会的建议
  17. 一层神经网络实现鸢尾花数据集分类
  18. 一枚普通前端平淡无奇的一年 - 2021年终总结
  19. 激光电视和投影仪有什么区别
  20. python解析MNIST数据集(IDX格式)

热门文章

  1. C语言文件系统模拟器
  2. 32-bit ARM的 word halfword byte
  3. Cortex-M/R/A 芯片选型及简介
  4. 西部数码虚拟服务器备案,虚拟主机备案才能使用吗
  5. PHP 正则表达式资料
  6. 美的集团:收购KUKA总价款为15亿欧元
  7. 祖龙娱乐2021年亏损3.03亿元 同比收窄60%
  8. 特朗普社交应用登苹果App Store下载量榜首
  9. Reno7系列全球首发IMX709超感光猫眼镜头:OPPO/索尼联合打造
  10. 1-9月欧洲新能源车份额上升 混动车注册量增加8.8%