Textures are white on Droid (and not other phones)

by Barrett_A » Sat, 27 Feb 2010 05:05:30 GMT


Sponsored Links
 I'm using GLSurfaceView to render OpengGL 3D.  It works great on my
nexus one, the emulators, and at least the G1.  However, on the droid,
the textures are white.  I've seen this problem before when textures
aren't loaded, and also when they aren't powers of two dimensions (not
the case here).  What's weird is that this started when I converted my
program to use GLSurfaceView (it used to be based on some older
example where I was doing the EGL stuff myself).

Textures displayed on the screen are white, but shapes that are just
colors are displayed just fine.

The person testing this for me on their droid does not have the sdk,
so if anyone would like to run this with the debugger, let me know and
I can get you the apk.

Thanks for any help!

--



Textures are white on Droid (and not other phones)

by Robert Green » Sat, 27 Feb 2010 11:31:11 GMT


 Your textures are being scaled and are no longer power-of-two.  Either
put them in drawable-nodpi or turn off scaling on the decoder
configuration.




--


Sponsored Links


Textures are white on Droid (and not other phones)

by Barrett_A » Sat, 27 Feb 2010 11:34:36 GMT


 I have them in just plain old drawable (added this directory myself
since this is how it used to be done, didn't do anything special, if
something special is required).

They work fine on my Nexus One, which is also HDPI (I assume).  Does
Nexus One default to not scale while Droid does scale?

Thanks





--



Textures are white on Droid (and not other phones)

by Robert Green » Sat, 27 Feb 2010 11:35:50 GMT


 Actually, I just noticed that you said it works on the n1.  My
previous guess is probably wrong then...




--



Textures are white on Droid (and not other phones)

by Barrett_A » Sat, 27 Feb 2010 13:56:13 GMT


 efore posting here, I googled this issue, and did find one other
unsolved thread about this same issue.
If anyone else comes here after googling, here's information about
what happened between it not working and working:
(I'm not sure which of these steps is what fixed it, and I don't
intend to find out :))

I got rid of everything GL11 (everything is GL10 now).

I changed my LoadTexture function from:

int LoadTexture(int resID,GL10 gl){
Resources res = gp.getContext().getResources();
Bitmap bmp = BitmapFactory.decodeResource(res,resID);
int[] tmp_tex = new int[1];
gl.glGenTextures(1, tmp_tex, 0);
int tex = tmp_tex[0];
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_MAG_FILTER, GL10.GL_LINEAR);
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);
gl.glTexParameterf(GL10.GL_TEXTURE_2D,GL10.GL_ALPHA,
GL10.GL_ALPHA_BITS);
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bmp, 0);
bmp.recycle();
return tmp_tex[0];
}




to



int LoadTexture(int resID,GL10 gl)
{
int[] textures = new int[1];
gl.glGenTextures(1, textures, 0);
int mTextureID = textures[0];
gl.glBindTexture(GL10.GL_TEXTURE_2D, mTextureID);
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_LINEAR);
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);
gl.glTexEnvf(GL10.GL_TEXTURE_ENV,
GL10.GL_TEXTURE_ENV_MODE,GL10.GL_REPLACE);
InputStream is =
gp.getContext().getResources().openRawResource(resID);
Bitmap bitmap;
try {
bitmap = BitmapFactory.decodeStream(is);
} finally {
try {
is.close();
} catch(IOException e) {
// Ignore.
}
}
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
bitmap.recycle();
return mTextureID;
}
}


(I found the body of this in the ApiDemo with the 3 letters on a
textured triangle spinning).
Only a few differences, but they are there.

Again, I'm not sure which of those two things is what fixed it (and
it's even possible that it was something else that I don't remember
doing).

Hopefully this helps someone else.

(and thanks to R. Green for testing it on his Droid).


On Feb 26, 2:05pm, Barrett_A <lbarrettander...@gmail.com> wrote:

--



