c++ - 你能制作自己的渲染管线吗?

标签 c++ opengl shader pipeline

我想写一个渲染器,但我真的必须使用 OpenGL 管道吗,我不能自己做吗?有没有一种方法可以为 GPU 和 CPU 编写所有代码,从内存管理到光栅化,还是我必须使用已经提供的管道?如果我不能在 OpenGL 中做到这一点,我可以在哪里?我能得到一些指示吗? 我用什么语言编写 GPU 代码以及如何在 GPU 上使用它?

最佳答案

目前标准的消费级 GPU 不是 CPU。您不“编程”图形管道。图形管道之所以如此,是因为这就是 GPU 设计的工作方式。显然,不同的特定 GPU 会有不同的实现,但渲染管线的基本元素都是硬件的基础部分。流水线的可编程部分只能在 GPU 允许的范围内以及该阶段的预期目的(具有一定的灵 active )内进行编程。

future 的GPU可能会更加灵活,甚至还有一些alternative pipelines for vertex processing在某些现代 GPU 中。但我们还没有到你可以随意编造东西的地步。 GPU 专为提高效率而设计;它们的局限性在于帮助事情保持在有效的路径上。

内存管理是一个完全独立的问题。与 OpenGL 等直接 API 相比,Vulkan 和类似的命令缓冲区 API 允许更多低级内存管理功能。但是,应该很好地理解,命令缓冲区 API 不适合业余程序员。这些 API 一点都不友好;它们要求您敏锐地意识到即时 API 向您隐藏的许多细节,并且当您违反它们的规则时它们不会告诉您。

关于c++ - 你能制作自己的渲染管线吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58259299/

相关文章:

linux - Linux 上的 OpenGL 4.4

c++ - 即使只有主函数,在主函数外部声明变量也会更改输出

c++ 在函数中使用函数

c++ - 将 uint64_t 转换为 uint8_t[8]

java - 在 3d opengl 中移动模型

opengl - OpenGL 对四元数的支持是什么?

c++ - 尝试实现相机

opengl - 是否可以将着色器变量声明为输入和输出?

c++ - 在 Direct3D11 中模拟 Direct3D9 固定功能管道

c++ - 如果在我们插入数据库时​​电源关闭会发生什么?