Nic*_*las 12
你似乎对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++,你也不愿意.不适用于着色器.