新闻详情

新闻详情

首页 / 资讯中心 / 详情

Jupyter Notebook Markdown 实战:公式、表格、图片与导出

发布时间:2026/10/2 15:02:11来源:尧图网络
Jupyter Notebook Markdown 实战:公式、表格、图片与导出
1. 为什么值得花时间打磨 Jupyter 里的 Markdown很多人第一次打开 Jupyter Notebook 时注意力几乎全在代码单元格上Markdown 单元格不过是随手写两行注释的地方。等到真正拿它写实验记录、做数据分析报告、给同事交付分析结论时才会发现问题标题层级乱、公式渲染不出来、图片贴不进去、表格排不齐、导出成 HTML 之后样式全崩。这些都不是代码层面的问题而是 Markdown 在 Jupyter 这个特定环境下的使用技巧问题。我自己带过几个数据分析小组新人进来第一周最常见的抱怨就是Jupyter Notebook 里写文档太别扭了。但三个月后这批人几乎全都改口——他们发现只要把 Markdown 单元格用对了Jupyter 其实是一个相当顺手的可执行文档工具。代码跑出结果紧接着用 Markdown 解释这个结果意味着什么两者在同一份文件里交替出现比写完代码再单独开一个 Word 写报告高效太多。关键在于你得知道 Jupyter 的 Markdown 渲染引擎和标准 Markdown 有哪些差异哪些语法在这里能用、哪些会踩坑。这篇文章面向三类人刚开始用 Jupyter Notebook 做笔记的学生和转行者需要用它输出分析报告的数据从业者以及想把 Jupyter 当作轻量级技术写作工具的工程师。我会从 Markdown 单元格的基本操作讲起一路讲到目录生成、公式排版、表格处理、图片路径管理和导出转换这些进阶话题。所有内容都是我在实际项目里反复验证过的做法踩过的坑也会一并说清楚。需要先明确一个概念Jupyter Notebook 的 Markdown 单元格用的是MathJax渲染数学公式用marked 或 CommonMark 系解析器处理基础语法同时支持一部分 HTML 标签。这意味着它的能力介于标准 Markdown和可嵌入 HTML 的富文本之间。理解这个定位后面很多看似奇怪的现象就都能解释了。比如为什么有些 Markdown 编辑器里能用的语法在 Jupyter 里没反应为什么插入原始 HTML 有时候能生效有时候不行根子都在这里。2. 单元格操作与编辑模式的基础功2.1 两种模式的切换逻辑与常见误操作Jupyter Notebook 的单元格有编辑模式和命令模式两种状态这个设计对老手来说是效率来源对新手来说是第一个绊脚石。编辑模式下你光标在单元格里敲键盘就是在输入内容命令模式下单元格外围有蓝色边框键盘输入被解释为快捷键指令。按Enter进入编辑模式按Esc退回命令模式这两个操作会贯穿你使用 Jupyter 的全过程。把单元格从代码类型切换为 Markdown 类型在命令模式下按M即可切回代码按Y。这个快捷键我建议第一天就形成肌肉记忆。实际工作中我见过有人每次都去点工具栏下拉菜单一次切换要两三秒一份报告切几十次时间就这么耗掉了。还有个更隐蔽的问题在编辑模式下按M你只是在单元格里打了个字母 m什么类型切换都不会发生。很多人第一次遇到按了没反应就是因为模式搞错了。命令模式下按A在当前单元格上方插入新单元格按B在下方插入按D连按两次删除当前单元格。这几个键配合使用写文档的节奏会非常顺。我个人的习惯是先用B在代码单元格下面加一个 Markdown 单元格写完解释文字之后按Esc再B加下一个代码块形成代码—说明—代码—说明的交替结构。这种结构在后续导出和阅读时体验最好。注意删除单元格的D D是连按两次中间不要停顿太久否则只会触发一次删除。而且删除操作没有二次确认误删之后只能靠Ctrl Z部分版本对单元格级撤销支持不稳定或者从检查点恢复养成随手保存检查点的习惯。2.2 运行 Markdown 单元格到底发生了什么Markdown 单元格的运行和代码单元格的运行含义完全不同。代码单元格按Shift Enter是执行代码并输出结果Markdown 单元格按同样的组合键是把你的 Markdown 源码渲染成格式化文本显示出来。渲染之后你看到的是标题、加粗、列表、表格这些排版效果而源码被隐藏了。想修改已经渲染的 Markdown 内容双击单元格区域即可回到编辑状态或者选中后按Enter。这个双击操作也是新手容易卡住的地方——有人以为渲染完就不能改了其实只是回到了编辑模式而已。整个渲染过程本质上是前端 JavaScript 在浏览器里把 Markdown 文本解析成 HTML DOM 节点不涉及后端 Python 进程。这里有个对理解后面很多问题很关键的细节Markdown 单元格的渲染完全在前端完成。你关掉 Notebook 重新打开它重新解析一遍源码渲染你导出 HTML是把渲染结果连同样式一起打包。所以 Markdown 单元格里的语法错误不会像代码那样抛出 Traceback它会静默地按最接近的方式渲染或者干脆原样显示。排查问题时思路要转到前端解析器怎么理解这段文本上来而不是去翻日志。2.3 编辑体验的实用增强项Jupyter 本身提供的 Markdown 编辑体验比较朴素没有行号、没有语法高亮预览、没有快捷键补全。实际使用中我建议按需做一些增强但不要一上来就装一堆插件把环境搞复杂。最实用的两个方向一是代码自动补齐这个对 Markdown 单元格帮助有限主要作用在代码单元格安装jupyter-contrib-nbextensions之后开启 Hinterland 或者用更新的jupyterlab-lsp二是 Markdown 预览相关的扩展比如 Notebook 7 之前的 nbextensions 里有 Table of Contents 扩展能自动根据标题生成侧边栏目录。需要提醒的是Notebook 7 之后 nbextensions 体系发生了较大变化很多老教程里的jupyter contrib nbextension install命令在新版本上不再适用装完看不到扩展标签页是常见现象。如果你用的是较新版本优先考虑直接上 JupyterLab它对 Markdown 的支持、双栏编辑预览、表格对齐这些体验都比经典 Notebook 好一截。判断自己用的是哪个版本看浏览器地址栏里的路径和界面左上角的菜单结构就能大致区分。关于 Windows 上安装 Jupyter 的问题顺带说一句装 Anaconda 是最省事的路子它把 Python、Jupyter、常用数据科学库一次性配好避免了自己 pip 安装时遇到各种DLL load failed之类的报错。如果你确实想用纯 pip 手动装pip install notebook之后运行jupyter notebook浏览器打不开就去控制台看它输出的本地地址和 token手动复制到浏览器地址栏。3. Markdown 语法在 Jupyter 中的实际表现与差异3.1 标题层级与文档骨架的搭建Markdown 用井号表示标题层级#是一级##是二级最多到######六级。在 Jupyter 里标题的视觉样式由 Notebook 自带的 CSS 决定通常一级标题字号很大并且带下划线分隔二级三级递减。要注意的是文档标题建议用一级或二级不要一上来就在 Markdown 单元格里用一级标题当正文小标题否则生成的目录结构会非常混乱。一份规范的 Jupyter 分析报告我通常这样组织整个 Notebook 的最顶部放一个一级标题作为全文标题下面各分析阶段用二级标题阶段内部的细分点用三级标题。代码单元格穿插在对应标题之下。这样无论后续是用 nbextensions 生成目录还是导出到 HTML 用锚点跳转结构都是清晰的。标题之间保持层级连续不要从二级直接跳到四级解析器和目录生成工具对跳级的处理结果往往不如预期。标题里可以放行内代码和加粗比如## 3. 数据清洗处理缺失值这在 Jupyter 里能正常渲染。但标题里不建议放链接和图片链接在部分版本的目录生成扩展里会导致锚点抽取异常图片出现在标题栏视觉上也很怪。3.2 段落、换行与那个最容易踩的坑Markdown 里最反直觉的规则就是单个换行不等于换行。你在源码里敲一次回车相邻两行文本在渲染后还是连成一段要真正换行得在行尾留两个空格再回车或者中间空一行形成新段落。这个规则在标准 Markdown 里就存在在 Jupyter 里同样生效而且因为 Jupyter 的编辑区域宽度有限你很难一眼看出行尾到底有没有那两个空格。我的做法是尽量用空行分段而不是依赖行尾两个空格。空行分段的可读性更好源码里段落界限一眼可辨也不会因为编辑器自动去除行尾空格而失效。确实需要在同一段里强制换行比如写地址、写多行诗句再用行尾双空格或者插入br标签。Jupyter 对原始 HTML 的br支持是可靠的这个可以放心用。提示如果你发现自己写的 Markdown 渲染后所有文字挤成一大段先检查是不是段落之间没有留空行。这是排查此类问题的第一顺位嫌疑。还有一个 Jupyter 特有的注意点单元格内粘贴大段文本时如果你的剪贴板内容本身带有奇怪的换行符比如从某些 PDF 复制出来的文本渲染结果会非常难看。遇到这种情况先在纯文本编辑器里过一遍把软换行手动整理成正常段落再贴进 Markdown 单元格。3.3 列表、嵌套与任务清单无序列表用-、*或开头有序列表用数字加点。Jupyter 的解析器对这三类无序列表符号处理一致我统一用-源码看起来整齐。有序列表的数字其实不影响渲染结果——你从1.开始后面全写1.渲染出来照样是 1、2、3 自动递增这是 Markdown 的特性不是 bug。嵌套列表靠缩进实现缩进量建议统一用两个或四个空格不要混用 Tab 和空格。混用在简单结构里可能侥幸正常一旦嵌套三四层就会出现层级错乱尤其是在列表项里再嵌代码块或引用的时候。我的习惯是全程用两个空格做一级缩进列表里嵌代码块时代码块相对列表项再缩进四个空格。任务清单是个很实用的功能语法是- [ ] 未完成和- [x] 已完成渲染成带复选框的列表项。在 Jupyter 里这个语法是可用的适合用来写分析待办、数据检查项清单。不过要注意渲染后的复选框在 Notebook 里通常不可点击交互除非用了特定扩展它更多是视觉标记别指望用它做交互式清单。3.4 强调、引用与代码标记行内加粗用两个星号夹住斜体用一个星号加粗斜体用三个。下划线形式两个下划线加粗、一个下划线斜体在 Jupyter 里同样有效但和下划线的语义容易混淆我建议加粗统一用星号形式。删除线用两个波浪号夹住这个在 Jupyter 里支持良好适合标记已废弃的结论。引用块用大于号开头可以嵌套。Jupyter 里引用块的样式是左侧一条竖线加缩进文本视觉上很清楚。我常用引用块来标注注意事项和重要结论比在正文里加粗更醒目。引用块里可以嵌列表和其他行内语法但嵌套过深时样式会显得局促两三层以内比较合适。行内代码用一对反引号夹住代码块用三个反引号加语言标识。在 Jupyter 里语法高亮依赖前端的高亮库标识成python、javascript、bash、sql这些常见语言通常会正确着色写成不认识的标识就是纯文本显示不会报错。这里的代码块是静态展示用的不会被执行别和代码单元格搞混——Markdown 单元格里的代码块永远只是文本想执行代码必须用代码单元格。4. 进阶排版公式、表格、图片与目录4.1 数学公式的渲染与常见失效原因Jupyter 用 MathJax 渲染数学公式行内公式用单个美元符号夹住独立成行的公式用双美元符号夹住。这套语法和 LaTeX 一致所以你要写稍微复杂的数学表达直接套 LaTeX 写法即可。比如行内的 $\alpha \frac{\beta}{\gamma}$ 和独立显示的公式都能正常渲染。公式渲染不出来我总结下来无非几个原因。第一美元符号和公式内容之间紧贴着没留空格在某些解析器版本下会出问题稳妥写法是$ 公式内容 $两端留空格。第二公式里用了 MathJax 不支持的宏一般标准 LaTeX 数学宏都支持但自定义宏需要额外配置。第三公式所在的行内有其他会干扰解析的符号比如公式里出现未转义的下划线下划线在 Markdown 里是斜体标记会和公式语法打架这种情况下要么给下划线转义要么调整表达式写法。独立公式建议单独占一行前后各留一个空行避免和上下文段落混在一起。多行对齐公式用aligned环境写在双美元符号里$$ \begin{aligned} S \sum_{i1}^{n} x_i \\ \bar{x} \frac{S}{n} \end{aligned} $$这段在 Jupyter 里能渲染成对齐的多行公式。实际写统计分析报告时把关键指标的计算公式这样列出来比只写文字说明专业得多读者也能跟着验算。4.2 表格的书写规范与对齐技巧Markdown 表格用竖线和横线构成表头下面那行横线负责分隔同时通过冒号控制对齐。左对齐是:---居中是:---:右对齐是---:不写冒号默认左对齐。Jupyter 的表格渲染样式比较清爽表头有背景色区分。写表格时源码的竖线对齐是纯人工排版不影响渲染结果。竖线不齐源码难看但渲染照样正常追求源码美观的话可以在编辑器里手动对齐或者用支持表格格式化的插件一键整理。实际书写时我通常先保证内容正确最后再统一对齐一次这样效率高。一个必须提醒的限制Jupyter 的标准 Markdown 表格语法不支持单元格内换行和多行单元格。你没法在表格单元格里用回车换行硬要换行只能塞br标签虽然能生效但会让源码变得很难维护。如果表格内容确实复杂到需要多行单元格我的建议是改用 HTML 表格或者干脆把内容拆成多个简单表格甚至考虑用代码单元格里的 pandas 输出表格——后者的样式可控性和数据动态性都更好。语法作用Jupyter 支持情况# ~ ######标题层级完整支持- [ ]/- [x]任务清单完整支持不可交互表格中的br单元格内换行可渲染源码难维护$...$/$$...$$数学公式完整支持依赖 MathJaxbr段内强制换行完整支持目录锚点链接跳转到标题依赖版本和扩展表格里如果要展示竖线字符本身得用反斜杠转义写\|否则会被当成列分隔符把表格结构撕开。这种时候调试起来很费神因为渲染出的表格会莫名其妙多出一列。4.3 图片插入与路径管理的坑图片在 Markdown 里的语法是感叹号加方括号加圆括号方括号里写替代文本圆括号里写路径。在 Jupyter 里图片路径的解析规则和你启动 Notebook 的工作目录有关这是最容易出错的地方。相对路径是相对于 Notebook 文件所在目录还是启动目录答案是以 Notebook 文件所在位置为基准的相对路径更稳妥。但实际上很多人遇到图片显示不出来的情况就是因为在另一个目录下启动的 Jupyter而路径写的是启动目录的相对路径。我的做法是图片统一放在 Notebook 同级的images文件夹里引用时写images/xxx.png并且始终从 Notebook 所在目录启动 Jupyter两头对齐就不会出问题。![模型收敛曲线](images/convergence.png)如果图片路径里有空格或中文字符稳妥起见用尖括号把路径包起来![图](images/我的 图片.png)。另外Jupyter 里也可以插入网络图片直接写完整 URL 即可但要注意导出到别处时网络图片的可用性依赖对方网络环境重要报告建议用本地图片。注意把 Notebook 连同图片发给别人时必须把images文件夹一起打包否则对方打开看到的全是裂图链接。这是交付分析报告时的高频翻车点我见过不止一次。如果需要在图片下面加说明文字Markdown 本身没有专门语法我一般写成图片下面紧跟一行斜体文字视觉上就近似图注了。4.4 自动目录的生成方法Jupyter 经典 Notebook 本身不提供自动目录功能目录得靠扩展或者手动写锚点链接。如果装了 Table of Contents 扩展侧边栏会自动根据你 Markdown 单元格里的标题层级生成导航树点击就能跳转这个体验非常好。没装扩展的情况下可以手动写目录列表链接指向标题生成的锚点。标题锚点的规则大致是标题文本小写、空格替换成连字符、去掉标点和特殊字符。比如标题## 数据清洗与预处理对应的锚点在不同版本里可能不完全一致中文标题的锚点处理更是各家实现有差异所以手动写中文标题锚点经常跳不准。这就是我更推荐用扩展自动生成目录的原因省心且不会错。如果你在用 JupyterLab它的目录扩展集成度更高装好之后在左侧面板直接显示大纲跟着你的标题层级实时更新。写长报告时开着目录面板在大章节之间来回跳转几乎是瞬间的。5. 导出、转换与常见故障排查5.1 导出为 HTML、PDF 与 MarkdownJupyter 的导出功能入口在菜单 File 里经典 Notebook 是 Download asJupyterLab 是 Export。导出成 HTML 是最省事的Markdown 渲染结果、代码、输出、样式全都打包进去发给别人直接浏览器打开就能看。导出 HTML 时如果 Notebook 里有大量图片输出文件会比较大但胜在自包含不依赖外部文件。导出 PDF 是坑最多的。经典的路径是通过 nbconvert 走 LaTeX 生成 PDF这要求本机装了完整的 LaTeX 环境多数人卡在这一步。如果只是想要 PDF 的最终形态我更推荐先导出 HTML再用浏览器的打印功能另存为 PDF省去装 LaTeX 的麻烦排版效果也够看。导出 Markdown 会把 Notebook 内容转成纯 Markdown 文件代码单元格转成代码块适合把分析结论提供给其他文档系统使用。导出的文件里Markdown 单元格的渲染样式依赖模板里的 CSS。默认模板样式比较素如果你要做正式的报告输出可以自定义模板调整字体、颜色、页面边距这些。这块内容展开会很长简单说就是找到 nbconvert 的模板目录复制一份默认模板改 CSS再用--template参数指定。5.2 常见故障的排查顺序Markdown 相关问题排查我习惯按照渲染层—路径层—环境层的顺序走从最小成本的可能性开始排除。渲染问题看源码语法路径问题看工作目录环境问题看版本和依赖。现象最可能原因排查动作文字全挤成一段段落间缺空行检查段间是否留空行图片显示为裂图相对路径错或文件缺失确认工作目录与图片实际位置公式原样显示不渲染美元符号相邻无空格或宏冲突两端加空格检查特殊字符表格错列单元格内容含未转义竖线将竖线转义为|标题样式异常层级跳级或语法错写检查井号后是否有空格导出 PDF 失败缺 LaTeX 环境改走 HTML 转 PDF 路线代码单元格不执行内核未连接或崩溃看内核状态重启内核标题语法最常见的错误是井号后面漏了空格##标题在很多解析器里不会被识别为标题会原样显示成##标题。这个细节我检查过好几次别人的 Notebook中招率很高。5.3 代码单元格相关的连带问题虽然主题是 Markdown但实际工作中 Markdown 和代码单元格是混在一起的代码侧出问题同样会影响文档的完整性。比较典型的两个一是内核连接异常界面显示正在连接服务器或者代码单元格执行后没有任何反应、连行号都不变这通常是内核进程挂了或者前端与内核通信断了解决方式是重启内核必要时重启整个 Jupyter 服务。二是环境依赖缺失导致的导入报错比如ImportError: DLL load failed这类问题多发生在 Windows 上用 pip 手动安装后缺少运行时依赖换用 Anaconda 环境或者补齐对应运行库一般能解决。代码自动补齐在写分析脚本时能省不少敲键盘的功夫在较新的 JupyterLab 里通过语言服务器扩展提供配置好之后不仅能补全还能显示函数签名和文档。装这类扩展时注意它和当前版本是否兼容版本不匹配是扩展装了不生效的最主要原因。6. 我踩过的坑与实战经验汇总6.1 那些文档里不会写的实操心得第一个心得是关于检查点Checkpoint的。Markdown 单元格的内容改动不像代码执行那样有明确的运行痕迹你写着写着可能就覆盖了之前满意的版本。Jupyter 会自动保存检查点但间隔和时机不可控我现在的习惯是完成一个比较重要的章节后主动点一次保存触发一次检查点给自己留退路。第二个心得是关于源码整洁度的。一份给同事看的 Notebook如果 Markdown 单元格里混杂着大量被注释掉的废弃内容、临时笔记阅读体验很差。我养成的习惯是每个分析结论定型后回头把对应 Markdown 单元格清理一遍只留最终表述。这个动作花不了几分钟但对文档质量的提升非常明显。第三个心得是关于长文档的分寸。单个 Markdown 单元格内容不要塞得太长超过一两屏的滚动量编辑和定位都会变得困难。我一般把一个大章节拆成多个 Markdown 单元格配合标题形成逻辑分块既方便单独编辑也方便后面用目录跳转。提示写完一段重要内容后按一次Esc再按Ctrl S确保改动落盘。这个动作在长时间写作时应该形成条件反射。6.2 关于工具选型的几句实在话Jupyter 经典 Notebook 和 JupyterLab 在 Markdown 支持上有差异也有各自的使用场景。经典 Notebook 轻量、启动快、界面简单适合快速记录和临时分析JupyterLab 功能全、扩展生态好、多面板协作方便适合正式写作和长期维护的文档项目。如果你的 Markdown 写作需求比较重JupyterLab 的体验优势是实打实的值得切换。如果你已经在用 VS Code 写 Markdown也可以把 Jupyter 相关的写作工作部分迁移到 VS Code 里它对 Markdown 的支持很成熟安装 Jupyter 扩展之后同样能运行代码单元格式的内容还能导出成 HTML。选哪个工具最终取决于你的主要工作流落在哪里没有绝对的最优解关键是别在工具切换上反复消耗时间。6.3 内容安全与格式规范的顺手提醒最后说两个容易被忽视但影响交付质量的点。一是中英文混排的间距Jupyter 渲染 Markdown 不会自动在中英文之间加空格正式报告里手动加一下会让排版更舒服比如使用 Python 处理数据而不是使用Python处理数据。二是标点统一中文内容用全角标点英文和代码用半角混用会让整篇文档显得很不专业。这些细节单独看都微不足道但一份分析报告动辄几十个 Markdown 单元格每一处都注意一下最终呈现出来的专业度差距是肉眼可见的。我带新人的时候常说Jupyter 里的 Markdown 写作功夫一半在语法一半在习惯语法看几页教程就能会习惯得靠一次次实际交付慢慢磨出来。等你哪天发现自己写分析报告时不再纠结这段文字在 Jupyter 里怎么排而是自然而然地知道该用标题、引用还是表格这个技能就算真正装进脑子里了。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

