use*_*737 20 opengl graphics direct3d
我意识到这可能是一个荒谬的问题,但在尝试找出哪些库用于哪些项目之前,我认为首先真正理解这些库的目的是有意义的.
很多视频游戏都使用像OpenGL这样的库.我在这些库中看到的所有教程都演示了如何编写告诉计算机绘制内容的代码.事实上,在游戏中,所有东西都是使用Zbrush,Maya或3ds Max等软件建模的.这些模型有纹理,很好用.看起来你需要做的就是编写一个动画循环来反复绘制模型和更新,而不是实际编写代码来绘制每一个小东西.这将非常耗时并且会使模型无用.那么OpenGL或Direct 3D在哪些方面与视频游戏和3D艺术相关?当所有图形都已创建并且只需要加载和绘制时,它们对于它们至关重要?它们主要用于着色器和效果吗?
这个问题可能只是证明我对此有多新,但这是我从未听过的问题.我刚刚开始学习编程,并且我对代码和逻辑的理解相当不错,但我根本不了解图形库或某些框架,而且教程没有帮助.
Nic*_*las 10
看起来你需要做的就是编写一个动画循环来反复绘制模型和更新,而不是实际编写代码来绘制每一个小东西.
计算机中发生的一切都是这样的,因为某种形式的程序会告诉它究竟该做什么.仅显示此消息的字母是因为您选择的Web浏览器通过HTTP协议通过TCP/IP下载此文件,解码其UTF-8编码的文本,解释由XML,HTML,JavaScript定义的文本等标准,然后显示文本布局的Unicode标准定义的可见部分,并与HTML等人一致,使用操作系统或窗口管理器的显示和窗口功能或其他.
从下载文件到显示,该操作的每个部分都由一段代码管理.您在屏幕上看到的每个像素都在它的位置,因为有些代码将它放在那里.
仅 HTML 并不意味着什么.你不能只是拿一个HTML文件并将其爆炸到屏幕上.有些代码必须解释它.您可以将HTML解释为文本文件,但如果这样做,它将丢失所有格式,您将看到所有标记.Web浏览器可以将其解释为正确的HTML,在这种情况下,您可以查看格式.但在每种情况下,HTML文件的含义都取决于它的使用方式.
您提出的算法的"绘制模型"部分必须由某人完成.如果您不编写该代码,则必须使用库或其他会导致模型出现的系统.那个图书馆做了什么?它是如何导致模型出现的?
像HTML网页这样的模型本身就没有意义.换句话说,你的算法可以归结为:
您缺少一个关键组件:如何实际解释模型并使其出现在屏幕上.OpenGL/D3D /软件光栅化器/等对于该任务至关重要.
很多视频游戏都使用像OpenGL这样的库.
首先:OpenGL本身不是库,而是API(规范).OpenGL API可以作为软件库的形式实现,但是现在更常见的是以驱动程序的形式实现OpenGL,该OpenGL将OpenGL函数调用转换为控制命令到位于图形卡(GPU)上的图形处理器.
我在这些库中看到的所有教程都演示了如何编写告诉计算机绘制内容的代码.
是.这是因为需要绘制一些东西才能使用它们.
事实上,在游戏中,所有东西都是使用Zbrush,Maya或3ds Max等软件建模的.
此时,模型只包含大量数字,还有更多数字表示其他数字如何构成某种几何形状.这些数字不是某种准备使用的图像.
这些模型有纹理,很好用.
它们是一堆数字,它们有一些控制纹理的附加数字.纹理本身反过来只是数字.
看起来你需要做的就是编写一个绘制模型的动画循环
你觉得这幅画会怎么样?没有魔法"这里有模型,显示它"功能.因为对于构成模型的数字可能具有任何意义的方式.所以一些程序必须赋予这些数字意义.这是一个渲染器.
并反复更新,而不是实际编程代码来绘制每一个小东西.
同样,没有神奇的"绘制它"功能.绘制模型涉及遍历每个数字,它包含,并将这些数字转换为绘图命令到GPU.
这将非常耗时并且会使模型无用.
当模型控制向OpenGL发出命令时,模型是如何无用的.或者您认为OpenGL用于实际"创建"模型?
那么OpenGL或Direct 3D在哪些方面与视频游戏和3D艺术相关?
它用于将数字转换成3D模型,因为它远离建模者,可以看到令人愉悦的东西.
当所有图形都已创建时,它们对于它们至关重要
模型完成后,尚未创建图形.创建的是一个模型,以及纹理和着色器形式的一些辅助数据,然后在程序执行时实时转换为图形.
只是需要加载和绘制?
再次,在加载后,模型只是一堆数字.绘图意味着将这些数字转换为需要查看的内容,这需要将绘图命令发送到图形处理器(GPU),这需要使用像OpenGL或Direct3D这样的API
它们主要用于着色器和效果吗?
它们用于将3D建模程序(Blender,Maya,ZBrush)生成的数字转换为实际图片.