自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 使用OpenGL的计算着色器对矩阵并行计算

代码功能为对一个6*10(6行10列)的矩阵求列向量的和,输出1*10的结果。

2024-09-03 20:03:41 268

原创 OpenGL 计算着色器用法

这段代码是一个使用 OpenGL 计算着色器(Compute Shader)进行数据处理的示例。将着色器存储缓冲区映射到客户端内存,并读取处理后的数据。创建一个包含 8 个浮点数的数据数组。打印处理后的数据到标准错误流中。载入计算着色器程序并使用。取消映射,并返回 0。设置为当前程序对象。

2024-09-02 14:36:02 284

原创 基于VTK的CAE/CAD软件高性能渲染技术方案

在使用VTK作为CAE/CAD软件的渲染引擎时,VTK本身基本没有对渲染性能进行优化处理,这就需要开发者针对性能需求进行方案和代码层面的设计。笔者在已有的CAE软件开发经验的基础上,基本理解了软件所涵盖的所有渲染功能需求,并结合已了解的渲染方案,总结性的设计一个基于VTK的高性能的渲染库,用以支持在结构力学,动力学,流体力学,电磁场四个方向的CAE软件渲染模块。在使用OCC几何内核作为几何内核和场景下,几何模型一般可分为四个类型,点,线,独立面,带状面。

2024-07-24 18:05:48 306

原创 大规模场景遮挡剔除方案

接下来将要介绍利用硬件遮挡查询(Occlusion Query)的剔除方案。下图为利用OpenGL实现遮挡查询的方法。//生成一个查询对象//开始查询//渲染你想要检查的对象//结束查询//获取查询结果如果samples的值大于0,则表示被检查的对象至少被渲染了一次,即它至少部分处于屏幕上的可见区域内。如果samples的值为0,则表示对象完全不可见,没有被渲染到屏幕上。

2024-05-08 19:34:04 396

原创 并行渲染方案

在绘制大规模图形数据时,为了提高图形绘制效率,可使用并行绘制和图像融合的方式,下图展示了主要的实现方法:所谓并行绘制,其实是在绘制阶段使用多个独立的窗口对图形进行绘制,不同的窗口绘制模型的不同模块,然后在绘制结束时,利用图像融合技术将图像进行合并,在主窗口展示最终的绘制结果。在CAD\CAE软件中,一般以Part的概念对模型数据进行管理,这为给不同窗口分配模型数据带来了便利,使得在绘制前不需要考虑模型分块的相关技术。

2024-05-08 14:50:41 452

原创 三维网格模型离散及轻量化处理技术

下图反映了屏幕、帧缓冲区、Z缓冲区之间的对应关系 (屏幕由所有的像素点绘制而成,帧缓冲区每个单元存放对应像素的颜色值,Z缓冲区的每个单元存放对应像素的深度值一即 Z坐标),在OpenGL的渲染机制中已经存在利用Zbuffer进行消隐的算法。即在不同的结点的相关面中没有重合的单元面,重合的单元面只可能出现在相同结点的相关面中,对于某一结点而言,其相关面的数目是比较少的,这样就大大减少了单元面重合判断的计算量。中的各相关面进行比较,剔除其中包含的结点的整体编号完全相同的单元面,剩余的即为结构的边界面的集合。

2024-05-07 15:00:42 885

原创 动态LOD渲染的方案设计

Level of Detail(LOD)是一种在计算机图形学和渲染中常用的技术,旨在根据观察者与物体之间的距离或者物体在屏幕上的大小等因素,动态地调整物体的细节层次,以提高渲染效率和性能。通过在远处使用较低细节级别的模型,可以减少多边形数量和纹理贴图的使用,从而节省计算资源,提高渲染速度;而在近处则使用高细节级别的模型,以保持视觉质量和真实感。常见的LOD方法包括:基于距离的LOD:根据观察者与物体之间的距离来动态调整物体的细节级别。距离越远,使用的细节级别越低;距离越近,使用的细节级别越高。

2024-05-07 10:44:28 975

原创 c++在线程间传递函数

在优化VTK的渲染机制时,需要将一些流程交给子线程去做,但子线程里的某些函数由要交给主线程去做,所以测试了一个在线程间传递函数的Demo.

2024-03-21 17:36:07 460 1

原创 Blender如何优雅的使用OpenGL之Mesh

这篇是想讲一下Blender中对于Mesh对象的资源管理机制,为了脉络清晰,就先自下而上的梳理一下相关的资源吧。

2024-02-24 22:23:22 1021 1

原创 Blender如何优雅的使用OpenGL之UniformBuffer

