许多视频游戏使用 OpenGL 之类的库。
首先也是最重要的:OpenGL 本身不是一个库,而是一个 API(规范)。OpenGL API 可以以软件库的形式实现,但现在更常见的是以驱动程序的形式实现 OpenGL,该驱动程序将 OpenGL 函数调用转换为对位于图形卡 (GPU) 上的图形处理器的控制命令。
我见过的所有关于此类库的教程都演示了如何编写代码来告诉计算机绘制一些东西。
是的。这是因为需要绘制东西才能使用它们。
问题是,如今在游戏中,一切都是使用 Zbrush、Maya 或 3ds Max 等软件建模的。
在这一点上,模型只包含一大串数字,以及更多的数字,说明其他数字如何形成某种几何形状。这些数字不是某种即用型图像。
这些模型有纹理,很容易上手。
它们是一堆数字,它们有一些额外的数字来控制纹理。纹理本身又只是数字。
似乎您需要做的就是编写一个绘制模型的动画循环
你认为这幅画会如何发生?没有神奇的“这里有一个模型,展示它”功能。因为组成模型的数字可能具有任何意义。所以一些程序必须赋予这些数字意义。那是一个渲染器。
并反复更新,而不是实际编写代码来绘制每一件小事。
同样,没有神奇的“绘制它”功能。绘制模型涉及遍历它的每个数字,它由这些数字组成,并将其转换为 GPU 的绘图命令。
这将非常耗时,并且会使模型无用。
当它们控制向 OpenGL 发出命令时,模型是如何无用的。还是您认为 OpenGL 用于实际“创建”模型?
那么 OpenGL 或 Direct 3D 与视频游戏和 3d 艺术有什么关系呢?
它用于将 3D 模型的数字(因为它从建模者那里保存下来)变成令人愉悦的东西。
当所有图形都已经创建时,它们的关键是什么
模型完成后,图形尚未创建。创建的是模型,以及一些纹理和着色器形式的辅助数据,然后在程序执行时实时转换为图形。
只需要加载和绘制?
同样,加载后,模型只是一堆数字。绘图意味着,将这些数字变成可以查看的东西,这需要将绘图命令发送到图形处理器 (GPU),这需要使用 OpenGL 或 Direct3D 等 API
它们主要用于着色器和效果吗?
它们用于将 3D 建模程序(Blender、Maya、ZBrush)生成的数字转换为实际图片。