step1. 创建一个着色器对象

用ID来引用,储存这个顶点着色器为unsigned int,

unsigned int vertexShader;
vertexShader = glCreateShader(GL_VERTEX_SHADER);

. glCreateShader 创建着色器。

参数: 着色器类型。eg. 顶点着色器,传递的参数是GL_VERTEX_SHADER。

step2. 把着色器源码附加到着色器对象上并编译

const char *vertexShaderSource = "#version 330 core\n""layout (location = 0) in vec3 aPos;\n""void main()\n""{\n""   gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n""}\0";glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);
glCompileShader(vertexShader);

glShaderSource函数
第一个参数: 要编译的着色器对象。
第二参数: 指定了传递的源码字符串数量,这里只有一个。
第三个参数:顶点着色器真正的源码
第四个参数:先设置为NULL。

step3. 检测编译结果

检测调用glCompileShader后编译是否成功了,如果没成功的话,你还会希望知道错误是什么,这样你才能修复它们。检测编译时错误可以通过以下代码来实现:

int  success;
char infoLog[512];
glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &success);

首先我们定义一个整型变量来表示是否成功编译,还定义了一个储存错误消息(如果有的话)的容器。然后我们用glGetShaderiv检查是否编译成功。如果编译失败,我们会用glGetShaderInfoLog获取错误消息,然后打印它。

if(!success)
{glGetShaderInfoLog(vertexShader, 512, NULL, infoLog);std::cout << "ERROR::SHADER::VERTEX::COMPILATION_FAILED\n" << infoLog << std::endl;
}

如果编译的时候没有检测到任何错误,顶点着色器就被编译成功了

初识OpenGL (2)编译着色器相关推荐

  1. 初识OpenGL (3)片段着色器(Fragment Shader)

    step1. 片段着色器 计算像素最后的颜色输出. 片段着色器只需要一个输出变量,这个变量是一个4分量向量,它表示的是最终的输出颜色,我们应该自己将其计算出来. #version 330 core o ...

  2. OpenGL编译着色器

    1.读入着色器的代码 一般着色器的代码可以写在raw下创建glsl文件. gls是openGL的着色语言. 1.1.顶点着色器 定义的每个单一的顶点,顶点着色器都会调用一次,当他被调用的时候,会在a_ ...

  3. c语言opengles程序,OpenGL ES _ 着色器_程序

    演示图 你不知道这个东西,请不要看了,请看我的其他文章先了解一下O! 学习目标 掌握着色器程序的执行过程 简单的例子 `` uniform float t; // 时间 uniform mat4 gl ...

  4. Learn OpenGL(七)——OpenGL中使用着色器的基本步骤及GLSL渲染简单示例

    OpenGL着色语言(OpenGL Shading Language,GLSL)是用来在OpenGL中着色编程的语言,是一种具有C/C++风格的高级过程语言,同样也以main函数开始,只不过执行过程是 ...

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

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

  6. 【OpenGL ES】着色器Shader与程序Program

    在OpenGL ES 3程序中,Shader和Program是两个重要的概念,至少需要创建一个顶点Shader对象.一个片段Shader对象和一个Program对象,才能用着色器进行渲染,理解Shad ...

  7. OpenGL ES像素着色器

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

  8. OpenGL ES像素着色器教程

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

  9. Opengl ES之着色器

    前言 在前面我们介绍了 OpenglEs之EGL环境搭建 ,在后面的例子中,我们将无可避免地需要使用到着色器.而着色器才是Opengl的灵魂所在,有了着色器才有了Opengl天马行空的世界. 图形渲染 ...

最新文章

  1. 中国芯片首富捐资200亿办大学!落地宁波镇海,拟名「东方理工」
  2. sql语句遇到错误: The used SELECT statements have a different number of columns :
  3. linux系统python截图不显示中文_Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题...
  4. Android学习笔记之使用百度地图实现地图控制
  5. 从200多篇顶会论文看推荐系统前沿方向与最新进展
  6. 记HTML5 a 标签的一个小坑
  7. 2017ACM/ICPC亚洲区沈阳站 C Hdu-6219 Empty Convex Polygons 计算几何 最大空凸包
  8. 《计算机应用基础》模拟试卷三,2015年《计算机应用基础》模拟试题及答案(一)...
  9. mysql 高并发 卡死,高并发中的卡死状态 -HashMap
  10. Forward团队-爬虫豆瓣top250项目-设计文档
  11. MySQL基础day05_MySQL数据库的备份与恢复-1-MySQL 5.6
  12. kafka 主从同步入门
  13. 2021-08-17Cookie 详解
  14. jquery.treeview.js
  15. 电商后台管理系统项目介绍和项目初始化
  16. Ubuntu创建用户
  17. html5禁止浏览器缩放网页大小 (实用)
  18. 爱普生Epson WorkForce WF-7725 一体机驱动
  19. CSS入门笔记5(浏览器渲染,CSS动画全解)
  20. Linux:限制网络带宽

热门文章

  1. 驾校管理系统linux界面分析,驾校管理系统-20210327024111.docx-原创力文档
  2. github网址能ping通,但是浏览器访问不了
  3. PDF文件不能编辑的原因
  4. 管理计算机中的文件,管理计算机中的文件.ppt
  5. pypinyin--python 汉字与拼音的转换
  6. Autofac 快速入门
  7. 红队武器库:fastjson小于1.2.68全漏洞RCE利用exp复现
  8. matlab for矩阵,(matlab)使用for循环产生以下矩阵:
  9. CCF第六届太湖论坛——超级计算机并行应用大会举办
  10. Java安全知识share