先说明一下Blender在使用OpenGL 的uniform时,需要通过在程序中生成相关的布局限定语句字符串,然后传递给对应的着色器程序,而存储对应uniform的名称和绑定点的信息的对象是一个ShaderCreateInfo结构体。

2024-02-17 01:45:47 499 1

原创 Blender如何优雅的使用OpenGL之VertArrayObject

类,它是批处理的子类,包含了与GPUShaderInterface对应的所有VAO缓存。类,它与GLBatch类的方法相关,它管理VAO的状态,并为每个着色器接口()记住几何状态(顶点属性绑定和元素缓冲区)。Blender中,使用。

2024-02-14 00:11:36 444 1

原创 Blender如何优雅的使用OpenGL之VertBuffer

使用GPUVertBuf结构体在各种对象间传递数据;使用VertBuf类描述顶点数据的数据结构使用GLVertBuf类补充和OpenGL相关的参数:无符号整数类型的成员变量,表示OpenGL缓冲区的句柄。:指向GPUTexture类型的指针,表示如果缓冲区被绑定为缓冲区纹理,则使用的纹理。在首次使用时进行初始化。:布尔类型的成员变量,表示缓冲区句柄是否由GLVertBuf包装,即我们不拥有它并且不应该释放它。

2024-02-13 16:38:58 438 1

原创 Blender中一些优秀的方法汇总

当需要更新绘制区域时,Blender会根据需要重新绘制该区域,并将其绘制结果存储在相应的帧缓冲区中。这段注释中提到的处理方式是将绘制区域绘制到自己的帧缓冲区中。通过将绘制区域绘制到自己的帧缓冲区中,Blender可以更加灵活地管理绘制和更新的过程,以提供更好的性能和用户体验。在Blender中,存在绘制区域(Draw area)的处理方式,它指出将绘制区域绘制到自己的帧缓冲区(frame-buffer)中,这样可以重新绘制需要更新的区域,并从现有的帧缓冲区中进行复制(blit)来绘制其他区域。

2024-02-05 22:49:59 342 1

原创 Blender如何优雅的使用OpenGL之着色器资源GLShader

【代码】Blender如何优雅的使用OpenGL之着色器资源GLShader。

2024-01-30 20:28:34 642 1

原创 Blender如何优雅的使用OpenGL之GPUBackend

从GLBackend类的接口来看,可以确定GLShader等类也是继承自gup_shader_private.h文件中定的定义的Shader类,其他资源也是如此。由此可见,Blender使用了动态绑定的方法来管理渲染管线中的资源。在Blender中有多个引擎,其中Eevee引擎的特性是实时渲染性能好,这个系列的文章将以分析Eevee引擎的设计方法为目的,逐步探究Blender中为渲染工作所设计的各种类的作用。GPUBackend类是一个充分包含渲染管线资源的虚类,先看一下它的定义。

2024-01-30 20:05:39 581

原创 OpenGL中顶点数组对象(VAO)的管理接口介绍

需要注意的是,顶点属性的位置必须在链接顶点着色器和片段着色器之前通过glBindAttribLocation函数或者自动分配位置来指定。通常,在使用glGetAttribLocation函数之前,需要先链接顶点着色器和片段着色器,以确保顶点属性的位置已经被分配。然后,可以使用glGetAttribLocation函数查询顶点属性的位置,以便在后续的渲染过程中使用。顶点着色器中的顶点属性名称是由开发者自定义的,通常是通过使用in关键字在顶点着色器中声明的。它用于查询指定顶点属性的位置。

2024-01-24 18:44:53 544 1

原创 VTK如何优雅的封装OpenGL着色器程序

小结一下: vtkShaderProgram中主实现了着OpenGL着色器程序对象的构建和编译和着色器程序在运行时的VBO的数据布局配置,其中一些接口使用的name信息存在于OpenGL中,所以也可以使用name作为接口参数,此类中并不产生VBO对象,也就说明它并不操作vtk中的DataArray数据。之前提到了OpenGL中的着色器对象,它的构建和销毁一般是由OpenGL着色器程序对象来执行的,这个对象的作用就是配置OpenGL在渲染过程中用到的数据信息和着色器对象,简单说就是设置如何将数据渲染成图形。

2024-01-24 18:41:05 793 1

原创 VTK如何优雅的使用OpenGL

写这篇文章的目的就是想学习OpenGL的实践方法,以便在后面的项目中扩展渲染引擎的功能。

2024-01-24 15:34:53 821

vtkOpenGLPolyDataMapper.cxx

vtkOpenGLPolyDataMapper.cxx

2024-01-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除