PostGIS实战教程(四)叠加分析、几何修复、简化聚合+生产避坑大全 2026/10/2 15:47:54

PostGIS实战教程(四)叠加分析、几何修复、简化聚合+生产避坑大全

PostGIS实战教程(四)叠加分析、几何修复、简化聚合生产避坑大全系列专栏:PostGIS从入门到生产实战📖 开篇导语 到了项目后期,经常遇到多边形合并、区域裁剪、几何顶点太多前端卡顿、导入的面存在自相交无效几何问题。本…

阅读更多 →
DX12实现PBR渲染:从Blinn-Phong到物理光照的完整实践 2026/10/2 15:47:48

DX12实现PBR渲染:从Blinn-Phong到物理光照的完整实践

1. 为什么第(二)篇就急着上PBR——旧光照模型的痛点在哪里 第一篇把DX12的命令队列、同步、SwapChain理顺之后,渲染出来的小球其实很惨。Blinn-Phong高光像糊上去的塑料,灯光一强就整片过曝成白斑,灯光一暗球面直接像死…

阅读更多 →
Qwen3.8-27B本地部署实战:llama.cpp+GGUF量化+16G显存优化 2026/10/2 15:47:48

Qwen3.8-27B本地部署实战:llama.cpp+GGUF量化+16G显存优化

