GLSL
me_badman
IT新人
展开
-
STATIC_DRAW, DYNAMIC_DRAW, STREAM_DRAW的区别
gl给buffer赋值时 有用到:gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);VBO允许usage标示符取以下9种值:GL_STATIC_DRAW_ARBGL_STATIC_READ_ARBGL_STATIC_COPY_ARBGL_DYNAMIC_DRAW_ARBGL_DYNAMIC_READ_转载 2017-02-21 10:05:32 · 2058 阅读 · 0 评论 -
WebGL+JS流程
1.body中定义canvas元素 onload()function<body onload="webGLStart()"><canvas id="tooth-canvas" style="border: none" width="500" height="500"></canvas></body>2.预加载函数 function webGLStart() { var canva原创 2017-02-21 12:55:23 · 2331 阅读 · 0 评论 -
glsl三种变量类型
1.uniform变量uniform变量是外部application程序传递给(vertex和fragment)shader的变量。因此它是application通过函数glUniform**()函数赋值的。在(vertex和fragment)shader程序内部,uniform变量就像是C语言里面的常量(const ),它不能被shader程序修改。(shader只能用,不能改)如果uniform转载 2017-02-21 08:53:15 · 1649 阅读 · 0 评论 -
GL_NEAREST和GL_LINEAR的选择
GL_NEAREST和GL_LINEAR前者表示“使用纹理中坐标最接近的一个像素的颜色作为需要绘制的像素颜色”,后者表示“使用纹理中坐标最接近的若干个颜色,通过加权平均算法得到需要绘制的像素颜色”。前者只经过简单比较,需要运算较少,可能速度较快,后者需要经过加权平均计算,其中涉及除法运算,可能速度较慢(但如果有专门的处理硬件,也可能两者速度相同)。从视觉效果上看,前者效果较差,在一些情况下锯齿现象明转载 2017-02-23 10:54:33 · 7400 阅读 · 0 评论 -
DDA算法和Bresenham算法
作者:朱金灿 来源:http://blog.csdn.net/clever101/ DDA算法和Bresenham算法是计算机图形学中绘制直线的两种常用算法。本文具体介绍一下DDA算法和Bresenham算法实现的具体思路。DDA算法主要是根据直线公式y = kx + b来推导出来的,其关键之处在于如何设定单位步进,即一个方向的步进为单位步进,另一个方向的步进必然是小于1。算法的具转载 2017-03-07 11:21:38 · 568 阅读 · 0 评论 -
光照模型小结
1.环境光Ambient LightI(ambdiff) = k(d)I(a)I(a)表示环境光强度(光强),k(d)(0<k(d)<1)为材质对环境光的反射系数,I(ambdiff)为漫反射体与环境光交互反射的光强.2.点光源 Lambert定律(用于粗糙物体)I(ldiff) = k(d)I(l)cosθ I(l)点光源强度,θ入射光方向与顶点法线的夹角,称为入射角(0<=θ<=90度),原创 2017-03-10 16:30:52 · 844 阅读 · 0 评论 -
Shadow map 原理与实现流程
摘自 GPU 编程与CG 语言之阳春白雪下里巴人 13.3 Shadow map 原理与实现流程使用 Shadow Map 技术渲染阴影主要分两个过程:生成 depth map(深度图) 和使用 depth map 进行阴影渲染。 生成 depth map 的流程为:1. 以光源所在位置为相机位置,光线发射方向为观察方向进行相机参数设置;2. 将世界视点投影矩阵 worldViewProj转载 2017-03-13 14:03:34 · 4135 阅读 · 0 评论 -
OpenGL之glUniform函数
函数名:glUniform 功能: 为当前程序对象指定Uniform变量的值。(译者注:注意,由于OpenGL ES由C语言编写,但是C语言不支持函数的重载,所以会有很多名字相同后缀不同的函数版本存在。其中函数名中包含数字(1、2、3、4)表示接受这个数字个用于更改uniform变量的值,i表示32位整形,f表示32位浮点型,ub表示8位无符号byte,ui表示32位无符号整形,v表示接受相应的转载 2017-03-16 10:35:34 · 3704 阅读 · 0 评论 -
OpenGL.FrameBuffer Object
帧缓冲区对象呢又称为FBO,它允许我们把渲染从窗口的帧缓冲区转移到我们所创建的一个或者多个离屏帧缓冲区。被推荐用于数据渲染到纹理对象,相对于其他同类技术,如数据拷贝或者交换缓冲区等等,使用FBO技术会更高效且易于实现。 此buffer包含了color buffer,depth buffer,stencil buffer. 渲染到纹理这个技术在游戏中经常用来模拟电视机或者监视器等等的效果。1.FB转载 2017-03-16 11:01:44 · 521 阅读 · 0 评论