Textures are white on Droid (and not other phones)

by Robert Green » Sat, 27 Feb 2010 22:23:14 GMT


 I don't have access to my Droid at the moment but my guess is that it
maybe didn't like that alpha bits texture parameter? Perhaps you could
just try without that.  The minimal parameters that you need are the s
and t clamp method and the minification and magnification function.  I
recommend testing with only those when you are having major issues on
a specific chip.




--



Textures are white on Droid (and not other phones)

by Robert Green » Sat, 27 Feb 2010 22:27:44 GMT


 Oh.. yeah, you should run in the native Res by setting the supports
screen flags in the manifest and then use drawable-nodpi.  Both phones
should scale the same but it depends on the manifest.  I actually
think that the n1 may support non power of twos but I don't have the
extension list in front of me.




--



Other Threads

1. Tarif Three Unlimited Naik

Bintang2nya udah mulai keluar nih :)

PelangganYth, per 8 Apr 2010 tarif langganan 3 Mobile Broadband menjadi 
Rp99rb/30hr(diluar PPN). Jika pulsa tdk mencukupi utk layanan bulanan maka 
otomatis diperpanjang mingguan dg biaya Rp29rb/7hr(diluar PPN). Utk pelanggan 
yg sdh berlangganan sblm 6 Apr 2010 tarif baru akan berlaku mulai 6 Mei 2010. 
Info:200



Salam,
@dindaeris
japri: di...@startrek.or.id
 

-- 
"Indonesian Android Community [id-android]" 

2. detikinet - Google Mulai Serbuan Joke 1 April

Google Mulai Serbuan *Joke* 1 April
Kamis, 01/04/2010 12:11 WIB *  - Wicak Hidayat* detikinet



*Jakarta* - Tanggal 1 April identik dengan berbagai upaya lucu-lucuan. Salah
satu perusahaan yang gemar menjalankan tradisi ini adalah Google. Apa saja
yang disiapkan Google untuk 1 April 2010?

Seperti dikutip *detikINET* dari TechCrunch, Kamis (1/4/2010), beberapa
situs Google sudah mulai menampilkan lelucon-lelucon 1 April. Terutama di
negara-negara yang memang sudah menyentuh tanggal 1 April 2010.

Misalnya, di halaman Google Inggris telah muncul lelucon soal aplikasi
penerjemah untuk Android. Aplikasi buatan Google ini konon bisa
menerjemahkan suara binatang-binatang populer, termasuk ayam, kucing dan
lainnya.

Google, seperti biasa, selalu serius dalam menggarap lelucon 1 April mereka.
Lelucon untuk aplikasi bernama Translate for Animals itu pun diperkuat
dengan video dan tautan pendukung lainnya.

Lain lagi yang dilakukan Google Jepang. Mereka menampilkan sebuah metode
baru untuk mengetik Bahasa Jepang dengan bentuk sebuah drum set. Konon, drum
ketik ini bisa memudahkan orang dalam menulis huruf Kanji Jepang.

Nah, apa yang dilakukan Google pusat untuk 1 April tahun ini? Karena di
Amerika Serikat belum memasuki tanggal 1 April, maka belum ada kabar jelas
soal lelucon tahunan apa yang akan ditampilkan Google.

Namun, seperti dikutip *detikINET* dari Cnet, diduga Google akan menampilkan
lelucon terkait memberikan layanan mewah ala kantor mereka di penjara.
Sebuah video yang menjelaskan hal itu dikabarkan telah terungkap.

Jika video itu benar, dalam lelucon itu Google akan menawarkan layanan untuk
membuat penjara terasa menyenangkan. Ini termasuk menyediakan robot untuk
toilet.

( wsh / wsh )

-- 
"Indonesian Android Community [id-android]" 

3. First person shooter pertama utk android

4. Fwd: update manual Droid 2.1

5. (tanya) aplikasi GPS log / tracking

6. Not sure if this is possible

7. Notification manager question