1. 先把家底盘清楚:Qwen3.8-27B 和 llama.cpp 这套组合到底解决什么问题1.1 Qwen3.8-27B 怎么理解,名字看起来不像官方型号?你第一次看到 qwen3.8-27b-q4_k_m.gguf 这个文件名,大概率会愣一下:这个版本号怎么这么怪&am…

阅读更多 →
16G显存跑27B大模型:GGUF量化与llama.cpp长上下文实战 2026/10/2 15:47:48

16G显存跑27B大模型:GGUF量化与llama.cpp长上下文实战

16G 显存的显卡跑一个 27B 参数量的大模型,还要把上下文开到 256k,说出来有点像把 1.6L 发动机塞进货车里硬拉货。但我用 llama.cpp 折腾完之后发现,这套组合不只是“能跑”,甚至能当正经的本地编程助手用,只要你在参数…

阅读更多 →
AI编码智能体必备:AGENTS.md 写法、模板与避坑指南 2026/10/2 15:47:48

AI编码智能体必备:AGENTS.md 写法、模板与避坑指南

最近大半年,越来越多的仓库根目录开始出现 AGENTS.md 文件。我第一次注意到它,是因为 Codex 在 PR 描述里写着"根据 AGENTS.md 的约定执行",我当时一愣:这是什么新规矩?后来才明白,这是给 AI 编…

阅读更多 →
DX12渲染器接入PBR:从理论到HLSL实战的完整指南 2026/10/2 15:47:47

DX12渲染器接入PBR:从理论到HLSL实战的完整指南

刚把DX12的基本框架跑通的时候,我其实有点迷茫:交换链、命令队列、Descriptor Heap这些基础设施都搭好了,但屏幕上永远只是一个旋转的立方体,那感觉跟搞定了发动机却还没装车身一样。这篇接着上一篇,往渲染器里加PBR&a…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