自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 绘制四面体(切割后封闭)

参考url:https://lorensen.github.io/VTKExamples/site/Cxx/GeometricObjects/Cell3DDemonstration 效果图: 实现: vtkSmartPointer<vtkUnstructuredGrid> Make...

2019-12-10 15:20:00 103 0

原创 基于PBR绘制球

参考: https://learnopengl.com/PBR/Theory https://learnopengl.com/PBR/Lighting 请先看下参考的两个文章,特别是是第一个,看不懂看这个估计很费劲 重点在片段着色器 效果图: 截图工具不怎清楚 主要代码实现 绘制球: ...

2019-11-07 18:07:34 61 0

原创 帧缓冲整理

参考地址: https://learnopengl-cn.readthedocs.io/zh/latest/04%20Advanced%20OpenGL/05%20Framebuffers/ https://www.jianshu.com/p/69c7707afb6f 1.创建帧缓冲 ...

2019-11-05 14:44:59 56 0

原创 通过指定cellid获取周围cellid信息,改变指定cellid的颜色

参考url:https://lorensen.github.io/VTKExamples/site/Cxx/PolyData/CellEdgeNeighbors/ 1.根据指定的cellid获取周围cellid信息 void getNeighborCellID(int cellid,vtkPoly...

2019-10-31 15:51:18 135 0

原创 使用zlib对字符串进行压缩

编译好的zlib库: https://download.csdn.net/download/yuxing55555/11938358 参考源码中的示例:zlib-1.2.11/test/example.c 压缩,解压缩及其测试: 在.pro中添加: ZLIB_DIR = F:/zlib/qt5.3...

2019-10-30 11:22:17 193 0

原创 一个使用vtkImplicitWindowFunction的示例

