LearnOpenGL笔记(3)着色器】的更多相关文章

之前我们将着色器的代码用glsl写好之后,保存为字符串指针,然后用一个函数去编译它,这是一种手段,对于简单的着色器代码可以这样.但当我们针对复杂的着色器,我们发现编写.编译.管理着色器是一件麻烦事.我们用一个类将着色器的所有编译,链接,管理都放在一个文件里.再将着色器源码单独设置成.glsl文件用来,从文件流读取,不再放到c++编译器里了.这样主函数就比较简洁了. 我们建立一个类shader,将一切着色器的步骤都在这个类里封装了,这样我们在主函数实例化它,我们就直接可以使用着色器不用在意内部的具…
着色器在OpenGL中发挥着重要作用,它就像一个画笔,将输入的数据流,转为数学坐标,再将三维坐标变成二维坐标(针对我们现在用的二维显示器,全息显示器肯是三维的),再把二维坐标实际的像素点位置(这里面肯定存在的粗略的误差,比如(3.423,234.232)肯定在实际像素中不存在,要转换成邻近的),然后再往里面填充色彩,透明度之类的参数.      准确来说其实就是两步工作1.确定位置2.填充色彩.       处于输入输出与处理接口分开的原则,我们不考虑输入的数据具体是什么,这里只讨论如何去处理数…
GLSL向量的一些操作 vec2 someVec; vec4 differentVec = someVec.xyxx; vec3 anotherVec = differentVec.zyw; vec4 otherVec = someVec.xxxx + anotherVec.yxzy; 定义着色器类 (这部分是c++的知识欠缺 class Shader { public: unsigned int ID; Shader(const GLchar* vertexPath,const GLchar*…
首先声明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. 在Android.iOS等移动平台上,开发者可以使用跨平台应用编程接口创建二维或者三维图形,或进行图像处理和计算机视觉应用,结合两者将能构建丰富有趣的交互体验.前者称为OpenGL,后者称为OpenCV,不过本文主要介绍前者,OpenCV在后续文章中涉及.OpenGL应用于桌面系统的历史已经很长了,但考虑到移动平台的特点(计算能力.性能等),将…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十三章:计算着色器(The Compute Shader) 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes GPU已经被优化为处理单个地址或者连续地址(流操作)的大量内存数据:这和CPU的随机内存访问形成鲜明对比.因为顶点和像素可以独立处理,所以GPU被架构为大量的并行运算:比如NVIDIA…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十二章:几何着色器(The Geometry Shader) 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 假设我们没有使用曲面细分阶段,几何着色器阶段就是在顶点着色器和像素着色器之间的一个可选的阶段.几何着色器输入的是基元,输出的是一个基元列表:假如我们绘制的是三角形列表,那么几何着色器…
目录 Shader是什么 GLSL 数据类型 输入与输出 顶点着色器向片段着色器发送数据 Uniform 制作三色渐变三角形 对着色器程序进行封装 参考资料:OpenGL中文翻译 Shader是什么 着色器(Shader)是运行在GPU上的小程序.这些小程序为图形渲染管线的某个特定部分而运行.从基本意义上来说,着色器只是一种把输入转化为输出的程序.着色器也是一种非常独立的程序,因为它们之间不能相互通信:它们之间唯一的沟通只有通过输入和输出. GLSL 着色器是使用一种叫GLSL的类C语言写成的.…
Alpha测试 AlphaTest Great:大于 AlphaTest Less:小于 AlphaTest Equal:等于 AlphaTest GEqual:大于等于 AlphaTest LEqual:小于等于 AlphaTest Never:全不渲染 AlphaTest Always:全部渲染 如果使用后两项的命名的情况下,比较后的数字项没有意义   AlphaTest 比较项 数字 AlphaTest Great 0.5 //表示只渲染alpha值大于0.5的部分 AlphaTest L…
一.GPU:图形处理器,Graphics Processing Unit 显卡的处理器就是图形处理器.与CPU类似.   GPU和CPU的区别? 1.CPU主要是为了串行指令设计,GPU则是为了大规模的秉性的计算而设计. 2.从并行的角度来看,CPU并行针对于指令集并行,而GPU的并行是针对大规模运算的. 3.同样面积的芯片:CPU上更多的放置缓存和控制部件,而GPU上放置的是更多的运算单元.   二.渲染管线 渲染管线也叫渲染流水线,就是告诉GPU一堆数据,然后得到一个二维的图像. 渲染管线主…
一.Android平台上下文环境的创建及初始化 1. 首先实例化Android上下文环境,即EGL的初始化. bool EGLCore::init(EGLContext sharedContext) { EGLint numConfigs; EGLint width; EGLint height; , EGL_ALPHA_SIZE, , EGL_BLUE_SIZE, , EGL_GREEN_SIZE, , EGL_RED_SIZE, , EGL_RENDERABLE_TYPE, EGL_OPEN…