小编pix*_*con的帖子

如何在opengl es 2中访问顶点着色器程序中的其他顶点?

我是一个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这样的特殊关键字?还是有另一种可能性,我想念?

shader android opengl-es vertex-shader

5
推荐指数
2
解决办法
2298
查看次数

标签 统计

android ×1

opengl-es ×1

shader ×1

vertex-shader ×1