RenderDoc图形调试器详细使用教程(基于DirectX11)
前言
由于最近Visual Studio的图形调试器老是抽风,不得不寻找一个替代品了。
对于图形程序开发者来说,学会使用RenderDoc图形调试器可以帮助你全面了解渲染管线绑定的资源和运行状态,从而确认问题所在。
RenderDoc官网
DirectX11 With Windows SDK完整目录
欢迎加入QQ群: 727623616 可以一起探讨DX11,以及有什么问题也可以在这里汇报。
运行程序
为了调试我们的程序,需要通过RenderDoc来执行程序。
选择File - Launch Application后,在Program - Executable Path中选择要打开的程序。
注意:在你自己编写的项目需要将exe放到项目(.vcxproj)所在的位置,或者让VS在生成程序的时候输出到项目位置!
如果待调试的程序需要加载Assimp的动态库,我们还需要添加环境变量:
然后就可以点击Launch运行程序了。
截取一帧画面
在进入程序后,按下Print Screen(PrtSc)键截取一帧有问题的画面,然后就可以看到程序窗口说已经捕获了一帧:
捕获完成后退出程序即可,捕获的一帧文件类型为*.rdc
你可以在一次调试截取多帧画面,但基本上目前我们只需要截取一帧画面就可以退出程序了。
事件浏览器(Event Broser)
下面是图形调试器的主界面:
事件浏览器展示了DirectX中关于ID3D11DeviceContext
的重要调用,呈现了这一帧绘制涉及到的Clear
、Draw
、Dispatch
、Present
和Resolve
等命令。选择具体某个事件,可以在下面的API Inspector
看到在这个事件之前大概15个DeviceContext
的调用事件。
事件浏览器会将绘制到同一系列渲染目标和深度缓冲区的事件折叠成一个Pass,我们可以展开观察里面的具体绘制过程。
在选中某次绘制后,我们可以观察的有:
- Texture Viewer:完成当前绘制后渲染目标的结果、深度缓冲区的结果、像素着色器调试
- Pipeline State:观察当前渲染管线有哪些阶段是被激活的,以及不同的阶段状态是怎样的
- Mesh Viewer:观察当前正在渲染的模型从顶点输入是什么情况,经过顶点着色输出后又是什么情况,并且能够观察正在渲染的模型
- Resource Inspector:观察当前绘制后有哪些资源,状态如何
接下来会按教程的顺序来讲可能需要查看的内容
Pipeline State
在管线状态中我们可以清楚地看到当前有哪些执行的阶段,选择IA(输入装配阶段)可以看到输入布局、顶点缓冲区输入和图元类型
如果找不到窗口可以去菜单栏Window找到Pipeline State。
Mesh Viewer
点击上图中的Mesh View内的立方体可以跳转到模型线框观察页面,同时可以观察输入的顶点数据:
通过Controls可以切换摄像机模式为第一人称,然后使用WSAD移动
如果屏幕上没有渲染出想要的东西,首先应当检查的是输出的顶点SV_POSITION
是否位于NDC空间内,具体为:
要调试某个顶点,只需要在VS Input中选择一个顶点右键 - Debug this vertex即可进入着色器调试。但调试环节我们留到后面再讲。
Texture Viewer
在Texture Viewer中我们可以观察绑定到管线上的图片(Input),以及渲染管线输出到的渲染目标、深度缓冲区(Output)。在选择某个Output图后,我们右键选中一个像素,右下角的Pixel Context就会显示具体的位置:
选择History可以查看在此之前有哪些绘制事件影响到当前像素,选择Debug则可以调试当前像素。
观察深度/模板缓冲区
选中深度/模板缓冲区,一般情况下越远的物体显得越白,越近显得越黑,且深度图的颜色分布大多在白色上。
而如果使用了反向Z,越远的物体显得越黑,越近显得越白,且分布大多在黑色上,这时候看深度图就是纯黑一片,根本不知道什么情况:
由于此时深度值大部分在靠近0的位置上,我们需要缩小显示范围来提高较远物体的亮度:
为了观察模板测试的结果,我们先选中Stencil,如果模板的输出值为1,可能需要将Range右边的条拖到最左边才看得到(白色区域模板值为1,黑色区域模板值为0):
在Overlay中,我们可以观察当前绘制中影响到的像素区域、深度测试(绿Pass红Fail)、模板测试、背面剔除等结果。下图演示了模型的线框在图中的位置:
Resource Inspector
在这里可以观察与当前绘制相关的所有资源:
选中某个资源后,可以看到和它相关的资源、资源在哪些事件中被用到、资源初始化相关的调用。
观察常量缓冲区
在管道状态的着色器阶段中,我们可以看到绑定的常量缓冲区:
其中Slot的名称来自着色器声明cbuffer时的名称,Buffer的名称则需要在C++代码中设置,具体参考下一节。
选择某一个常量缓冲区,点击Go处的箭头,我们就可以看到里面的具体内容:
注意:在当前教程中我们会传入经过DirectXMath转置后的矩阵,但是在这里观察值的时候,依然是以行矩阵的方式显示才是正常的!即平移分量位于第四行。
若常量缓冲区的值在从C++端传入到这里出现问题,你还需要去观察常量缓冲区的打包是否出现了问题。
关于HLSL的打包规则,可以查看这里:
深入理解HLSL常量缓冲区打包规则
为图形调试器的对象添加自定义名称
看前面的图片,Buffer在没有指定名称的时候默认是以Buffer 142
的形式显示的。等对象一多,我们就难以判别管线所绑定的对象是否正确。因此在某些需要的情况下,我们可以在C++代码来为对象指定名称。
在d3dUtil.h
中提供了两个系列的函数,一个用于D3D设备创建出来的对象,一个用于DXGI对象。通过SetPrivateData
方法,并使用WKPDID_D3DDebugObjectName
的GUID
使得我们可以为其设置图形调试器下的名称(string_view版本要求C++17,或者可以参照旧d3dUtil.h
中的实现):
// ------------------------------
// D3D11SetDebugObjectName函数
// ------------------------------
// 为D3D设备创建出来的对象在图形调试器中设置对象名
// [In]resource D3D11设备创建出的对象
// [In]name 对象名
inline void D3D11SetDebugObjectName(_In_ ID3D11DeviceChild* resource, _In_ std::string_view name)
{
#if (defined(DEBUG) || defined(_DEBUG)) && (GRAPHICS_DEBUGGER_OBJECT_NAME)
resource->SetPrivateData(WKPDID_D3DDebugObjectName, (UINT)name.length(), name.data());
#else
UNREFERENCED_PARAMETER(resource);
UNREFERENCED_PARAMETER(name);
#endif
}
// ------------------------------
// D3D11SetDebugObjectName函数
// ------------------------------
// 为D3D设备创建出来的对象在图形调试器中清空对象名
// [In]resource D3D11设备创建出的对象
inline void D3D11SetDebugObjectName(_In_ ID3D11DeviceChild* resource, _In_ std::nullptr_t)
{
#if (defined(DEBUG) || defined(_DEBUG)) && (GRAPHICS_DEBUGGER_OBJECT_NAME)
resource->SetPrivateData(WKPDID_D3DDebugObjectName, 0, nullptr);
#else
UNREFERENCED_PARAMETER(resource);
#endif
}
// ------------------------------
// DXGISetDebugObjectName函数
// ------------------------------
// 为DXGI对象在图形调试器中设置对象名
// [In]object DXGI对象
// [In]name 对象名
inline void DXGISetDebugObjectName(_In_ IDXGIObject* object, _In_ std::string_view name)
{
#if (defined(DEBUG) || defined(_DEBUG)) && (GRAPHICS_DEBUGGER_OBJECT_NAME)
object->SetPrivateData(WKPDID_D3DDebugObjectName, (UINT)name.length(), name.c_str());
#else
UNREFERENCED_PARAMETER(object);
UNREFERENCED_PARAMETER(name);
#endif
}
// ------------------------------
// DXGISetDebugObjectName函数
// ------------------------------
// 为DXGI对象在图形调试器中清空对象名
// [In]object DXGI对象
inline void DXGISetDebugObjectName(_In_ IDXGIObject* object, _In_ std::nullptr_t)
{
#if (defined(DEBUG) || defined(_DEBUG)) && (GRAPHICS_DEBUGGER_OBJECT_NAME)
object->SetPrivateData(WKPDID_D3DDebugObjectName, 0, nullptr);
#else
UNREFERENCED_PARAMETER(object);
#endif
}
在已经设置过名字的情况下,想要更名需要先调用nullptr_t
重载版本,再调用正常版本。
设置好后,在图形调试的时候一看名字就能知道绑定的情况了。
如果你不希望使用调试器对象具名化,可以在d3dUtil.h
的开头找到这样的宏:
// 默认开启图形调试器具名化
// 如果不需要该项功能,可通过全局文本替换将其值设置为0
#ifndef GRAPHICS_DEBUGGER_OBJECT_NAME
#define GRAPHICS_DEBUGGER_OBJECT_NAME (1)
#endif
将其修改后只会剩下默认的DDSTextureLoader
和WICTextureLoader
的对象具名化。
注意:在你的Release版本应用程序应该避免出现对调试对象名称的设置。你可以将相关代码移出项目。
查看着色器资源视图中的纹理资源
以下图像素着色器阶段的为例:
我们可以很清楚地看到资源的绑定情况,红色表示当前Slot没有资源绑定上去,如果对没有绑定纹理的对象进行采样,会在程序调试运行时的调试输出窗口看到DX Error。当然本示例红的也并不影响,因为会在着色器检查Dimension是否为0从而避开采样。
绿色的资源姑且认为是一个有UNKNOWN
含义的DXGI格式,在通过SRV具体化。点击Go的箭头我们可以观察传入的着色器资源。
查看管线状态、采样器
基本上光栅化状态、深度/模板状态和混合状态都是所见即所得
采样器则在像素着色器阶段选中采样器可以查看
虽然这些状态你也可以在C++看
着色器调试
接下来就开始进入到重点部分了,使用图形调试器的核心目的还是要观察着色器运行的时候遇到了哪些问题。当然有时候甚至会遇到该有的着色器却被跳过不执行的情况,这时候就先要去前面排查该绑定的资源、状态、着色器、输入是否都OK了,然后才是对上一个正常运行的着色器进行调试。
对于顶点着色器,在Mesh Viewer中选择要调试的顶点右键 - Debug this vertex即可
对于像素着色器,在Texture Viewer中的Output选择RT后,右键选取某一像素,在Pixel Context处点Debug即可
而调试计算着色器,需要在Pipeline State选择CS,按下图选择Debug,然后填写要调试的线程组编号和组内线程编号(或者全局线程ID):
然后就进入到了着色器调试界面:
因为鼠标操作麻烦,我们需要记住几个快捷键:F10单步跳过,F11单步进入,ctrl+F11单步跳出
左侧Constants & Resources
可以查看顶点输入、使用的常量、资源等,右侧Watch
可以添加变量观察
鼠标悬停在代码的变量可以观察变量值
右键代码Go to disassembly可以转汇编查看
左侧file list可以查看用到的hlsl文件,以及编译shader时候的预定义宏
此时首先你需要优先关注局部变量中各个会被用到的常量、输入值是否都是正常的,如果出现常量缓冲区中的值全0或者乱值的情况,说明常量缓冲区可能没有被更新。
修改着色器再运行
这是VS的图形调试器所没有的功能,在修改了某次绘制用到的着色器代码并编译后,就可以影响到当前及之后的所有绘制。
下面是一个例子,这里尝试修改某个绘制的像素着色器代码:
然后尝试修改下面g_VisualizePerSampleShaing
为true
,使得当前绘制的像素颜色强制为红色:
完成后选择Apply changes
,返回Texture Viewer
观察渲染目标的输出变化:
可以看到,那些执行PS的像素都被染成了红色,观看后续的帧也可以发现的确产生了影响:
如果要退回变化,则回到像素着色器的Edit处,选择Remove changes
即可。
以编程方式捕获图形信息
因为目前暂时还没有使用的需要,具体信息查看下面文档:
https://renderdoc.org/docs/in_application_api.html
如果某些DrawCall、Dispatch不是每帧都会产生的话,编程捕获的方式还是有必要的。
总结
调试技巧需要经常使用才能够熟练掌握,相比普通调试来说,图形调试会更加复杂。目前RenderDoc的调试体验比VS的图形调试器会好一些,并且最近VS的图形调试器有些问题,调试不了shader。在初学DX的阶段容易在资源管理上出问题,因此重点是要先确认在绘制之前,绑定到渲染管线的各种资源是否正常,然后才是对着色器代码进行调试。所以前期准备工作的出错一般占很大的一部分,而着色器代码引发的错误可能只是占较小的一部分。等到了渲染管线的资源绑定管理体系逐渐稳定以后,使用图形调试的重心才会逐渐转移到以着色器代码的调试为主。有时候图形调试器解决不了的问题,还需要仔细观察普通调试下的输出窗口是否有渲染管线绘制事件执行时输出的报错信息。
当然里面还有很多强大的功能没有挖掘出来,或者现在还不是比较常用而没列出来。有兴趣的读者可以查看renderdoc的文档:
Introduction — RenderDoc documentation
这篇博客在后续还会有所变动,因为后续个人的学习会引发新的调试需求而变动。
DirectX11 With Windows SDK完整目录
欢迎加入QQ群: 727623616 可以一起探讨DX11,以及有什么问题也可以在这里汇报。
原文地址:https://www.cnblogs.com/X-Jun/p/16075728.html
推荐阅读
-
41 个下载免费 3D 模型的最佳网站-使用说明:使用权限可能因型号而异。因此,在下载文件之前,请仔细检查每个下载页面上的许可证和使用权限。 17. Clara.io Clara.io 是一个创建 3D 内容的全球平台,也是一个培养新 3D 艺术家的社区。Clara.io 提供+100,000个免费的3D模型,包括OBJ,Blend,STL,FBX,DAE,Babylon.JS,Three.JS格式,用于 Clara.io,Unity 3D,Blender,Sketchup,Cinema 4D,3DS Max和Maya。 使用说明:免费,标准和专业帐户仅供个人使用,如果您需要将 clara.io 用于商业用途,请与销售团队联系。 18. 3DExport 3DExport是一个市场,您可以在其中购买和销售用于CG项目的3D模型,3D打印模型和纹理。它提供15 +不同的3D格式供下载,如3DS MAX(.max),Cinema4D(.c4d),Maya(.mb,.ma),Lightwave(.lwo),Softimage(.xsi),Wavefront OBJ(.obj),Autodesk FBX(.fbx)等。它还提供15种不同的语言! 使用说明:免费下载仅供个人和非商业用途。 19. 3D Warehouse 3D Warehouse是一个开放的库,允许用户共享和下载SketchUp 3D模型,用于建筑,设计,施工和娱乐!任何人都可以免费制作,修改和重新上传内容到3D仓库,您可以找到任何您能想到的东西,如家具,电子产品,室内产品等。 使用说明:3D Warehouse中的所有模型都是免费的,因此任何人都可以下载文件以用于SketchUp甚至其他软件,如AutoCAD,Revit和ArchiCAD。 20. CadNav.com CadNav是CGI平面设计师和CAD / CAM / CAE工程师的在线3D模型库,我们提供超过50000 +免费3D模型和CAD模型下载。在CadNav网站上,您可以下载高质量的多边形网格3D模型,3D CAD实体对象,纹理,Vray材料,3D作品,CAD图纸等。 使用说明:免费下载仅供个人和非商业用途。 21. All3dfree.net 就像网站名称一样,它提供免费的3D模型,还包括Vray材料,CAD块,2d和3d纹理集合,无需注册即可免费下载。它是不断更新的,因此您可以查找或请求3DS,MAX,C4D,skp,OBJ,FBX,MTL等格式的模型。 使用说明:所有资源均不允许用于商业用途,否则您将承担责任。 22. Hum3D 自2005年以来,Hum3D帮助来自3多个国家的80D艺术家节省3D建模时间,并制作逼真的3D模型,用于电影,视频游戏,AR应用程序和可视化。所有模型均由首席3D艺术家进行验证,他们检查其是否符合专业要求和最新的3D建模标准。 使用说明:免费下载仅供个人和非商业用途。 23. Artist-3D.com 艺术家-3D 库存的免费 3D 模型下载按通用类别排序。它为人体解剖学、汽车、家具、火箭、卫星等模型提供 AutoDesk 3DS Max 格式。您还可以在浏览他们的网站时找到教程和类似类型的建模。 使用说明:使用权限可能因型号而异。因此,在下载文件之前,请仔细检查每个下载页面上的许可证和使用权限。 24. Free the models 就像本网站的标题一样,它为3d应用程序和3d游戏引擎提供免费的内容模型。您可以为您的任何项目找到许多有趣且有用的模型!它提供3ds,wavefront,bryce,poser,lightwave,md2和unity3d格式的模型。还有一个很棒的纹理集合,可以在您最喜欢的建模和渲染程序中使用。 使用说明:您从这里下载的所有内容都可以免费使用,除非它不能包含在另一个免费的网络或CD收藏中,也不能单独出售。否则,您可以在商业游戏,3D应用程序或渲染作品中使用它。您不必提供信用,但如果您这样做,那就太好了。 25. Resources.blogscopia 本网站由一家名为Scopia的公司创建。他们制作3D图像和视频,您可以找到许多为CGI工作的信息架构设计的模型,所有这些都可以在现实生活中使用。您可以免费下载它们,但是,如果您想一次下载它们,您可以支付 3 到 9 欧元。 使用说明:您可以免费下载模型部分的所有文件。每个压缩文件都包含您也可以在此处找到的许可证。基本上,您可以对文件执行任何操作。唯一的限制是不归属于Scopia的重新分发。 26.ambientCG 1000+公共领域PBR材料适合所有人!环境CG是使用许多不同的方法和资产类型创建的,例如照片纹理(PBR),贴花(PBR),图集(PBR),照片纹理(普通),物质存档(SBSAR),雕刻画笔,3D模型和地形。您可以在所有项目中*使用它们! 使用说明:在 ambientCG 上提供下载的所有 PBR 材料、画笔、照片和 3D 模型均根据知识共享 CC0 1.0 通用许可提供。您可以复制、修改、分发和执行作品,即使是出于商业目的,也无需征得许可。信用将不胜感激。 不要满足于平庸的大理石纹理 - 立即使用我们的免费PBR大理石纹理升级您的3D设计。 27.Pixar One Twenty Eight 这是一个提供官方动画行业经典纹理的网站:皮克斯,创建于 1993 年,该纹理库包括 128 个重复纹理,现在免费提供。 它包含您来到的纹理,包括砖块和动物毛皮。肯定会有一些你可以使用的东西。 使用说明:皮克斯动画工作室的《Pixar One Twenty Eight》根据知识共享署名4.0国际许可协议进行许可。即使出于商业目的,您也可以重新混合、调整和构建您的作品,只要您以相同的条款对新创作进行信用和许可。 访问数以千计的免费纹理并提升您的设计游戏 - 立即开始下载! 28. 3DXO 即使有近 620 个免费贴纸可供下载,3DXO 也不是最大的资源,但它的内容非常有用,不需要注册。无论是简单的墙壁或地板,还是一些奇怪的小东西,您都需要的纹理都可以在此网站上看到。 使用说明:使用权限可能因型号而异。因此,在下载文件之前,请仔细检查每个下载页面上的许可证和使用权限。 29. 3DModelsCC0 3DModelsCC0 与其他产品的不同之处在于它包含超过 250+ 个高质量 3D 模型,并且本网站上的所有内容都是免费的,完全是公共领域!使用我们的模型时无需信用或归属! 使用说明:为每个人提供完全免费的公共领域内容。 30.Sketch up texture club Sketchup Texture Club是一个非营利性的教育和信息门户网站,由3D社区的图像促进协会管理,特别强调面向学生和建筑和室内设计专业人士的可视化和渲染技术,以及所有正在学习3D可视化的人。 使用说明:您无需支付版税或使用费。纹理可以免费下载和使用。不允许将纹理作为竞争产品出售或重新分发,即使图像被修改也是如此。 31. FlippedNormals FlippedNormal 是一个提供计算机图形和 3D 资产的市场,您可以找到许多用于雕刻、建模、纹理、概念艺术、3D 模型、游戏资产或课程的高级资产! 使用说明:使用权限可能因型号而异。因此,在下载文件之前,请仔细检查每个下载页面上的许可证和使用权限。 32. NASA 3D NASA 3D网站是一个在线门户,提供与太空和各种NASA任务相关的大量三维模型和模拟。该网站是用户友好的,并提供有关每个型号的详细信息。该网站允许用户探索和下载几种不同格式的模型,包括 OBJ、STL 和 FBX,只需单击下载按钮即可。 使用说明: 要下载模型,只需单击模型页面上的下载按钮并选择所需的格式。 33. 3DAGOGO (Astroprint) 3DAGOGO 是一个提供广泛 3D 模型的网站,包括角色、车辆和建筑物。3DAGOGO 的独特功能之一是它专注于适合 3D 打印的模型,使其成为希望创建物理原型或模型的设计师的绝佳资源。要使用 3DAGOGO,设计师只需在网站上搜索他们正在寻找的模型类型,然后下载 STL 格式的文件。 使用说明: 要使用 3DAGOGO,只需搜索所需的 3D 模型类型并下载 STL 格式的文件。根据需要自定义模型,并确保在将其用于商业目的之前检查使用权限。 34. FreeCAD FreeCAD是一款了不起的3D建模软件,可让您在计算机上创建令人难以置信的3D设计。该软件可免费下载和使用,它提供了广泛的工具和功能,可用于创建用于各种目的的3D模型。 该网站易于浏览,您可以找到开始使用FreeCAD的所有必要信息。此外,该网站还提供一系列教程和指南,可帮助您了解 3D 建模的来龙去脉。 使用说明: 要下载模型,请访问网站并从库中选择所需的模型。该网站还提供了一系列使用该软件的教程和指南。 35. Pinshape Pinshape是一个提供一系列3D打印模型的网站。网站上提供的型号质量很高,因此您可以确保您的最终印刷产品看起来很棒。该网站提供了广泛的模型,包括从家居用品到小雕像和珠宝的所有物品。 但这还不是Pinshape所能提供的全部!该网站还允许用户上传和共享自己的3D模型。这意味着您不仅可以下载出色的模型,还可以通过分享自己的设计为社区做出贡献。此外,Pinshape 提供了一系列自定义选项,因此您可以调整和调整模型以满足您的特定需求。 使用说明: 要下载模型,请在网站上创建一个帐户,搜索所需的模型,然后单击下载按钮。该网站还为每种型号提供了一系列定制选项。 36.Yeggi Yeggi 提供了大量免费的 3D 模型,您可以下载各种格式的模型,例如 STL、OBJ 和 FBX。该网站易于使用,您可以按关键字、类别或特定网站搜索模型。 Yeggi 对于任何寻找 3D 模型的人来说都是一个很好的资源。它提供了大量的模型集合,从日常物品到复杂的机械,以及介于两者之间的一切。该网站的收藏量在不断增长,每天都有新的型号增加。 使用说明: 要下载模型,请在网站上搜索所需的模型,然后单击下载按钮。该网站还提供指向托管模型的原始网站的链接。 37. Open3DModel 来自开放3D模型的图像 Open3DModel具有各种类别的模型,包括建筑,车辆和角色。无论您需要建筑物,汽车还是人的3D模型,都可以在此网站上找到。 该网站易于浏览,您可以按类别或关键字搜索模型。每个模型都附带预览图像和详细信息,例如文件格式、大小和多边形数量。此信息可以帮助您选择适合您需求的模型。 使用说明: 要下载模型,请访问网站,从库中选择所需的模型,然后单击下载按钮。 使用最好的 3D 资产管理工具简化您的 3D 制作流程。立即试用它们,将您的 3D 项目提升到一个新的水平! 38. 3DExport 对于那些为其 3D 设计项目寻找 3D 模型、纹理和其他资源的人来说,该平台是一个很好的资源。该网站有大量模型可供选择,包括 3D 打印对象、游戏资产等。用户可以按类别、文件格式或价格范围浏览,以找到适合其项目的完美资源。此外,3DExport 还提供一系列教程和其他 3D 资源,以帮助用户提高技能并创建更令人印象深刻的设计。 使用说明: 要使用 3DExport,只需创建一个帐户并浏览可用型号。您可以按类别、格式和价格进行搜索,以找到所需的型号。找到喜欢的模型后,只需下载它并开始在您的项目中使用它。 39.Blend Swap Blend Swap是一个社区驱动的市场,提供与Blender软件兼容的各种免费3D模型。该平台允许用户共享和下载模型、纹理和其他资产,以便在他们的项目中使用。 使用说明: 创建免费帐户后,您可以浏览社区上传的大量3D模型。当您找到要使用的一个时,只需下载它并将其导入您选择的 3D 软件即可。 40. 3DShook 3DShook 是一个高级 3D 模型市场,提供一系列用于建筑、游戏等各个行业的高质量模型。该平台提供基于订阅的模型,具有不同的定价计划,允许用户访问一系列模型。 使用说明: 注册免费帐户后,只需浏览3D模型库,选择您喜欢的模型,然后以您需要的格式下载它们。 41. Smithsonian X 3D 史密森尼 X 3D 对于正在寻找历史文物和文物的高质量 3D 模型的设计师来说,这是一个独特的资源。该平台提供了大量3D模型,这些模型是根据史密森尼博物馆和研究中心中的真实物体扫描创建的。 使用说明:
-
RenderDoc图形调试器详细使用教程(基于DirectX11)