摘要: 1、几何着色器(geometry shader)负责处理一个完成图元的顶点数据,重点在于一个完整的图元,经过它的处理后能够改变图元的图元类型、数目。 void EmitVertex();//完成了一个顶点的处理 void EndPrimitive();//标志完成了一个图元的顶点处理,生成一个图元 阅读全文
posted @ 2020-03-08 14:27 no-being 阅读(614) 评论(0) 推荐(0) 编辑
摘要: 1、细分着色器(Tessellation shader)有两个阶段来生成几何图元的模型网格。 1)在顶点着色阶段,需要设置所有线段、三角形构成处理的网格,使用有序顶点列表生成新的目标图元,。 2)将新生成的图元顶点放置到指定的位置上后进入下一阶段。 2、tessellation shader 处理一 阅读全文
posted @ 2020-03-06 16:44 no-being 阅读(680) 评论(0) 推荐(0) 编辑
摘要: 1、纹理着色器:生成图像或者照片的shader。它有如下特点: 1)生成的纹理内存占用小,因为使用算法生成的纹理易于压缩,差距在指数级别上。 2)生成的纹理没有固定的分辨率。 3)易于实现多种多样的处理效果,相较于预存纹理便利许多。 4)使用程序纹理计算体积而不是表面,在体积的剖面表现更加真实。 5 阅读全文
posted @ 2020-03-03 22:15 no-being 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 1、冯氏光照模型由三部分组成:环境光、漫反射光、镜面高光。 1)环境光:在一个存在光源的场景中,几何体不会是完全黑暗,光线总会通过近似无限的反射折射对场景中的几何体表面施加一定影响。环境光在大多数情况下被看作是一个常量参与计算。 2)漫反射光:光源对几何体表面的方向性影响,均匀散射到几何体表面的光源 阅读全文
posted @ 2020-02-29 17:34 no-being 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 1、使用纹理 GLSL从纹理中读取数据使用内置函数texture的多种重载方法 Gvec4 texture(gsampler1D, float texCoord[,float bias]) Gvec4 texture(gsampler2D, vec2 texCoord[,float bias])// 阅读全文
posted @ 2020-02-28 16:03 no-being 阅读(1019) 评论(0) 推荐(0) 编辑
摘要: 1、OpenGL支持同时使用多个纹理单元,使用GL_TEXTUREi进行标识,使用前需要先激活对应的纹理单元,默认GL_TEXTURE0是激活绑定的。 void glActiveTexture(GLenum texture) 注意,在对uniform进行设置时,纹理的写入并不是其对应的id而是其使用 阅读全文
posted @ 2020-02-26 21:39 no-being 阅读(874) 评论(0) 推荐(0) 编辑
摘要: 1、OpenGL用户裁剪需要使用一个vertex shader的内置变量gl_ClipDistance,它是一个声明的时没有指定大小的数组,因此需要重新声明它的大小或者将它作为一个编译时的常量使用。 gl_ClipDistance每一个元素对应一个平面,平面数目有限通常为8个,可以通过gl_MaxC 阅读全文
posted @ 2020-02-25 20:14 no-being 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 1、帧缓冲对象 帧缓冲对象对于离屏渲染、纹理贴图更新、缓存乒乓技术(buffer ping-pongqing,GPGPU的一种数据传输方式)的实现意义非凡,它减少了大量的数据拷贝工作。 建立帧缓冲需要负责建立帧缓冲使用的其它缓冲内容,也就是说,新建的帧缓冲只是一个空壳,具体的渲染缓冲对象被称之为帧缓 阅读全文
posted @ 2020-02-24 17:46 no-being 阅读(626) 评论(0) 推荐(0) 编辑
摘要: 1、OpenGL使用的是RGB颜色空间,例如三个颜色分量各占8位,那么就说这个颜色值色深24,能够表示2^24中颜色。 2、多重采样是基于采样的抗锯齿技术,有OGAA(ordered grid anti-sliasing)、SGAA(sparse grid anti-aliasing)、MSAA(m 阅读全文
posted @ 2020-02-23 23:22 no-being 阅读(930) 评论(0) 推荐(0) 编辑
摘要: 0、理论上点不应该存在面积,但要看得见总得有点东西是吧,默认大小为1.0,点的大小有一个范围并且也有一个增长的步长。需要开启GL_PROGRAM_POINT_SIZE才能在shader中使gl_PointSize修改点的大小生效。 glGetFloatv(GL_POINT_SIZE_RANGE, r 阅读全文
posted @ 2020-02-21 16:40 no-being 阅读(523) 评论(0) 推荐(0) 编辑
摘要: OpenGL 阅读全文
posted @ 2020-02-19 21:59 no-being 阅读(926) 评论(0) 推荐(0) 编辑
摘要: 本篇旨意在于讨论List的基本用法,不做全面讲解,仅仅涉及构造函数List、Add、RemoveAt 先看看这几个函数的代码 1、构造函数 2、Add public void Add(T item) { if (_size == _items.Length) EnsureCapacity(_size 阅读全文
posted @ 2019-02-07 17:00 no-being 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 1、去年年底我听见这样一句话“将所有函数内联,执行效率能够更高,函数本不应该存在”,对于一个大学才接触编程,大一看了一年动漫,大二看了一年小说,大三才开始拿起《C++程序设计》(狗都不愿意吃的青春啊),毕业不到一年的小菜鸟我来说,这简直是毁三观的陈述,我认为他的话是错误的,但是说不出充分的原理,编码... 阅读全文
posted @ 2015-05-16 12:14 no-being 阅读(3171) 评论(0) 推荐(1) 编辑
摘要: 1、至多有且仅有一个唯一的实例,不一定就一定要将构造函数的访问权限定为private,我们可以通过各种各样的方法来实现它的构造函数只能成功地执行一次。但是,将构造函数定为private直观省事。 2、既然我们将构造函数定为private,外部是无法构建它的实例。因此,我们就需要一个不需要它的实例也能 阅读全文
posted @ 2015-05-07 00:11 no-being 阅读(668) 评论(0) 推荐(0) 编辑
摘要: //1、找到数字字符或者加减号//2、计算值时需要保证不溢出,将要溢出时返回最大或最小值int myatoi(const char *str){ if ( NULL == str ) { printf("error, param is NULL\n"); re... 阅读全文
posted @ 2015-02-04 21:08 no-being 阅读(134) 评论(0) 推荐(0) 编辑