Modern OpenGL / 可编程渲染管线
介绍OpenGL3.3之后,OpenGL主推的可编程渲染管线的、或者叫核心模式(core profile)的相关内容
HW140701
这个作者很懒,什么都没留下…
展开
-
Modern OpenGL - GLSL着色语言4:GLSL中的数据存储限制符
文章目录1 数据存储限制符2 const存储限制符3 in存储限制符4 out存储限制符5 uniform存储限制符5.1 uniform存储限制符5.2 如何在应用程序中设置uniform变量6 buffer存储限制符7 shared存储限制符1 数据存储限制符GLSL的基本数据类型和聚合数据类型可以通过数据存储修饰符改变自己的行为。主要的存储限制符如下:类型修饰符描述const将一个变量定义为只读形式,如果它初始化时用的是一个编译时常量,那么它本身也会成为编译时常量i原创 2020-12-15 20:23:30 · 741 阅读 · 0 评论 -
Modern OpenGL - GLSL着色语言3:GLSL中的数据类型
文章目录1 GLSL的基本数据类型2 GLSL的聚合类型:向量和矩阵2.1 向量2.1.1 向量初始化2.1.1.1 向量初始化2.1.1.2 向量构造函数的截短2.1.1.3 向量构造函数的加长2.1.2 向量元素的访问2.1.2.1 使用分量名称进行访问2.1.2.2 数组访问2.1.3 向量的长度2.2 矩阵2.2.1 矩阵的维度2.2.2 矩阵的初始化2.2.2.1 初始矩阵为对角矩阵2.2.2.2 指定矩阵每一个元素的值构建矩阵2.2.3 矩阵元素的访问2.2.4 矩阵的长度3 数组3.1 数组原创 2020-11-24 22:15:50 · 2521 阅读 · 0 评论 -
Modern OpenGL - GLSL着色语言2:GLSL入口函数和GLSL中的变量
文章目录1 GLSL的入口函数和基本结构2 GLSL中的变量声明3 GLSL中变量的作用域4 GLSL中变量的初始化5 GLSL中变量的隐式转换1 GLSL的入口函数和基本结构对于很多编程语言学习的第一步就是学习如何输出HelloWorld,学过类C语言的同学都知道,C和C++程序的入口函数就是从main函数开始,那么和C语言类似,GLSL语言的入口函数也是从main开始的,每一个OpenGL的shader都有着类似于下列代码的基本结构:#version 330 corevoid main(){原创 2020-11-16 22:10:54 · 451 阅读 · 1 评论 -
Modern OpenGL - GLSL着色语言1:OpenGL着色器简介
1 OpenGL引入GLSL的前世今生OpenGL着色语言 GLSL- OpenGL Shading Language是一种专门二维三维图形开发设计的编程语言,现代OpenGL如果不使用GLSL,那么我们唯一可以做的事情就是使用glClear不断地清除窗口颜色了,由此可见,现代OpenGL的核心就是学会如何使用GLSL着色语言。GLSL在OpenGL2.0版本左右开始发布,在2.0版本之前,GLSL属于OpenGL的扩展功能,但是在OpenGL3.0开始,OpenGL官方开始使用GLSL作为主要的图形开原创 2020-11-14 23:06:40 · 304 阅读 · 0 评论 -
Modern OpenGL从零开始 - Fbxsdk::FbxAMatrix转换为glm::mat4
1 Fbxsdk与OpenGL中矩阵存储顺序的不同Fbxsdk的文档说明了FbxAMatrix是行主序矩阵,而OpenGL或者说glm中的glm::mat4是列主序矩阵,所以二者进行转换时要进行转置。2 Fbxsdk::FbxAMatrix转换为glm::mat4 glm::mat4 FbxModel::FbxMatToGlm(const FbxAMatrix& mat) { // row:列 column : 行 // Fbxsdk使用行主序存储原创 2020-09-02 14:29:03 · 807 阅读 · 0 评论 -
Modern OpenGL从零开始 - 多个帧缓存Framebuffer绘制到同一个铺满屏幕四边形Quad上
1 目的/需求举个例子,假如我在一个帧缓存中专门绘制了Phong光照模型的物体,在另一个帧缓存中专门绘制了Pbr光照模型的物体,在第三个帧缓存中只绘制了只有单一颜色的物体,等于现在我有三个离屏渲染的帧缓存,我需要把他们都绘制到铺满整个屏幕的同一个四边形中,同时保证深度测试,即在同一场景中绘制不同光照模型的物体,同时,保证在物体绘制重叠区域,深度测试正确!How to do ?2 方法2.1 比较笨比的方法新建一个新的帧缓存用于存储合并多个帧缓存的结果,同时新建一个shader,以每一个帧缓存的原创 2020-08-09 14:29:25 · 1226 阅读 · 4 评论 -
Modern OpenGL从零开始 - 在Visual Studio中配置OpenGL开发环境
本专栏导航:1 OpenGL再虐亿遍(firstblood)- 从茫茫多的OpenGL第三方库讲起1 工欲善其事必先利其器在上一篇文章中,我们大致介绍了目前比较主流的OpenGL第三方库的一些类别以及一些主流的第三库的作用,特别的在文章末尾给出了选择OpenGL开发环境的一些建议。目前来说glfw+glad或者glfw+glew是目前OpenGL开发环境的主流,这点大家可以参考下。很多新人往往就死在了第一个台阶上,那就是如何搭建OpenGL开发环境,特别的是目前出现了如此多的第三库的情况下.原创 2020-06-18 10:47:56 · 589 阅读 · 0 评论 -
Modern OpenGL从零开始 - 从茫茫多的OpenGL第三方库讲起
作为OpenGL核心渲染模式的开篇,如果一上来就来一个Hello OpenGL,岂不是很懵逼?!环境都没配搞什么Hello OpenGL。众所周知,OpenGL是一个跨平台的可编程的三维图形库,那么其跨平台的特性就离不开一些主要的第三库的支持。或许你已经接触过一些OpenGL的基础知识,想必对以下的一些库已经有所了解:glutfreeglutglfwglewgladglmassimpstb_imageFreeImage等等等等。如果已经被扫盲的孩子请跳过,此篇文章不适合您阅读,请直行原创 2020-06-08 11:19:43 · 1087 阅读 · 0 评论