【问题标题】:How is OpenGl Implemented in an Operating System? [closed]OpenGL是如何在操作系统中实现的? [关闭]
【发布时间】:2012-06-16 21:59:48
【问题描述】:

我正在研究 linux 和图形 API,但是我对 opengl 在操作系统中的实现方式感到困惑。 它只是一组使用内核与您的显卡“讨论”哪些像素要着色或不着色的库吗? 如果是这样,那么我不知道管道的来源 - 3D 场景如何被光栅化以及着色器如何影响几何图形。

为什么 GPU 可以同时支持 DX 和 OGL 的着色器语言? - 着色器语言真正适合哪里?- 它们是在运行时编译还是解释?

尽管我使用了多个游戏引擎,但我自己对图形 API 并没有太多经验 - 通常,由于多层抽象,细节会很模糊。

【问题讨论】:

标签: opengl operating-system implementation


【解决方案1】:

【讨论】:

    【解决方案2】:

    至少在大多数典型的显卡上,大部分 OpenGL 管道(固定的或可编程的)都是在图形硬件本身中实现的。 DirectX 更是如此(即,DirectX 在 OpenGL 中缺少很多当前硬件不直接支持的功能)。

    通常编译着色器。显卡有一个特殊用途的处理器(或者,通常不止一个),所以编译器接受着色器语言的输入并将其转换为该处理器的汇编语言,就像 C 编译器为 CPU 所做的那样。支持不同的输入语言与支持 C、C++、Pascal、Fortran、Cobol 等输入的单个 CPU 并没有太大区别。

    【讨论】:

      【解决方案3】:

      我无法谈论 API 是如何实现的。

      但我确实从经验中知道着色器是编译的。所以你编译它们并将它们发送到你的 GPU 并在那里执行它们。

      【讨论】:

        猜你喜欢
        • 2021-04-06
        • 2019-08-30
        • 2018-10-19
        • 1970-01-01
        • 2014-04-25
        • 1970-01-01
        • 2021-04-23
        • 1970-01-01
        • 2011-01-02
        相关资源
        最近更新 更多