我将我的项目从纯LWJGL移植到libGDX,我想知道是否有办法只使用片段着色器创建程序?
我想要做的是将纹理的颜色(灰色)更改为我作为参数接收的颜色。着色器之前工作得很好,但现在,似乎我需要添加一个顶点着色器 - 这对我来说没有任何意义。所以我写了这个:
void main() {
gl_Position = ftransform();
}
根据互联网,这是最简单的VS:它什么都不做,而且它确实不应该。但它不起作用:不显示任何内容,也不会抛出编译错误或警告。我试图用更简单的一个替换我的片段着色器,但结果甚至更奇怪:
void main() {
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
这应该只绘制红色的一切。但是当我运行时,程序崩溃,没有抛出错误,没有异常,非常奇怪的行为。我知道libGDX增加了倾斜,但我认为它也不会起作用,因为我只需要替换灰度颜色,并且根据强度,我需要正确调制正确的颜色(这是变化的)。我正在使用的另一个着色器(仅限片段)是将整个场景设置为灰度(在暂停菜单上时)。它也不起作用。
答案 0 :(得分:2)
对于现代OpenGL中的着色器,您始终必须至少提供顶点和片段着色器。 OpenGL-2为你提供了一些余地,但有一个缺点,那就是你仍然需要与奥术固定功能状态机斗争。
根据互联网,这是最简单的VS:它什么都不做,而且它确实不应该。
是什么让你认为它“没有”。当然它有所作为:它将传入的原始数字转换为合理的东西,即剪辑空间中的顶点。