Let me add that when mipmapping, the textures must not only be power- of-two but also square, meaning 256x256, not 128x256 like you can normally do.
On Aug 9, 4:11 pm, Mike <mcmulle...@gmail.com> wrote: > I am. That's what's so perplexing. > > On Aug 9, 3:56 pm, Tom <orei...@mbari.org> wrote: > > > > > Make sure that you are loading your textures from the drawable-nodpi > > resource > > directory:http://www.anddev.org/opengl_textures_-_motorola_droid-t10930.html > > > On Aug 9, 1:07 pm, Mike <mcmulle...@gmail.com> wrote: > > > > I'm getting white (blank) textures on everything when running on the > > > Droid and Galaxy S devices. > > > My textures are all power-of-two PNGs and they're in the /res/drawable- > > > nodpi folder. > > > > Here's my code: > > > > public GLTextures(GL10 gl, Context context) { > > > if(gl==null)return; > > > this.gl = gl; > > > this.context = context; > > > this.textureMap = new java.util.HashMap<Integer, > > > Integer>(); > > > sBitmapOptions.inPreferredConfig = Bitmap.Config.RGB_565; > > > > } > > > > public void freeTexs(){ > > > gl.glDeleteTextures(textures.length, textures,0); > > > textureFiles = null; > > > } > > > > public void loadTextures() { > > > if(gl==null)return; > > > int[] tmp_tex = new int[textureFiles.length]; > > > gl.glGenTextures(textureFiles.length, tmp_tex, 0); > > > textures = tmp_tex; > > > for (int i = 0; i < textureFiles.length; i++) { > > > > this.textureMap.put(new Integer(textureFiles[i]), > > > new Integer(i)); > > > int tex = tmp_tex[i]; > > > > gl.glBindTexture(GL10.GL_TEXTURE_2D, tex); > > > gl.glTexParameterf(GL10.GL_TEXTURE_2D, > > > GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR); > > > gl.glTexParameterf(GL10.GL_TEXTURE_2D, > > > GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR_MIPMAP_NEAREST); > > > > gl.glTexParameterf(GL10.GL_TEXTURE_2D, > > > GL10.GL_TEXTURE_WRAP_S, GL10.GL_REPEAT); > > > gl.glTexParameterf(GL10.GL_TEXTURE_2D, > > > GL10.GL_TEXTURE_WRAP_T, GL10.GL_REPEAT); > > > gl.glTexEnvf(GL10.GL_TEXTURE_ENV, > > > GL10.GL_TEXTURE_ENV_MODE, GL10.GL_MODULATE); > > > > InputStream is = > > > context.getResources().openRawResource(textureFiles[i]); > > > Bitmap bitmap; > > > try { > > > bitmap = BitmapFactory.decodeStream(is, null, > > > sBitmapOptions); > > > } finally { > > > try { > > > is.close(); > > > } catch (IOException e) { > > > // Ignore. > > > } > > > } > > > > buildMipmap(gl, bitmap, tex); > > > bitmap.recycle(); > > > > } > > > } > > > > private void buildMipmap(GL10 gl, Bitmap bmp, int tex) { > > > // > > > int level = 0; > > > // > > > int height = bmp.getHeight(); > > > int width = bmp.getWidth(); > > > > while (height >= 1 || width >= 1) { > > > GLUtils.texImage2D(GL10.GL_TEXTURE_2D, level, > > > bmp, 0); > > > > if (height == 1 || width == 1) { > > > break; > > > } > > > // Increase the mipmap level > > > level++; > > > // > > > height /= 2; > > > width /= 2; > > > Bitmap bitmap2 = Bitmap.createScaledBitmap(bmp, > > > width, height, > > > true); > > > // Clean up > > > bmp.recycle(); > > > bmp = bitmap2; > > > } > > > } > > > > Here's my setup code in my renderer's onSurfaceCreated method: > > > > // Define the lighting > > > float lightAmbient[] = new float[] { 1f, 1f, 1f, 1 }; > > > float lightDiffuse[] = new float[] { 1, 1, 1, 1 }; > > > float[] lightPos = new float[] { 0, 0, 0, 1}; > > > gl.glEnable(GL10.GL_LIGHTING); > > > gl.glEnable(GL10.GL_LIGHT0); > > > gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_AMBIENT, > > > lightAmbient, 0); > > > gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_DIFFUSE, > > > lightDiffuse, 0); > > > gl.glLightf(GL10.GL_LIGHT0, GL10.GL_CONSTANT_ATTENUATION, > > > 1.0f); > > > gl.glLightf(GL10.GL_LIGHT0, GL10.GL_LINEAR_ATTENUATION, > > > 0.01f); > > > gl.glLightf(GL10.GL_LIGHT0, > > > GL10.GL_QUADRATIC_ATTENUATION, .1f); > > > gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, lightPos, > > > 0); > > > > // Define the materials > > > float matAmbient[] = new float[] {1, 1, 1, 1 }; > > > float matDiffuse[] = new float[] {1, 1, 1, 1 }; > > > gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_AMBIENT, > > > matAmbient, > > > 0); > > > gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_DIFFUSE, > > > matDiffuse, > > > 0); > > > > gl.glDisable(GL10.GL_DEPTH_TEST); > > > gl.glEnable(GL10.GL_BLEND); > > > gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE); > > > gl.glDepthFunc(GL10.GL_LEQUAL); > > > gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); > > > gl.glDisable(GL10.GL_DITHER); > > > > //Enable textures > > > > > > gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,GL10.GL_NICEST); > > > gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); > > > gl.glEnable(GL10.GL_TEXTURE_2D); > > > > Any help is appreciated. > > > > -mike- Hide quoted text - > > > - Show quoted text - -- 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