【问题标题】:I would like to know how an OpenGL driver will be implemented to learn opengl internals?我想知道如何实现 OpenGL 驱动程序来学习 opengl 内部结构?
【发布时间】:2011-07-27 19:35:46
【问题描述】:

我正在学习 OpenGL,我很想知道与显卡的交互是怎样的。

我觉得了解它是如何在图形驱动程序中实现的,会让我了解 opengl 的完整内部结构(这样我就可以知道哪些阶段/因素会影响我在 opengl 中的性能决策)。

这条路有什么办法可以继续。探索“Mesa lib”在这方面对我有帮助吗?我走对了吗?

【问题讨论】:

    标签: opengl graphics


    【解决方案1】:

    您可以在 ryg 博客上找到一个包含 10 部分的优秀系列文章来准确解释这一点。 http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-1/ 它是根据 DirectX 进行解释的,但实际驱动程序对这两个 API 的处理非常相似。 描述实际硬件性能特征的最佳文章之一是 GPU Gems 2 文章http://developer.nvidia.com/node/52。这篇文章本身已有几年的历史,但它肯定会增加您对问题空间的认识。此外,研究 NVIDIA 无绑定图形扩展 (http://developer.nvidia.com/content/bindless-graphics) 将为您提供一些额外的见解,如果您了解它为什么会加快速度。另外,“Batch批批”演示是CPU/GPU交互优化的经典(http://www.nvidia.de/docs/IO/8230/BatchBatchBatch.pdf)。

    但是,我觉得有必要回到最初的问题。问问自己哪个是第一:知道如何编程 C++,或者知道 GCC 的内部结构。几乎开放的每个人都将 3d api 视为黑匣子,这是有充分理由的。驱动程序因硬件而异(API / NVIDIA),性能特征也加倍。我真的建议您开始编写一些 OpenGL 代码,并通过优化代码来学习。你可以做一个小技巧(比如视差遮挡),或者,可能更好的是,用不同种类的动态灯光、阴影、延迟渲染和后期处理来编写一个完整的场景。然后留出几周的时间来优化它,看看你能走多远。

    优化 3d 渲染确实有点玄学,几乎没有“在每种情况下都正确”的答案。最好的学习方式是来之不易的经验。

    这些准则可能与任何人都可以得到的一样接近:

    1. 广泛使用 LOD(网格、纹理和着色器)
    2. 尽量减少抽奖次数
    3. 尽量保持中间缓冲区尽可能小(计数和大小)以进行延迟渲染
    4. 尝试以半分辨率进行渲染(例如粒子和后处理)
    5. 在着色器中访问纹理之前总是更喜欢算术
    6. 始终牢记“看起来不错”胜过“正确”
    7. 在低级优化之前更喜欢算法优化

    【讨论】:

    • 真棒马塞尔! '问问你自己哪个是第一位的:知道如何编程 C++,或者知道 GCC 的内部结构。 -大声笑:D。这个问题的原因是 - 以前我在 Nintendo DSi 上进行编程时,了解底层架构(渲染引擎)对我的优化有很大帮助。所以我认为同样的方式会更好地帮助我。感谢链接将有一个检查就可以了。
    • 嗯,暗中它确实有帮助,但因为有很多不同的显卡,以及渲染算法和瓶颈。如果您真的对速度感兴趣,请确保使用 gDebugger(它可以分析)和 NVIDIA 的 perfhud。它们将允许您消除瓶颈并测试特定特性(例如,将场景渲染到 1x1 视口。一路顺风!
    【解决方案2】:

    如果不熟悉 OpenGL API,您将很难理解 OpenGL 驱动程序(Mesa/Gallium 术语中的状态跟踪器)的内部结构。

    OpenGL 本身是根据抽象图形机器定义的,实际上从这个有利位置理解 OpenGL 比尝试通过驱动程序来理解要容易得多。

    查看驱动程序的源代码肯定会帮助您了解与此特定驱动程序相关的任何瓶颈。当然,它有助于查看其他驱动程序中的模式。但阅读有关 GPU 架构的技术文档会有所帮助。

    【讨论】:

    • 谢谢。我知道 Opengl Api 作为初学者(大约是普通的 2d 绘图)。你能帮我找出 GPU 架构的技术文档吗?它们会成为所有显卡供应商的标准吗?请提供参考。
    • 如果有的话,您能否为初学者列出 GPU 架构的参考资料?
    • @Ayyappa 这里有很多关于 GPU 架构的技术参考:renderingpipeline.com/graphics-literature/…
    • @Ayyappa:NVidia 将其 GPU 的内部结构严格保密。 AMD OTOH 公开发布除硅掩模之外的所有内容; X.org 的人有一个很好的索引:xorg.freedesktop.org/wiki/RadeonFeature/#index10h2
    • 感谢 Daten 提供的信息 :)
    猜你喜欢
    • 1970-01-01
    • 2017-12-04
    • 2021-03-05
    • 2011-03-17
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多