图形库和GPU

时间:2012-11-19 11:55:32

标签: opengl gpu nvidia

  

可能重复:
  How does OpenGL work at the lowest level?

当我们制作一个使用OpenGL库的程序时,例如Windows平台并且有一个支持OpenGL的显卡,会发生什么:

  1. 我们使用将图形与OpenGL链接的编程语言(例如Visual C ++)开发了我们的程序。

  2. 编译并链接目标平台的程序(例如Windows)

  3. 运行程序时,由于我们有支持OpenGL的显卡,因此安装在同一Windows上的驱动程序将负责管理相同的图形。为此,当CPU将所需数据发送到显卡芯片(例如NVIDIA GPU)时,草图结果。

  4. 在这种情况下,我们谈论图形加速并下载到CPU,计算帧缓冲结束我们图形表示的工作。

  5. 在这种环境下,当GPU的驱动程序接收数据时,如何利用GPU的功能来加速绘图?转换收到CUDA语言类型的指令和数据以利用并行功能?或者只是在设备内存的特定区域复制从CPU接收的数据?不太了解这一部分。

  6. 最后,如果我有一张支持OpenGL的卡,Windows中安装的驱动程序是否会检测到问题?会得到CPU错误还是你会计算我们的帧缓冲?

2 个答案:

答案 0 :(得分:2)

您最好进入计算机游戏网站。他们经常发表关于3D图形如何工作以及如何"人工制品"出现在游戏或司机错误的情况下。

您还可以阅读有关Mesa或Gallium等3D库架构的文章。

总体驱动程序有一套实现Direct 3D或OpenGL或其他标准API的功能的方法。加载时,他们会检查硬件。你可以拥有廉价的视频或昂贵的视频,最近的一个或一个3年前发布...这是不同的硬件。因此,驱动程序正在尝试将每个API功能映射到可在给定计算机上使用的实现,由GPU加速,由SSE4等CPU加速,甚至是一些更基本的实现。

然后驱动程序尝试估算GPU负载。有时功能可以加速,但GPU(特别是低端的)可能会被其他任务重载,然后它可能会尝试在CPU上计算而不是等待GPU时隙。

当你犯错时,根据驾驶员的智力和质量,总有几种变体。

  • 也许驱动程序会为您修复错误,忽略您的命令并改为运行它们自己的一组。
  • 也许驱动程序会向您的程序返回一些错误代码
  • 也许驱动程序会按原样执行命令。如果你用颜色而不是绿色发出绘画 - 这是一个错误,但驱动程序无法知道的那种。搜索" 3d人工制品"在PC游戏相关网站上。
  • 在最坏的情况下,您的错误会干扰驱动程序中的错误,并且您的计算机会崩溃并重新启动。

当然,所有这些适应性策略都相当复杂且不确定,导致3D驱动程序被关闭,并且内部的技术诀窍得到严密保护。

搜索专门用于3D游戏的网站,也许还有3D建模的网站 - 他们应该评价视频卡和#34;哪些更好购买"有时当他们审查新的芯片系列时,他们会撰写相当详细的关于所有这些技术内部的文章。

答案 1 :(得分:1)

提问5。 驱动程序所做的一些事情:它将您的GPU程序(顶点,片段等着色器)编译到特定卡的机器指令,将已编译的程序上传到设备存储器的相应区域并安排程序在卡上的许多图形核心上并行执行。 它使用来自程序员的各种提示将图形数据(顶点坐标,纹理等)上传到适当类型的图形卡存储器,例如日期是经常,不经常还是根本不更新。 它可以利用图形卡中的特殊单元将数据传输到主机存储器或从主机存储器传输数据,例如一些nVidia卡具有DMA单元(一些Quadro卡可能有两个或更多),例如可以上传与之并行的纹理。通常的驾驶操作(其他转移,绘图等)。