opengl - OpenGL等图形库的目的是什么?

标签 opengl graphics direct3d

我意识到这可能是一个荒谬的问题,但在试图弄清楚哪些库用于哪些项目之前,我认为首先真正理解这些库的目的是有意义的。

许多视频游戏使用 OpenGL 之类的库。我见过的所有关于此类库的教程都演示了如何编写代码来告诉计算机绘制一些东西。问题是,如今在游戏中,一切都是使用 Zbrush、Maya 或 3ds Max 等软件建模的。这些模型有纹理,很容易上手。似乎您需要做的就是编写一个动画循环来重复绘制模型和更新,而不是实际编写代码来绘制每一件小事。这将非常耗时,并且会使模型无用。那么 OpenGL 或 Direct 3D 与视频游戏和 3d 艺术有什么关系呢?当所有图形都已经创建并且只需要加载和绘制时,它们有什么如此重要?它们主要用于着色器和效果吗?

这个问题可能只是证明我对此有多么陌生,但这是我从未听说过的问题。我刚刚开始学习编程,我对代码和逻辑的理解还不错,但是我根本不了解图形库或某些框架,教程也无济于事。

最佳答案

你有数据。像模型一样,具有顶点、法线和纹理。正如上面的@datenwolf 所说,这些都只是位于硬盘驱动器或 RAM 中的数字,而不是屏幕上的颜色。

您的 CPU(这是您编写的程序运行的地方)无法直接与屏幕对话。相反,您将要绘制的数据发送到 GPU。 GPU 然后绘制数据。 OpenGL 和 Direct3D 等图形 API 允许在 CPU 上运行的程序将数据发送到 GPU 并自定义 GPU 绘制数据的方式。这是一个粗略的简化,但听起来您只需要一个概述。

最终,每个图形程序都必须通过图形 API。例如,当您绘制图像时,您将图像发送给 GPU,然后 GPU 将其绘制在屏幕上。画一些文字?将数据发送到 GPU。 GPU 绘制它。请记住,您的代码无法与屏幕对话。它可以通过 OpenGL 或 Direct3D 与 GPU 对话,然后 GPU 绘制数据。

关于opengl - OpenGL等图形库的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11695756/

相关文章:

c - GluProject 未在 C 中显示准确的坐标

r - 使用 grid.curve 连接不同视点的 grobs

java - 如何创建一个不会被调用两次的绘画类?

c++ - DirectX 9 或 10 覆盖

directx - HLSL采样器有哪些不同的类型?

c++ - ID3D10Device::RSSetState 每帧调用?

c++ - 混合时OpenGL忽略对象?

opengl - 英特尔是否有单独的 GPU 指令集

graphics - R 将热图简化为 pdf

c++ - 如何绑定(bind)部分纹理opengl