- 博客(8)
- 收藏
- 关注
原创 一、PCL产生的PCD数据格式
有序数据集的优势在于,预先了解相邻点之间的关系,领域操作更加的高效,这样就加速了计算降低了PCL中算法的成本。另一个优势是通过控制文件格式,我们能够使其最大程度上适应PCL,这样能获得PCL应用程序的最好性能,而不用把一种不同的文件格式改变成PCL的内部格式,否则通过转换函数会引起额外的延时。注意:尽管PCD (点云数据)是PCL中的内部文件格式,但pel_io库也提供对前面提到的所有其他文件格式中保存和加载数据的支持。(2)对于无序点云数据集,它被设置为1(用来检查一个数据集是有序的还是无序的)
2024-10-18 15:16:44 365
原创 OPENGL(五) - OPENGL GLSL 着色器
所以,如果我们打算从一个着色器向另一个着色器发送数据,我们必须在发送方着色器中声明一个输出,在接收方着色器中声明一个类似的输入。着色器是一种非常独立的程序。现在,顶点着色器中的 layout 标识的 aColor 属性的位置为 1,只要我们将数组中的颜色值传入到 1 的位置,在传递到片段着色器中处理输出。我们在顶点着色器中设置的顶点颜色为红色,最终生成的图形就是红色的。虽然着色器是各自独立的小程序,但是它们都是一个整体的一部分,出于这样的原因,我们希望每个着色器都有输入和输出,这样才能进行数据交流和传递。
2024-09-09 12:32:35 2093
原创 OPENGL(四) - OPENGL 生成三角形
自此,所有东西都已经设置好了:我们使用一个顶点缓冲对象将顶点数据初始化至缓冲中,建立了一个顶点和一个片段着色器,并告诉了OpenGL如何把顶点数据链接到顶点着色器的顶点属性上。当我们打算绘制物体的时候就拿出相应的VAO,绑定它,绘制完物体后,再解绑VAO。就快要完成了,但还没结束,OpenGL还不知道它该如何解释内存中的顶点数据,以及它该如何将顶点数据链接到顶点着色器的属性上。这使其具有很强的灵活性的同时,它还的确意味着我们必须手动指定输入数据的哪一个部分对应顶点着色器的哪一个顶点属性。
2024-09-02 17:28:41 1655
原创 OPENGL(三)第一个OPENGL窗口
然而,当用户改变窗口的大小的时候,视口也应该被调整。我们可以对窗口注册一个回调函数(Callback Function),它会在每次窗口大小被调整的时候被调用。
2024-08-30 13:34:03 739
原创 设计模式(二)- 享元模式
在游戏中我们经常可以看到很复杂的场景,例如一篇森林,但是在图形程序员看到的是每秒百万次的多边形数据从CPU到GPU。因此就算有足够多的内存描述森林,但CUP到GPU的部分也过分的繁忙了,整个性能也会非常的差劲。在这个例子中,是每棵树的位置,拉伸和颜色。然后,我们分别发送每个树独特的数据——位置,颜色,大小。这里可能有草,泥土,丘陵,湖泊,河流,以及其它任何你可以想到的地形。享元,就像它的名字暗示的那样, 当你需要共享类时使用,通常是因为你有太多这种类了。状态, 在这里的例子中,是树的网格和纹理。
2024-08-28 19:44:11 563
原创 OPENGL(二):创建GL窗口前的准备
除了GLFW之外,你还需要添加一个链接条目链接到OpenGL的库,但是这个库可能因为系统的不同而有一些差别。用户可以使用预定义好的CMake脚本,根据自己的选择(像是Visual Studio, Code::Blocks, Eclipse)生成不同IDE的工程文件。以上的OpenGL(gl)版本(我们的教程中将使用3.3版本,但更新的版本也能用)。从源代码编译库可以保证生成的库完全适合你的操作系统和CPU的,而预编译的二进制文件则并非总是提供或者适合你的CPU。幸运的是,有些库能简化此过程,其中。
2024-08-27 20:59:45 1718
原创 OPENGL(一)- 简介
因此从OpenGL3.2开始,规范文档开始废弃立即渲染模式,并鼓励开发者在OpenGL的核心模式(Core-profile)下进行开发,这个分支的规范完全移除了旧的特性。现代函数的优势是更高的灵活性和效率,然而也更难于学习。至于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者自行决定(译注:这里开发者是指编写OpenGL库的人)。现代函数要求使用者真正理解OpenGL和图形编程,它有一些难度,然而提供了更多的灵活性,更高的效率,更重要的是可以更深入的理解图形编程。
2024-08-27 19:40:36 470
原创 设计模式(一)- 命令模式
如果在撤销后选择了新命令,那么清除命令列表中当前的指针所指命令之后的全部命令。感悟:开发中,对于用户可自由配置的按键操作,可以将命令抽象出来,具体的命令去继承基类,在操作类中将命令基类以成员变量的方式存储,这样每个命令就可以自由的配置。上面的例子有很大的局限性,每种实体都具有自己独特的 jump() 方式等,这样,上述的例子就不能使用了。当游戏中需要类似 AI 的角色,这角色只需要执行一系列的命令(例如:游戏中需要自动演示的时候)。命令的一次性,让我们的指令可以被取消,我们为每个类定义一个需要实现的方法。
2024-08-26 18:28:03 343
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人