效果图: 示例: vtkSmartPointer<vtkQuadric> quadric = vtkSmartPointer<vtkQuadric>::New(); quadric->SetCoefficients( 0.5,1,.2...

2019-10-21 14:58:26 111 0

原创 pbr_Theory

原文url:https://learnopengl.com/PBR/Theory 只写了一部分,看不太懂 理论 PBR,也就是通常所说的基于物理的渲染,是一组渲染技术,它们或多或少地基于与物理世界更接近的底层理论。由于基于物理的渲染旨在以一种物理上合理的方式模拟光线,因此它通常看起来比我们原来的照...

2019-10-15 15:43:52 52 0

原创 使用vtk绘制体

vtkSmartPointer<vtkDICOMImageReader> reader = vtkSmartPointer<vtkDICOMImageReader>::New(); reader->SetDirectoryName("E:...

2019-10-14 10:09:10 37 0

原创 VTK使用NVIDIA RTX添加gpu加速射线跟踪

原文url:https://blog.kitware.com/paraview-and-vtk-add-gpu-accelerated-ray-tracing-with-nvidia-rtx/ ParaView and VTK add GPU-accelerated ray tracing wit...

2019-10-12 14:41:05 286 0

原创 使用VTK引入基于物理的渲染

原文地址:https://blog.kitware.com/vtk-pbr/ Introducing Physically Based Rendering with VTK Introduction 介绍 Until VTK 8.2, surface shading through the v...

2019-10-12 14:26:29 129 0

原创 vtk中四元数的使用

1.使用 //构造旋转四元数 vtkQuaterniond rotation; rotation.SetRotationAngleAndAxis(vtkMath::RadiansFromDegrees(90.0),0.0, 1.0, 0.0); //构造旋转点四元数...

2019-09-23 17:22:18 100 0

原创 绘制一个球体并贴纹理,加载bmp图片

效果图: 纹理图: 源码: #include <iostream> #include <stdlib.h> #include <fstream> #include <assert.h> #include <GL/freeglut.h>...

2019-08-22 14:49:23 357 0

原创 对一个整整和它自身减1进行&操作----产生随机数

int a = 100; int b = 0; while(a > 0){ b++; a = a&(a-1); } b=? b的值为a转为二进制中1的个数 static unsigned long next = 1; int myrand(void) /* RAN...

2019-08-02 17:39:49 58 0

原创 Opengl中给矩形添加纹理和绘制一个立方体

效果图: 源码: #include <stdio.h> #include <string.h> #include <GL/glew.h> #include <GL/freeglut.h> #include <string> #inclu...

2019-08-01 17:07:42 243 0

原创 CUDA相关

Simple Reference Basic CUDA samples for beginners that illustrate key concepts with using CUDA and CUDA runtime APIs. Utilities Reference Utility sam...

2019-07-07 08:17:46 271 0

原创 Vulkan学习--22.加载模型

载入模型: 使用 tinyobjloader 库来从 OBJ 文件加载顶点数据。tinyobjloader 库是一个简单易用的单文件 OBJ 加载器,我们只需要下载 tiny_obj_loader.h 文件,然后在代码中包含这一头文件就可以使用它了。 我们暂时不使用光照,只简单地将纹理贴在模型上。...

2019-04-09 15:10:23 123 1

原创 Vulkan学习--21.添加深度缓冲

深度缓冲: 绘制多个图像时,会按顺序进行绘制并显示,而不是按空间坐标的关系,有两种方式可以解决这个问题: • 按照深度坐标对绘制调用进行排序 • 使用深度测试 通常我们使用第一种方式来绘制需要透明的对象。使用第二种方式来绘制一般对象。 使用第二种方式需要用到深度缓冲。深度缓冲是用于存储片段深度值的...

2019-04-09 13:30:52 167 0

原创 Vulkan学习--20.组合图像采样器--实现矩形纹理贴图

组合图像采样器: 一种新的描述符类型,着色器可以通过这一类型的描述符访问图像资源. 1.修改描述符布局,描述符池和描述符集来使用组合图像采样器描述符 2.添加纹理坐标信息到 Vertex 结构体 3.修改片段着色器从纹理中读取颜色数据。 示例: //顶点结构体 struct Vertex{ ...

2019-04-09 11:19:52 150 0

原创 Vulkan学习--19.创建纹理图像视图和采样器

采样器: 在着色器中是可以直接访问图像数据,但当图像被作为纹理时,我们通常不这样做。通常我们使用采样器来访问纹理数据,采样器可以自动地对纹理数据进行过滤和变换处理. 采样器进行的过滤操作可以很好地处理纹理采样过密的问题。考虑一个被映射到一个几何图元上的纹理,每个纹素占据了多个片段。如果我们直接采样...

2019-04-09 10:17:31 142 0

原创 Vulkan学习--18.使用纹理图像

在我们的程序中使用纹理,需要采取下面的步骤: • 创建设备内存 (显存) 支持的图像对象 • 加载图像文件的像素数据 • 创建图像采样器 • 使用图像采样器描述符采样纹理数据 之前,我们对图像对象已经有所熟悉,我们的渲染操作是在我们获取的交换链图像上进行的,但我们还没有自己创建过图像对象。现在,我...

2019-04-04 17:43:20 350 0

原创 Vulkan学习--17.描述符布局、缓冲、描述符池和描述符集

现在,我们已经可以传递顶点属性给顶点着色器,但对于一些所有顶点都共享的属性,比如顶点的变换矩阵,将它们作为顶点属性为每个顶点都传递一份显然是非常浪费的。 Vulkan 提供了资源描述符来解决这一问题。描述符是用来在着色器中访问缓冲和图像数据的一种方式。我们可以将变换矩阵存储在一个缓冲中,然后通过描...

2019-04-04 15:21:38 302 0

原创 Vulkan学习--16.创建索引缓冲

绘制一个矩形可以通过绘制两个三角形来实现,如果不共享顶点,就需要 6 个顶点。共享顶点的话,只需要 4 个顶点就可以。可以想象对于更加复杂的三维网格,通过共享顶点可以节约大量内存资源。 索引缓冲是一个包含了指向顶点缓冲中顶点数据的索引数组的缓冲。使用索引缓冲,我们可以对顶点数据进行复用。上图演示了...

2019-04-04 09:59:06 48 0

原创 Vulkan学习--15.暂存缓冲

目的:暂存缓冲可以提升性能 现在我们创建的顶点缓冲已经可以使用了,但我们的顶点缓冲使用的内存类型并不是适合显卡读取的最佳内存类型。最适合显卡读取的内存类型具有 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT 标记,含有这一标记的内存类型通常 CPU 无法直接访问。在本章节,...

2019-04-04 09:28:35 170 0

原创 Vulkan学习--14.创建顶点缓冲

1.创建缓冲 2.申请内存 3.填充顶点缓冲 4.绑定顶点缓冲 我们首先创建一个 CPU 的缓冲,然后将我们要使用的顶点数据先复制到这个 CPU 缓冲中,最后,我们复制 CPU 缓冲中的数据到阶段缓冲 顶点着色器: #version 450 #extension GL_ARB_separate_s...

2019-04-03 17:51:09 166 0

原创 Vulkan学习--13.重建交换链

实现窗口大小改变时刷新图像: 示例代码: //标记窗口大小是否发生改变: bool framebufferResized = false; //为静态函数才能将其用作回调函数 static void framebufferResizeCallback(GLFWwi...

2019-04-03 16:22:43 87 0

原创 Vulkan学习--12.渲染和呈现

子流程依赖: 渲染流程的子流程会自动进行图像布局变换。这一变换过程由子流程的依赖所决定。子流程的依赖包括子流程之间的内存和执行的依赖关系。虽然我们现在只使用了一个子流程,但子流程执行之前和子流程执行之后 的操作也被算作隐含的子流程。在渲染流程开始和结束时会自动进行图像布局变换,但在渲染流程开始时进...

2019-04-03 14:08:52 81 0

原创 Vulkan学习--10.创建帧缓冲对象

我们在创建渲染流程对象时指定使用的附着需要绑定在帧缓冲对象上使用。帧缓冲对象引用了用于表示附着的 VkImageView 对象。对于我们的程序,我们只使用了一个颜色附着。但这并不意味着我们只需要使用一张图像,每个附着对应的图像个数依赖于交换链用于呈现操作的图像个数。我们需要为交换链中的每个图像创建...

2019-04-03 11:00:31 129 0

原创 Vulkan学习--9.创建图像管线

创建图像管线 可编程阶段: 1.载入着色器 2.创建着色器模块 3.创建着色器阶段 固定功能阶段: 在 Vulkan 不存在默认状态,所有状态必须被显式地设置,无论是视口大小,还是使用的 颜色混合函数都需要显式地指定。 1.顶点输入 2.输入装配 3.视口和剪裁 4.光栅化 5.多重采样 6.深度...

2019-04-03 10:12:22 198 0

原创 Vulkan学习--8.着色器模块概述

着色器模块概述 Vulkan 使用的着色器代码格式是一种叫做 SPIR-V 的字节码,这一字节码格式可以在 Vulkan 和 OpenCL 上使用。可以用它来编写图形和计算着色器,在这里,我们将它用于编写图形管线的着色器。GPU 厂商的编译器将字节码转换为原生代码的工作复杂度远远低于直接编译较高级...

2019-04-02 17:40:56 237 0

原创 Vulkan学习--7.图形管线概述

图形管线概述: 图形管线是一系列将我们提交的顶点和纹理转换为渲染目标上的像素的操作。 它的简化过程如下: input assembler 获取顶点数据,顶点数据的来源可以是应用程序提交的原始顶点数据,或是根据索引缓冲提取的顶点数据。 vertex shader 对每个顶点进行模型空间到屏幕空间的...

2019-04-02 17:19:50 142 0

原创 Vulkan学习--6.将交换链图像包装进 VkImageView

使用任何 VkImage 对象,包括处于交换链中的,处于渲染管线中的,都需要我们创建一个 VkImageView 对象来绑定访问它。图像视图描述了访问图像的方式,以及图像的哪一部分可以被访问。比如,图像可以被图像视图描述为一个没有细化级别的二维深度纹理,进而可以在其上进行与二维深度纹理相关的操作。...

2019-04-02 17:15:15 211 0

原创 Vulkan学习--5.创建一个窗口表面和交换链

• 创建一个窗口,窗口表面和交换链 1.检测交换链是否支持 2.启用交换链扩展 3.选择适当的表面格式 4.查找最佳的可用呈现模式 5.设置交换范围 6.创建窗口表面 7.创建交换链 8.查询交换链支持细节 Vulkan 是一个平台无关的 API,它不能直接和窗口系统交互。 为了将 Vulkan...

2019-04-02 16:47:05 245 0

原创 Vulkan学习--11.创建指令缓冲对象

基本命令缓冲区操作 在其他图形API中,应用程序可以通过进行API调用来设置诸如线宽之类的属性glLineWidth()。在幕后,驱动程序将此API调用转换为特定于GPU的命令,并将命令放入命令缓冲区。驱动程序还通过在应用程序视图之外创建和销毁命令缓冲区来管理命令缓冲区。最终,驱动程序将命令缓冲区...

2019-03-28 15:44:20 101 0

原创 Vulkan学习--4.创建 VkDevice(逻辑设备) 和 VkQueue(队列)

设备队列和队列系列 与其他图形API不同,Vulkan将设备队列暴露给程序员,以便程序员可以决定使用多少队列以及使用哪种类型的队列。 队列是用于向硬件提交命令的抽象机制。稍后您将看到Vulkan应用程序如何构建一个充满命令的命令缓冲区,然后将它们提交到队列以供GPU硬件进行异步处理。 Vulkan...

2019-03-28 15:43:27 73 0

原创 Vulkan学习--3.选择一个支持 Vulkan 的图形设备 (VkPhysicalDevice)

从Vulkan获取对象列表 在Vulkan中获取对象列表是一种相当常见的操作,并且API具有一致的模式。返回列表的API函数具有count和pointer参数。count参数是一个指向整数的指针,以便API可以设置其值。步骤是: 1.使用指向count参数的整数的有效指针调用该函数,并为指针参数调...

2019-03-28 15:42:39 509 0

原创 Vulkan学习--2.创建一个Vulkan实例

Vulkan API使用该vkInstance对象存储所有每个应用程序状态。应用程序必须在执行任何其他Vulkan操作之前创建Vulkan实例。 基本的Vulkan架构如下所示: 上图显示Vulkan应用程序链接到Vulkan库,通常称为加载器。创建实例会初始化加载器。加载程序还加载并初始化低级...

2019-03-28 15:41:47 227 0

原创 Vulkan学习--1.简介

简介 Vulkan是Khronos集团开发的高级图形API。其他图形API(如OpenGL和Direct3D)要求驱动程序执行从高级API到适合硬件的必要转换。当时的意图是让开发人员不必管理更复杂的图形硬件细节。 随着那些旧的图形API不断发展,它们慢慢地将越来越多的低级硬件功能直接暴露给程序员。...

2019-03-28 15:40:38 100 0

翻译 VTK8.2.0 更新说明

原文url:https://blog.kitware.com/vtk-8-2-0/ 此版本是一个次要版本更新,旨在使VTK 9.0的新构建系统出现重大变化之前,可以为启用VTK的应用程序提供主/开发分支中的大量改进。该版本继续我们的代码库现代化的道路,通常更好地利用现代编译器功能并删除不太值得维...

2019-03-27 15:50:40 1090 0

原创 qt5.6中使用vulkan--创建空白窗口

1.在.pro中添加 GLM_DIR = F:/opengl/glm-0.9.9.4/qt5.6/lib-release GLFW_DIR = F:/opengl/glfw-3.2.1/qt5.6/lib-release VulKan_LIB_DIR = D:/VulkanSDK/1.0.11....

2019-03-26 16:15:44 512 2

原创 vtkm读取.vtk文件,提取等值面并使用opengl显示

1.在.pro中添加 #vtkm--release VTK_M_DIR = F:/vtk-m/vtkm1.3.0-lib-5.6-release #freeglut FreeGLUT_DIR = F:/opengl/freeglut-3.0.0/qt5.6/lib-release #glew G...

2019-03-26 11:08:17 379 0

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