畅销书

OpenGL 核心技术之立方体贴图

可紊 提交于 2020-02-29 18:16:32
笔者介绍: 姜雪伟 ,IT公司技术合伙人,IT高级讲师,CSDN社区专家。特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你 架构 3D游戏引擎》电子工业出版社和《 Unity3D 实战核心技术具体解释》电子工业出版社等。 CSDN视频网址: http://edu.csdn.net/lecturer/144 在这里介绍立方体贴图主要是告诉读者,利用立方体贴图原理。我们能够做非常多事情:比方天空盒,环境映射中的反射和折射效果等等。当然环境映射也能够使用一张纹理贴图实现。这个会在博文的最后给读者介绍,以下開始介绍立方体贴图实现原理。 我们在游戏开发中通常的做法是将2D纹理映射到物体的一个面上,本篇博文介绍的是将多个纹理组合起来映射到一个单一纹理,这就称为立方体贴图。在介绍立方体贴图前。先解释一下纹理採样,假设我们有一个单位立方体。有个以原点为起点的方向向量在它的中心。 从立方体贴图上使用橘黄色向量採样一个纹理值看起来下图: 注意,方向向量的大小无关紧要。一旦提供了方向,OpenGL就会获取方向向量碰触到立方体表面上的对应的纹理像素。这样就返回了正确的纹理採样值。 方向向量触碰到立方体表面的一点也就是立方体贴图的纹理位置。这意味着仅仅要立方体的中心位于原点上。我们就能够使用立方体的位置向量来对立方体贴图进行採样。然后我们就能够获取全部顶点的纹理坐标。就和立方体上的顶点位置一样

阴影算法技术讲解

坚强是说给别人听的谎言 提交于 2019-11-29 13:27:03
笔者介绍: 姜雪伟 ,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你 架构 3D游戏引擎》电子工业出版社和《 Unity3D 实战核心技术详解》电子工业出版社等。 CSDN视频网址: http://edu.csdn.net/lecturer/144 图形学渲染与算法是紧密相关的,算法对于程序员来说非常重要,掌握算法编程就掌握了编程的精髓,阴影算法与光源是紧密相关的,阴影算法本身是基于从光的角度呈现为阴影图的想法。聚光灯光源的照射方式与相机的视锥是很类似的,聚光源具有发射位置和照射的方向矢量,当我们远离光源时,光线覆盖的区域会增长,效果如下图所示: 通过上图可以看出,聚光灯的照射区域像平截头体一样,使得更容易实现阴影映射,因为我们可以使用相同的透视投影矩阵作为照相机,以便渲染到阴影贴图中。用点光源灯实现阴影映射是一个挑战,但是我们能够通过渲染成立方体图来解决它。 然而,投影仍然是透视的。 现在让我们来思考平行光。 平行光 具有方向但不是位置。 它通常用于模仿太阳的光照,由于其大小和距离跟平行光线类似: 在这种情况下,我们不能再使用透视投影, 使用正交投影。 本身的想法是将所有光线聚光在一个点(相机)中,光线保持平行,因此不会产生3D效果。 在下图中,我们使用左侧的透视投影和右侧的正投影像,效果如下图所示:

学习游戏服务器编程进阶篇之全球同服技术架构

不想你离开。 提交于 2019-11-29 13:25:09
笔者介绍: 姜雪伟 ,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你 架构 3D游戏引擎》电子工业出版社和《 Unity3D 实战核心技术详解》电子工业出版社等。 CSDN视频网址: http://edu.csdn.net/lecturer/144 服务器架构技术一直是技术热点,比如比较流行的游戏服务器,各种数据平台系统等等都离不开服务器的架构设计,服务器架构设计的好坏直接决定了用户对产品使用的体验,在互联网时代,全世界用户或者玩家的距离已经开始变的越来越小,我们做的各种平台设计要能满足全球用户的使用已经成为了现实,数据的共享已经成为当前急需解决的问题。 游戏服务器在这块技术也已经打通,比如COC海盗奇兵,皇室战争游戏,它们的架构设计采用的就是全球同服架构设计,很多开发者对此感觉很难,其实利用现有的开源技术我们同样可以自己搭建一个全球同服的服务器,而且可以满足实时在线玩家几万到几十万人。下面将搭建全球同服服务器涉及到的技术给读者一一介绍: 全球同服 第一个摆在我们面前的问题是时间问题,地球上不同的国家,他们的时差是不同的,不同的时差的人要实现全球同服,需要在服务器这块处理好,解决方案是需要在不同的地区布置一组服务器,这些服务器数据最终要统一到一个数据库中,比如中国大陆玩家可以通过香港服务器登陆到美国服务器

双缓冲技术讲解

旧街凉风 提交于 2019-11-29 13:21:22
笔者介绍: 姜雪伟 ,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你 架构 3D游戏引擎》电子工业出版社和《 Unity3D 实战核心技术详解》电子工业出版社等。 CSDN视频网址: http://edu.csdn.net/lecturer/144 首先要搞清楚计算机运行原理,计算机载运行时是将将最大的任务分解成多个任务,然后一个接一个地执行。 一个典型的例子,每个游戏引擎必须解决的问题是渲染。 当游戏画出用户看到的世界时,比如远处的山脉,连绵起伏的山丘,树木逐步渲染出来。 如果用户以这种方式逐步观看视图,那么一个连贯世界的错觉将会被打破。 场景必须快速地更新,显示一系列完整的场景,场景中每个对象都是立即出现。 而双缓冲技术就是解决这个问题,但要了解如何,我们首先需要检查计算机如何显示图形。像计算机显示器一样的视频显示器一次绘制一个像素。 它从左到右扫过每行像素,然后向下移动到下一行。 当它到达右下角时,它会扫描回到左上角,并重新开始。 它每秒大约六十次 也就是我们通常说的帧率- 我们的眼睛看不到扫描。 对我们来说,它是彩色像素的单个静态场景 - 一个图像。 你可以想象这个过程,就像一个将像素管理到显示器的小软管。 单独的颜色进入软管的背面,并将它们喷射到显示屏上,并向其中的每一个像素提供一点颜色。