dylan55_you
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
OpenGL----透明度渲染-2:双向深度剥离 - 实现篇
本文详细解析了在OpenGL中实现双向深度剥离(DualDepthPeeling)技术的完整过程。该技术通过创新的Ping-Pong缓冲机制和多重渲染目标,实现了高效的多层透明物体渲染。文章从核心架构设计、数据结构、着色器实现到完整渲染流程,系统地介绍了关键技术要点,包括: 采用7个颜色附件的FBO布局,实现深度信息和颜色数据的分离存储 使用RG32F纹理格式巧妙编码前后深度边界 通过Ping-Pong缓冲技术解决读写冲突问题 四分支处理逻辑的片段着色器设计 基于遮挡查询的性能优化策略 通过完整的代码实现和原创 2025-07-04 08:22:26 · 122 阅读 · 0 评论 -
OpenGL----透明度渲染-2:双向深度剥离 - 基本原理篇
摘要:DualDepthPeeling是一种高效解决透明物体渲染顺序问题的技术。相比传统DepthPeeling每次仅剥离一层,该技术通过双向剥离机制同时处理前后两层,大幅减少渲染遍数。其核心采用Ping-Pong缓冲机制和7个颜色附件架构,利用滑动窗口概念避免重复处理中间层。实验表明,该技术能在3遍渲染中完成传统方法需5遍处理的5层透明场景,显著提升性能,为复杂透明场景渲染提供了可靠解决方案。原创 2025-06-27 08:46:14 · 151 阅读 · 0 评论 -
OpenGL----透明度渲染-1:传统Alpha混合
摘要: 透明度渲染是现代计算机图形学中的关键技术,但其顺序依赖特性(Alpha混合的非交换性)导致复杂场景中出现视觉伪影。本文通过代码示例展示了三个半透明球体相互穿插时的渲染问题:当视角变化时,球体颜色会因深度排序临界点突变而产生不自然的"跳跃"效果。这种问题源于传统渲染方法无法正确处理重叠透明表面的顺序。文章详细分析了Alpha混合的数学原理和局限性,包括几何交叉、动态场景排序开销等问题,并探讨了顺序无关透明度(OIT)等解决方案的发展方向,为高质量透明渲染提供了技术参考。原创 2025-06-26 08:53:43 · 196 阅读 · 0 评论 -
OpenGL----OpenGL纹理与纹理缓存区
纹理(Texture)在计算机图形学中是指应用于几何体表面的图像或图案,用于增加视觉细节和真实感。纹理对象:在OpenGL中,纹理是通过纹理对象(Texture Object)来管理的。纹理对象存储了纹理图像数据以及相关的参数设置。纹理类型1D纹理):一维纹理,通常用于线性渐变等效果。2D纹理):二维纹理,最常见的纹理类型,用于贴图到二维表面。3D纹理):三维纹理,用于体积渲染等。立方体贴图):用于环境映射和反射效果。纹理坐标。原创 2025-04-28 09:38:28 · 330 阅读 · 0 评论 -
QML----QML+VTK+CMake示例
这个类是VTK和Qt Quick之间的桥梁,使得在现代的Qt应用程序中可以方便地使用VTK的强大3D图形和可视化功能。这样做的好处是简化了资源的部署和访问,因为所有的资源都被包含在单个可执行文件中,而不是分散在文件系统的不同位置。从上面的代码可以看到创建VTK交互的方式与标准VTK示例的方式是一样的,这一点能很方便,因为我们只需要完成QML界面和VTK的集成,后续所有3D的操作,都可以按VTK的方式来处理。这个示例提供了一个基本的框架,展示了如何在使用QML的应用程序中集成VTK渲染。原创 2024-08-22 08:40:22 · 711 阅读 · 2 评论 -
OpenGL----深入理解OpenGL上下文
OpenGL 上下文是一个包含所有 OpenGL 状态的对象。它管理和维护 OpenGL 的各种状态和资源,包括视口、着色器程序、纹理、缓冲区对象等。创建和管理 OpenGL 上下文是使用 OpenGL 进行图形渲染的基础。另外,多个上下文可以共享资源(如纹理和缓冲区对象),这对于多窗口或多线程应用程序非常有用。原创 2024-08-19 12:27:43 · 1490 阅读 · 1 评论 -
VTK----3D picking的原理、类型及实现
3D picking 是一种在三维场景中确定用户点击或指向的对象的技术。这在3D应用程序和游戏中非常常见,允许用户通过点击、拖拽或选择等操作与3D对象进行交互。3D picking 的过程涉及将2D屏幕坐标转换回3D场景空间,以找出该位置下的对象。射线投射(Ray Casting):最常见的技术,通过从相机位置发射一条经过鼠标点击位置的射线进入3D场景,并检测这条射线与场景中对象的交点。颜色拾取(Color Picking)原创 2024-07-17 08:13:49 · 1307 阅读 · 0 评论 -
VTK----深入理解3D坐标系统和相机
对于有3D开发经验的工作者来说,3D坐标系统和相机是再熟悉不过的内容了,所以这篇文字并不是对它们基本概念的的介绍,而是结合自身对于3D坐标系统和相机中一些似懂非懂问题(如下面的列表)的解答以及详细说明VTK是如何实现3D坐标系统和相机的。原创 2024-06-24 13:30:48 · 453 阅读 · 0 评论 -
VTK----修复vtkCubeAxesActor刻度线和网格线分离问题
vtkCubeAxesActor在和模式下,即vtkCubeAxesActor对象设置以下两个变量的值:此条件下,根据输入数据集的包围框绘制坐标轴,原vtkCubeAxesActor代码会出的情况,后通过修改vtkCubeAxesActor的源代码,已修复了该问题。原创 2024-06-12 09:07:25 · 562 阅读 · 1 评论 -
VTK----VTK库中OpenGL状态控制
vtkOpenGLState::SetEnumState用于设置OpenGL的状态,但代码中通过switch进行了类型判断,不在case中的类型,会直接return,导致OpenGL状态设置不进去。每次渲染时,都会检查OpenGL的状态,如果被外部修改了状态,在这个函数里会被重置。但对于不在VTK控制范围内的OpenGL状态,外部是可以修改的,下面是在。这样的OpenGL状态有很多(在glew.h中),VTK中能够对哪些OpenGL的状态进行控制,控制的方式是什么样的呢?可以看到两者是有区别的,启用。原创 2024-03-08 08:35:15 · 1475 阅读 · 1 评论 -
VTK----VTK中的渲染原理
下面三张图均是用VTK实现的,从中很容易看出它们渲染的效果是有区别的:第一张图:过于明亮,看不到阴影,颜色过渡也不平缓;第二张图:阴影过于明显,图整体不够明亮;第三张图:明亮适中同时保留了阴影。VTK是如何实现不同效果的渲染的?我们又能通过什么方式去控制渲染效果?原创 2024-02-24 01:51:50 · 2224 阅读 · 1 评论 -
VTK----VTK数据结构详解3(代码篇)
上篇文章()从计算机数据结构(数组、链表等)的角度对的实现原理进行了说明,下面从代码的层面详细说明它们的使用及相关实现逻辑。原创 2024-04-26 14:09:13 · 1468 阅读 · 0 评论 -
VTK----VTK数据结构详解2(计算机篇)
这四个单元列表还将单元分为0维、1维和2维类型。这很有用,因为可视化算法通常会以不同的方式处理不同拓扑顺序的数据。原创 2024-04-26 13:59:37 · 1129 阅读 · 0 评论 -
VTK----VTK数据结构详解1(几何篇)
在讲VTK的数据结构之前,我们先了解可视化数据的两个特征:离散性、有规则或无规则。下面我们就来看看,这些特征是如何塑造VTK的可视化数据模型的。原创 2024-04-20 14:15:48 · 1425 阅读 · 0 评论 -
VTK ---- 在VTK中实现printf调试着色器代码
该库证实可以直接从着色器使用printf打印输出,它的作用是简化复杂着色器程序的调试,这点非常宝贵,例如这种情况:必须查看循环中变量值的演变并且输出最终值,否则无法提供有关程序是如何工作的足够信息。目前该库是一个头文件,shaderprintf.h。该文件包含一个名为glShaderSourcePrint的函数,它在着色器需要打印功能时替代标准函数glShaderSource。该文件还包含一个名为getPrintBufferString的函数,它用于将所有打印内容以std::string的形式返回。原创 2024-04-18 09:20:37 · 275 阅读 · 0 评论 -
VTK----VTK库中OpenGL的工作流程
VTK库中有很多封装好的几何模型,例如:vtkArrowSource、vtkConeSource、vtkCubeSource等等。了解这些模型在VTK中是如何以OpenGL的工作流程绘制出来的,就能轻松的实现VTK代码到OpenGL代码的转换,同时也是掌握VTK底层工作机制的一个比较好的方法。另外,对于VTK实现的一些特殊功能(例如以球的方式绘制点)也能知道它内部的实现原理。注:VTK创建这些对象的顺序会稍有差异。原创 2024-03-08 08:43:48 · 774 阅读 · 1 评论 -
VTK----VTK的事件机制
事件的发送和接收对于一个应用或系统来说是一个基本的功能,所以一些通用的库对应地也建立了自己的一套管理事件的机制,例如QT、VTK都有自己的事件管理机制。VTK库中定义了很多的事件,这些事件是如何进行管理的,下面从三个方面来详细的说明。原创 2024-03-18 08:29:23 · 1000 阅读 · 0 评论 -
VTK----VTK实现三维网格数据的显示
根据提供的数据文件,实现数据的解析及三维可视化。原创 2024-02-20 23:35:31 · 714 阅读 · 0 评论 -
OpenGL----OpenGL实现光源位置指示(附带VTK实现)
OpenGL实现光源位置指示,用于模拟类似三维超声中光源和人体模型的位置关系。原创 2024-02-06 08:32:45 · 835 阅读 · 1 评论 -
VTK----Swig实现C++的VTK对象到Python的传递
本文详细描述了如何通过脚本编译生成带Python包的VTK库,如何用Swig实现将C++的VTK对象通过接口打包给Python使用,以及说明了每一步遇到的错误是如何解决的。原创 2023-12-21 17:37:39 · 1229 阅读 · 0 评论
分享