为什么一次 DrawCall 只能执行一个 Pass:从图形 API 代码看本质 📅 2026/8/18 19:00:15 🎬 开场:从"抽象说法"到"看代码真相"小王追问:“你说’一次 DrawCall 只能绑一套着色器程序’,我知道结论了,但到底底层是怎么回事?能不能给我看看真实的渲染代码逻辑,让我从图形 API 层面理解,为什么换 Pass 就必须新开 DrawCall?”老鸟说:“好问题!光背结论不如看代码。我们从 OpenGL/DirectX 这层的实际调用流程看,你就彻底明白了——DrawCall 本质是一个’绘制命令’,而它执行前必须先’绑定唯一的渲染状态’!”📐 第一幕:先看一次 DrawCall 的完整代码流程一次绘制的标准代码结构(OpenGL 风格伪代码)// ========== 一次完整的 DrawCall ==========// 步骤1: 绑定着色器程序(一套顶点+片元着色器)glUseProgram(