我是一个Android应用程序,我想在这个表面的其他顶点上计算表面depanding的法线.我不想在"主"程序中这样做,因为它花费了很多时间.实际上对于每个顶点,我为每个vextex传递4个浮点数组:
attribute vec3 a_bottom;
attribute vec3 a_left;
attribute vec3 a_right;
attribute vec3 a_top;
vec3 calculNormal( ) {
return normalize( cross( (a_left - a_right) , ( a_bottom - a_top ) ) );
}
Run Code Online (Sandbox Code Playgroud)
我知道这是非常非常非常脏的代码,所以不是传递4个数组,我想这样做:
vec3 calculNormal( ) {
vec3 a_left = CURRENT_FLOATBUFFER[ CURRENT_FLOAT_BUFFER_POSITION - 1 ];
vec3 a_bottom = CURRENT_FLOATBUFFER[ CURRENT_FLOAT_BUFFER_POSITION - X ];
...
return normalize( cross( (a_left - a_right) , ( a_bottom - a_top ) ) );
}
Run Code Online (Sandbox Code Playgroud)
那么在顶点着色器程序中是否可以访问当前的浮点缓冲区?是否有像currentFloat这样的特殊关键字?还是有另一种可能性,我想念?