Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid OpenGLES device issue
    text
    copied!<p>I have recently started learning OpenGLES with Android. I am creating a livewallpaper with GLWallpaperService class with rendering. </p> <p>The problem with Android simulator is able to display animation but <strong>while testing with Android device (HTC Incredible S) FPS remains around 45-50 but screen remains blank.</strong></p> <p>Here is the code snippet !!</p> <p><strong>onDrawFrame</strong></p> <pre><code>public void onDrawFrame(GL10 gl) { float currLevel = curve[(MAX_CURVE_POINT_NO + curveStart - 1) % MAX_CURVE_POINT_NO]; if (!isCreated) { isCreated = !isCreated; _spriteVerices = BufferFactory.createFloatBuffer(8); spriteTextCordinates = BufferFactory.createShortBuffer(8); } _spriteVerices.put(spriteVerices); spriteTextCordinates.put(spriteTextCordinatesArray); _spriteVerices.position(0); spriteTextCordinates.position(0); gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); gl.glEnable(GL10.GL_BLEND); gl.glEnable(GL10.GL_DEPTH_TEST); gl.glEnable(GL10.GL_LINE_SMOOTH); gl.glEnable(GL10.GL_POINT_SMOOTH); gl.glMatrixMode(GL10.GL_PROJECTION); gl.glLoadIdentity(); gl.glOrthof(-1.0f, 1.0f, -1.5f, 1.5f, -1.0f, 1.0f); gl.glMatrixMode(GL10.GL_MODELVIEW); gl.glLoadIdentity(); gl.glScalef(0.8f, 0.8f, 1.0f); gl.glTranslatef(-0.2f, 0, 0); gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); gl.glEnable(GL10.GL_TEXTURE_2D); gl.glVertexPointer(2, GL10.GL_FLOAT, 0, _spriteVerices); gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); gl.glTexCoordPointer(2, GL10.GL_SHORT, 0, spriteTextCordinates); gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); gl.glPushMatrix(); gl.glTranslatef(1.0f, currLevel, -0.01f); gl.glColor4f(0.0f, 0.5f, 1.0f, 1.0f); gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4); gl.glPopMatrix(); curve[curveStart] = ekgMap[curveStart]; // ((rand()%32768)/32768.0)*0.4-0.2; curveStart = (curveStart + 1) % MAX_CURVE_POINT_NO; } </code></pre> <p><strong>onSurfaceChanged</strong></p> <pre><code>public void onSurfaceChanged(GL10 gl, int width, int height) { gl.glViewport(0, 0, width, height); gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); gl.glMatrixMode(GL10.GL_PROJECTION); gl.glLoadIdentity(); GLU.gluPerspective(gl, 60f, (float) width / (float) height, 1f, 100f); gl.glMatrixMode(GL10.GL_MODELVIEW); gl.glLoadIdentity(); gl.glMatrixMode(GL10.GL_MODELVIEW); gl.glTranslatef(0, 0, -5); gl.glRotatef(30f, 1, 0, 0); gl.glEnable(GL10.GL_LIGHTING); gl.glEnable(GL10.GL_RESCALE_NORMAL); gl.glEnableClientState(GL10.GL_NORMAL_ARRAY); // Set the color of light bouncing off of surfaces to respect the // surface color gl.glEnable(GL10.GL_COLOR_MATERIAL); setupLightSources(gl); // Turn on a global ambient light. The "Cosmic Background Radiation", if // you will. float[] ambientLightRGB = { 0.3f, 0.3f, 0.3f, 1.0f }; gl.glLightModelfv(GL10.GL_LIGHT_MODEL_AMBIENT, ambientLightRGB, 0); } </code></pre> <p><strong>onSurfaceCreated</strong></p> <pre><code>public void onSurfaceCreated(GL10 gl, EGLConfig config) { this.loadTexture(gl, mContext, R.drawable.dot); gl.glClearDepthf(1f); gl.glEnable(GL10.GL_DEPTH_TEST); gl.glDepthFunc(GL10.GL_LEQUAL); // Turn on culling, so OpenGL only draws one side of the primitives gl.glEnable(GL10.GL_CULL_FACE); gl.glFrontFace(GL10.GL_CCW); gl.glCullFace(GL10.GL_BACK); gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); gl.glEnable(GL10.GL_BLEND); gl.glEnable(GL10.GL_DEPTH_TEST); gl.glEnable(GL10.GL_LINE_SMOOTH); gl.glEnable(GL10.GL_POINT_SMOOTH); } </code></pre> <p>Thanks,</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload