The ball.png that you reference above is 30x30 pixels. As MrChaz said, you must use power of two sized bitmaps. Otherwise the texImage2D function will not accept your texture. It seems likely that that is what is going on here. Also, this works in the 16 bits per pixel modes as well. You don't need a separate alpha channel in your frame buffer to do alpha compositing, so a simple RGB454 frame buffer works, which is what you get if you use a SimpleEGLConfigChooser (false) to select your pixel format. 16bpp formats are twice as fast when it comes to rendering as 32bpp formats (if your fill rate limited, and if you're rendering a 2D game with sprites then you probably are).
Another word of caution, PNG files are supposed to (if you follow the spec) have non-premultiplied alpha channels. But it seems that not many people actually follow the standard, and so you can find PNG files that do it either way. If your PNG files are in fact using non- premultiplied alpha then the glBlendFunction should be (GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA). If they use premultiplied alpha then it should be as MrChaz said (GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA). If you use the first and see dark halos around all of your sprites then you probably have premultiplied alpha PNGs. As a side note, premultiplied alpha is better for a number of reasons. It simplifies a number of compositing operations and treats all of the color and alpha channels in a uniform way. It also allows for super-luminous pixels. -Anton On May 27, 7:00 pm, Nate <nathan.sw...@gmail.com> wrote: > I am rendering this PNG with no transparency just > fine:http://n4te.com/temp/test.png > However if I try to render this PNG (with transparency) with the exact > same code, I just get a white box:http://n4te.com/temp/ball.png > > I am loading the PNG into a texture like this: > Bitmap bitmap = BitmapFactory.decodeStream(input); > int[] temp = new int[1]; > gl.glGenTextures(1, temp, 0); > textureID = temp[0]; > gl.glBindTexture(GL10.GL_TEXTURE_2D, textureID); > gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, > GL10.GL_NEAREST); > gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, > GL10.GL_NEAREST); // GL_LINEAR for quality. > gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, > GL10.GL_CLAMP_TO_EDGE); > gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, > GL10.GL_CLAMP_TO_EDGE); > GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0); > bitmap.recycle(); > > I am using this blending: > gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); > > How is it possible to render a PNG with transparency in OpenGL ES? > > Thanks! > -Nate --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---