Modern OpenGL – 与着色器Shader相关的API函数总结以及如何创建、编译与使用Shader
1 OpenGL着色器Shader的创建、编译与使用 1.1 使用Shader的大致过程 在OpenGL中,如果在程序中需要使用Shader为基础图元进行着色,首先需要创建一个Shader对象,然后创建一个着色器程序关联当前Shader,然后再进行使用。 对于每一个Shader对象,都需要: 创建一…
- OpenGL可编程渲染管线
- 2022-06-08
Modern OpenGL – GLSL着色语言4:GLSL中的数据存储限制符
1 数据存储限制符 GLSL的基本数据类型和聚合数据类型可以通过数据存储修饰符改变自己的行为。 主要的存储限制符如下: 类型修饰符 描述 const 将一个变量定义为只读形式,如果它初始化时用的是一个编译时常量,那么它本身也会成为编译时常量 in 设置变量为着色器阶段的输入变量 out 设置变量为着…
- OpenGL可编程渲染管线
- 2020-12-15
Modern OpenGL – GLSL着色语言3:GLSL中的数据类型
1 GLSL的基本数据类型 GLSL中支持以下基本数据类型: 类型 描述 float 32位浮点值 double 64位浮点值 int 有符号32位整型 uint 无符号32位整型 bool 布尔值 2 GLSL的聚合类型:向量和矩阵 GLSL的基本类型可以进行合并,从而与核心OpenGL的数据类型…
- OpenGL可编程渲染管线
- 2020-11-24
Modern OpenGL – GLSL着色语言2:GLSL入口函数和GLSL中的变量
1 GLSL的入口函数和基本结构 对于很多编程语言学习的第一步就是学习如何输出HelloWorld,学过类C语言的同学都知道,C和C++程序的入口函数就是从main函数开始,那么和C语言类似,GLSL语言的入口函数也是从main开始的,每一个OpenGL的shader都有着类似于下列代码的基本结构:…
- OpenGL可编程渲染管线
- 2020-11-16
Modern OpenGL – GLSL着色语言1:OpenGL着色器简介
1 OpenGL引入GLSL的前世今生 OpenGL着色语言 GLSL- OpenGL Shading Language是一种专门二维三维图形开发设计的编程语言,现代OpenGL如果不使用GLSL,那么我们唯一可以做的事情就是使用glClear不断地清除窗口颜色了,由此可见,现代OpenGL的核心就…
- OpenGL可编程渲染管线
- 2020-11-14
Modern OpenGL从零开始 – Fbxsdk::FbxAMatrix转换为glm::mat4
1 Fbxsdk与OpenGL中矩阵存储顺序的不同 Fbxsdk的文档说明了FbxAMatrix是行主序矩阵,而OpenGL或者说glm中的glm::mat4是列主序矩阵,所以二者进行转换时要进行转置。 2 Fbxsdk::FbxAMatrix转换为glm::mat4 glm::mat4 FbxMo…
- OpenGL可编程渲染管线
- 2020-09-02
Modern OpenGL从零开始 – 多个帧缓存Framebuffer绘制到同一个铺满屏幕四边形Quad上
1 目的/需求 举个例子,假如我在一个帧缓存中专门绘制了Phong光照模型的物体,在另一个帧缓存中专门绘制了Pbr光照模型的物体,在第三个帧缓存中只绘制了只有单一颜色的物体,等于现在我有三个离屏渲染的帧缓存,我需要把他们都绘制到铺满整个屏幕的同一个四边形中,同时保证深度测试,即在同一场景中绘制不同光…
- OpenGL可编程渲染管线
- 2020-08-09
Modern OpenGL从零开始 – 在Visual Studio中配置OpenGL开发环境
1 工欲善其事必先利其器 在上一篇文章中,我们大致介绍了目前比较主流的OpenGL第三方库的一些类别以及一些主流的第三库的作用,特别的在文章末尾给出了选择OpenGL开发环境的一些建议。目前来说glfw+glad或者glfw+glew是目前OpenGL开发环境的主流,这点大家可以参考下。 很多新人往…
- OpenGL可编程渲染管线
- 2020-06-18
Modern OpenGL从零开始 – 从茫茫多的OpenGL第三方库讲起
作为OpenGL核心渲染模式的开篇,如果一上来就来一个Hello OpenGL,岂不是很懵逼?!环境都没配搞什么Hello OpenGL。众所周知,OpenGL是一个跨平台的可编程的三维图形库,那么其跨平台的特性就离不开一些主要的第三库的支持。或许你已经接触过一些OpenGL的基础知识,想必对以下的…
- OpenGL可编程渲染管线
- 2020-06-08