opengl es - How to pass arrays of values as uniform and how to create texture in cocos2djs -
i have been these days trying implement shader functionality not find solution. not know @ state shader support not know if going ask possible:
1.- how pass arrays of values shader.
i find there functions wrote web not native. example:
setuniformlocationwith2fv
this may want not defined @ native. there way pass array of floats shader? uniform objetive this: uniform vec2 position[30];
2.- alternatively 1. pass texture personalized values great too.
so question how create texture(1d or if that's not possible 2d or 3d), , pass uniform.
i have seent ogl test creates texture not seem cc.texture2d
var texture = this.my_texture = gl.createtexture(); gl.bindtexture( gl.texture_2d, texture ); var pixels = new uint8array(4096); for( var i=0; i<pixels.length; ) { pixels[i++] = i/4; // red pixels[i++] = i/16; // green pixels[i++] = i/8; // blue pixels[i++] = 255; // alpha } gl.teximage2d(gl.texture_2d, 0, gl.rgba, 32, 32, 0, gl.rgba, gl.unsigned_byte, pixels); gl.texparameteri(gl.texture_2d, gl.texture_mag_filter, gl.nearest); gl.texparameteri(gl.texture_2d, gl.texture_min_filter, gl.nearest); gl.bindtexture(gl.texture_2d, null);
3.- want discard pixels of sprite see what's behind, not know if there better way not shaders.
edit: explained badly wanted. want discard pixels in shader through mouse/touch input. e.g: if click center of sprite want circle of discarded pixels appear in center of sprite see what's behind sprite discarded pixels.
thank you!
p.d: using cocos2d-js v.3.3
1.- how pass arrays of values shader.
you seem have discovered right method family already: gluniform<type>v
- how create texture(1d or if that's not possible 2d or 3d), , pass uniform
a texture uniform-like in terms of behaviour (i.e. constant entire draw call). why not access data normal texture? large uniform arrays "bad idea".
3.- want discard pixels of sprite see what's behind,
either (1) make transparent parts of sprite texture have 0.0 alpha value, , enable blending. won't want if using depth testing.
... or (2) encode transparency in alpha channel of texture , "discard" transparent fragments in fragment shader if alpha value below threshold.
Comments
Post a Comment