- 博客(6)
- 收藏
- 关注

原创 linux非阻塞的socket发送数据出现EAGAIN错误的处理方法
一、非阻塞socket 非阻塞套接字是指执行此套接字的网络调用时,不管是否执行成功,都立即返回。比如调用recv()函数读取网络缓冲区中数据,不管是否读到数据都立即返回,而不会一直挂在此函数调用上。在实际Windows网络通信软件开发中,异步非阻塞套接字是用的最多的。平常所说的C/S(客户端/服务器)结构的软件就是异步非阻塞模式的。 int32_t flags = fcntl
2016-08-13 18:18:17
9979
原创 Shader半透明物体的双面渲染
在学习Shader的过程中,或许手头上并没有半透明的物体,在验证shader代码的过程中,我们可以通过添加测试代码把不透明物体当成半透明物体来使用。使用Cull Front剔除正面,并且禁止深度写入Zwrite Offf,开启混合Blend SrcAlpha OneMinusSrcAlpha。双面渲染原理:先渲染背面,再渲染正面,最后把正面和背面颜色混合起来Blend SrcAlpha OneMinusSrcAlpha。半透明物体的渲染相对不透明物品麻烦一些,需要透过证明能够看清背面的颜色。
2023-12-24 19:31:23
588
原创 ShaderLab模板测试:3D模型穿帮问题
2> 对于场景中的物体(角色、怪物、可破坏物件、阻挡物件等)开启模板测试,关闭深度测试Zwrite Off,用于模板测试的模板值有逻辑层控制,越前面的越大;5> Pass comparisonFunction:如果模板和深度测试都通过,缓存中的模板值如何处理,默认是keep。7> ZFail comparisonFunction: 如果深度测试不通过,缓存中的模板值如何处理,默认是keep。6> Fail comparisonFunction:如果模板测试不通过,缓存中的模板值如何处理,默认是keep。
2023-12-24 18:20:37
469
原创 ShaderLab实现阴影效果
Unity可以利用阴影贴图来实现阴影效果,阴影贴图实现原理和深度缓存类似,将摄像机移动到灯光处,将片元从近到远排序,进行深度测试,测试通过的写入到阴影贴图中。再把摄像机回到之前的位置,进行正常的渲染,在片元渲染的过程中,从阴影贴图获取阴影,叠加到片元的颜色中去。3、在片元着色器中调用UNITY_LIGHT_ATTENUATION方法,来对阴影贴图进行采样;2、在顶点着色器中调用TRANSFER_SHADOW方法,来获取阴影贴图的坐标;
2023-12-22 00:16:17
389
原创 Blinn-Phong 光照模型实现
Blinn-Phong光照模型算法是对Phong光照模型的改进,修改的是镜面反射光的算法。先计算入射光线l和视角方向v的角平分线h,再计算h和法线normal的点积,来替代dot(reflect, viewDir)。镜面反射:灯光颜色 * 物体表面镜面反射颜色 * 光照反射方向与视角方向点积的光泽度次方幂。漫反射光:灯光颜色 * 物体表面漫反射颜色 * 法线与光源方向的点积。物体表面反射光线由三部分组成:环境光+漫反射光+镜面反射光。reflect :光照方向的反射方向。一、Phong光照模型。
2023-12-20 23:41:54
803
原创 编程之美:求二叉树中节点的最大距离(非递归法)
题目:如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义“距离”为两个节点之间边的个数。写一个程序求一颗二叉树中相距最远的两个节点之间的距离。树的高度:树中节点的最大层次相距最远的节点有2种情况:1)经过根节点,2个节点在根节点左右子节点为根的子树上(左右子树不存在的时候以根节点代替节点); 最远距离 = 左子树深度 + 右子树深度;2)
2015-09-10 17:34:57
1070
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人