Friday 15 June 2012

java - Android Open GL ES strange issue -



java - Android Open GL ES strange issue -

i m building game android , noticed on tracer unusual issue after trying optimize calls open gl. game runs perfect , , @ of time bellow 16 fps , in frames exceeds 20 21 millis per frame , noticed on allmost every gluniform1f , gluniform3fv , gluniform1i calls :

java.lang.runtimeexception: no such property: program_state/programs/${program}/active_uniforms/14/uniform_value error applying transformations gluniform3fv(location = 3, count = 1, v = [0.0, 100.0, 0.0])

on frames > 16 millis calls take more time execute.

here sample of draw calls:

gles20.glbindtexture(gles20.gl_texture_2d, this.mygltexture); gles20.gluseprogram(this.params.programm); gles20.gluniform1i(this.params.utextureloc, 0); gles20.gluniformmatrix4fv(this.params.ummatrixhandle, 1, false,this.mmatrixclip, 0); matrix.multiplymm(this.mmatrix, 0, gameplayrenderer.mvpmatrix, 0,this.mmatrix, 0); gles20.gluniformmatrix4fv(this.params.umvpmatrixhandle, 1, false,this.mmatrix, 0); gles20.gluniform1f(this.params.ualphafactor,this.alphafactor); gles20.gluniform1f(this.params.fader,fader); gles20.gluniform3fv(this.params.ueyepos,1,camerapos,0); gles20.gluniform3fv(this.params.ulightpos,1,lightpos,0); gles20.gluniform3fv(this.params.umatambient,this.matambient.length/3,this.matambient,0); gles20.gluniform3fv(this.params.umatdifusse,this.matdifusse.length/3,this.matdifusse,0); gles20.gluniform3fv(this.params.umatspecular,this.matspecular.length/3,this.matspecular,0); gles20.gluniform3fv(this.params.umatalpha,this.matalpha.length/3,this.matalpha,0); gles20.glenablevertexattribarray(this.params.aposhandle); gles20.glenablevertexattribarray(this.params.atexthandle); gles20.glenablevertexattribarray(this.params.anorhandle); gles20.glenablevertexattribarray(this.params.amatidhandle); gles20.glvertexattribpointer(this.params.aposhandle, 3, gles20.gl_float, false, 40, 0); gles20.glvertexattribpointer(this.params.atexthandle, 2, gles20.gl_float, false, 40, 12); gles20.glvertexattribpointer(this.params.anorhandle, 3, gles20.gl_float, false, 40, 20); gles20.glvertexattribpointer(this.params.amatidhandle, 2, gles20.gl_float, false, 40, 32); gles20.gldrawarrays(gles20.gl_triangles,this.objectstart,this.objectcount);

java android opengl-es

No comments:

Post a Comment