![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
openGL
文章平均质量分 67
shilod
打造属于自己的标签——王振
展开
-
glClearColor函数,glClear函数的底层解析
今天学了两个函数,分别为 void glClearColor(GLclampf red,GLclampf green,Glclampf blue,GLclampf alpha);功能是:为颜色缓存区指定确定的值 和 void glClear(GLbitfield mask);功能是,清除缓存,将缓存清除为预先的设置值。 这是我在网上找的函数解释,但是一直都感觉缺少点什么,对这两个的理解也并原创 2016-08-29 15:58:19 · 3121 阅读 · 2 评论 -
双缓冲和单缓存的区别
双缓冲和单缓存的区别编码时遇到glutInitDisplayMode(unsigned int mode) ;函数,主要作用是设置初始显示模式,其中有两个可用形参不甚理解。分别为GLUT_SINGLE,GLUT_DOUBLE。其中GLUT_SINGLE指定单缓存窗口,GLUT_DOUBLE指定双缓存窗口。这里必须要搞明白双缓存窗口和单缓存窗口的区别。单缓存窗口:实际上就是将所有的绘图指令在窗口上执行原创 2016-08-29 09:59:52 · 3931 阅读 · 0 评论 -
实时渲染——三种渲染方法介绍
实时渲染,一般有三种渲染方法,多光源一次渲染,多光源多次渲染和延迟着色。多光源一次渲染:对于每个物体,计算所有光源对其的影响来对该物体进行渲染for each object do for each light do framebuffer = light_model(object,light);这是一个简单的方法,但是存在一些问题和缺陷。 第一个问题由于光照是针对每一个物原创 2017-02-25 11:08:30 · 11961 阅读 · 0 评论 -
OpenGL的矩阵变换详解——有图有真相
OpenGL有个小小的难点,就是矩阵变换的顺序问题。一不小心就会用错,变换后的物体和自己想要的完全不一样。为了自己的理解,也为了帮助别人的理解,我下面对矩阵变换做一个解释。当然,大片大片的文字肯定会让大家看的云里雾里,所以我特意画了一些示意图供大家理解。 首先向大家明确一点,当你在程序中调用矩阵变换函数时,实际执行顺序和调用顺序刚好相反,例如:glm::mat4 trans; tra原创 2017-04-28 23:22:19 · 6436 阅读 · 2 评论 -
Shadow volume实现细节
背景介绍背景介绍:目前阴影算法较为流行的有两种,分别是shadow mapping 和shadow volume。前者实现起来相对简单,可以发挥现在GPU可编程流水线的能力,但是由于先天不足,shadow mapping在处理动态光源/物体的时候开销过大,经常作为一种静态场景中的廉价替代物。而 Shadow volume 的强项恰恰是 shadow mapping 的短处,像 DOOM3 这种大量原创 2017-05-25 11:04:34 · 3563 阅读 · 13 评论 -
阴影映射总结
阴影映射技术,也就是在场景中产生物体阴影的技术。增加场景的真实感,和空间感。主要思路: 首先,我们以光的位置作为视角进行场景的渲染,由于在程序中设置了深度缓冲,所以被遮挡的物体,或者物体的一部分不会被看到,也就是说看不到的地方,就是场景中物体的阴影。我们可以使用深度缓冲技术,获得每个fragment的深度值(一般为0到1之间),阴影部分的深度值肯定比对应位置的遮挡物的深度值大。获得的同时,把深度值原创 2017-05-10 10:07:49 · 544 阅读 · 0 评论 -
OpenGL零碎知识点记录<仅供自己查看>
1:在几何着色器中,如果从顶点传入的原始位置坐标,没有被几何着色器作为中介传到片段着色器中的话,则不再显示原始顶点,仅仅显示几何着色器中生成的顶点。 2: uniform image2D 和uniform sampler2D 的区别。目前来看对于采样纹理的使用方法不一样: image2D 采样的话,使用//imageLoad — load a single texel from an image原创 2017-06-20 20:16:49 · 804 阅读 · 0 评论