混合Cg和GLSL着色器

问题描述:

我刚刚得到了一个旧的OpenGL(2.1)/ Cg(3.1)代码,我应该改进它,特别是延迟着色渲染,其中我想更改其中一个通道的内核。混合Cg和GLSL着色器

我添加GLSL(3.30)因为我更习惯了。这似乎工作,但我想知道是否可能是一些性能影响混合(GLSL/Cg)。换句话说,生成的asm代码应该完全同质?

您不能在单个着色器中混合使用GLSL和Cg,但在不同着色器中,它应该可以正常工作。 Cg代码无论如何都会被转换为GLSL(除非您使用的是Nvidia驱动程序,在这种情况下,它可能会直接转换为着色器代码)。你可以看看Cg编译器生成的GLSL代码,如果你想看看它做的奇怪的事情是否可能是低效的。

你应该能够在你的Cg代码上运行cgc作为预处理器并让它输出GLSL!使用-profile选项来选择GLSL。