如果我没弄错的话,着色器程序基本上是通过GPU可以并行执行的操作来运行的,与CPU相比,每秒可以进行多次操作。我想知道是否有任何方法可以使用LWJGL运行着色器程序并将其用于除绘图之外的其他内容。例如,如果我有一个任意float
值的数组和另一个大小相等的float[]
,我想将第二个数组中的每个元素设置为-1,0或1,基于在第一个数组中相应元素的符号上,在我看来应该有一些方法来使用一个类似于下面的着色器程序:
in float a;
out float b;
void main(void){
float t = 0;
if(a > 0)
t = 1;
if(a < 0)
t = -1;
b = t;
}
为数组中的每个元素运行它,将第一个数组的元素作为a
传递给第一个数组,并将第二个数组的元素设置为输出b
。我想象如果它可以在GPU上执行,那么对于非常大的阵列来说,这可以在更短的时间内完成,并且如果需要更复杂的操作,这将更加真实。我以前尝试过使用JOCL和CUDA,但是没有多少运气,发现它非常复杂,到目前为止,我喜欢我所看到的LWJGL出现的内容简单,所以如果有办法做我要问的事,请解释一下。谢谢。