[英]What's the difference between GLSL and c?
我在这里有三个问题:
您似乎对GLSL是一个基本的误解。 它不是图形的编程语言。 它是着色器语言。
在OpenGL渲染管道中 ,对象的渲染中某些阶段设计为由程序实现。 这些阶段称为“着色器阶段”。 着色器是用GLSL(至少适用于OpenGL)编写的程序,在这些着色器阶段之一中执行。
GLSL用作渲染过程的一部分。 GLSL定义了事物的呈现方式,而不是事物的呈现方式。
因此:
Qt / 3D API是否由GLSL代码实现?
并非以您的意思。 一些绘图功能的渲染管道可能是。 但事实并非如此。 它与您无关紧要,因为您是从外部使用它的。
GLSL代码是否可以像普通的c / c ++代码一样进行编译和链接,并且可以在CPU(而非GPU)上运行吗?
不,按上述。 着色器影响渲染,并且渲染在GPU上进行。 GLSL是OpenGL的着色语言,因此GLSL代码在GPU上执行。
为什么GLSL比普通的c / c ++在渲染方面更好?
无论好坏,都没有。 您不能将一个用于另一个。 您不能只是将随机C代码作为渲染管线的一部分在GPU上抛出。 而且您不能为CPU编译GLSL。
GLSL是我们所谓的领域特定语言 。 它是一种旨在促进特定目的的语言。 它具有大多数语言根本没有的语言结构。 它知道什么是“纹理”。 它具有值的概念,该值在单个渲染调用(统一)中多次执行着色器时是不变的。 它具有许多其他概念,这些概念是基于硬件的着色器和渲染问题所特有的。
您不仅不想在GPU上扔C或C ++,而且也不想这么做。 不适用于着色器。
Qt / 3D API是否由GLSL代码实现?
并不是的。 它可能在内部使用,但对用户而言则全部隐藏。 API本身是C ++。 OpenGL的API用C语言编写,尽管它(驱动程序)在内部使用汇编语言。
GLSL代码是否已作为普通c / c ++代码进行编译和链接
不,当然不。 它由视频卡驱动程序编译并在GPU上运行。 这是一种相当有限的语言,除着色器外没有太多用处。
为什么GLSL在绘画方面比普通的c / c ++有更多的天赋?
它包含GPU擅长的功能,而缺少GPU擅长的功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.