Eph*_*era 8 opengl directx graphics gpu driver
为了解释这个问题,我对OpenGL及其背后的数学有了深入的了解,虽然我从未接触过与DirectX相关的任何内容,但我想这些概念是相似的.
关于为什么三角形用于3D图形有很多信息(它们必须是平面的,除了较小的三角形之外是不可分割的等等).但是,我想知道三角形是否只是存储和操作3D数据的简便方法(关于插值的简单数学等),或者如果图形卡中存在硬件限制,只能实际允许渲染三角形(例如基本上只能应用于三角形的指令).
接下来,有没有办法实现图形渲染的逐像素控制(正如这个问题的答案简要概述).虽然我很欣赏通过驱动程序对单个像素进行直接控制,但是有什么办法可以在渲染环境中实现这种控制吗?是否完全避免"避免三角形"?
jal*_*alf 18
是的,不是.的种类.
当前的GPU设计用于渲染三角形,因为三角形很适合使用.并且因为当前的GPU设计用于三角形,所以人们使用三角形,因此GPU只需要处理三角形,因此它们被设计为仅处理三角形.
正如您所说,三角形具有使其便于使用的优点.的GPU 可进行(并已取得)本地地呈现其他原语,但它只是不值得的.如果您告诉现代GPU渲染四边形,它会将其分成两个三角形并渲染它们.
并不是因为技术上存在GPU无法原生渲染四边形的原因,而是因为它不值得花费晶体管.将GPU专注于尽可能快地完成三角形更有用,然后在需要时模拟其他基元.
所以,是的,现代GPU具有硬件限制,因此它们不适用于四边形,例如,但不是因为设计一个适用于四边形的GPU是不可能的.这样做效率会低一些.:)
至于"避免三角形",当然,这基本上就是片段着色器的作用:它填充一个像素.GPU只需几百万次并行运行就可以填满整个屏幕.您可以绘制两个大三角形,形成一个填充整个屏幕的四边形,然后只需指定一个片段着色器,用您喜欢的内容填充它.
如果您想要更多地控制该过程,请在软件中进行:将一个像素一次绘制到内存表面,然后将其作为纹理加载到GPU上.但它很慢.:)