[android-developers] Re: opengl 纹理映射

2009-05-13 Thread Wendal Chen
能贴一下代码吗?

图片也可以

On May 13, 8:31 pm, xiaofeng rwgcz...@163.com wrote:
 原来色彩很清楚的图片贴在立方体表面后发黄?
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[android-developers] Re: opengl 纹理映射

2009-05-13 Thread Yusuf T. Mobile
你确定α价值?


Yusuf T. Mobile
的看法,意见和声明此电子邮件是那些作者只是以个人身份,并不一定代表的T Mobile美国公司


On May 13, 7:30 am, Wendal Chen wendal1...@gmail.com wrote:
 能贴一下代码吗?

 图片也可以

 On May 13, 8:31 pm, xiaofeng rwgcz...@163.com wrote:



  原来色彩很清楚的图片贴在立方体表面后发黄?
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[android-developers] Re: opengl 纹理映射

2009-05-13 Thread xiaofeng

   this is my code!是不是loadTexture里有问题?

 protected static int loadTexture(GL10 gl,Bitmap bmp, boolean
reverseRGB) {

System.out.println(Eenter loadTexture in GLTutorialBase);
int[] tmp_texture = new int[1];
gl.glGenTextures(1, tmp_texture, 0);
int texture = tmp_texture[0] ;//QQ

System.out.println(k=0 loadTexture 1 in GLTutorialBase);
ByteBuffer bb = ByteBuffer.allocateDirect(bmp.getHeight()
*bmp.getWidth()*4);
bb.order(ByteOrder.BIG_ENDIAN);
IntBuffer ib = bb.asIntBuffer();
System.out.println(k=0 loadTexture 2 in
GLTutorialBase);

for (int y=bmp.getHeight()-1;y-1;y--)
   for (int x=0;xbmp.getWidth();x++) {
   int pix = bmp.getPixel(x,bmp.getHeight()-y-1);
   // Convert ARGB - RGBA
   @SuppressWarnings(unused)
   byte alpha = (byte)((pix  24)0xFF);
   byte red = (byte)((pix  16)0xFF);
   byte green = (byte)((pix  8)0xFF);
   byte blue = (byte)((pix)0xFF);

// It seems like alpha is currently broken in
Android...
   ib.put(red  24 | green  16 | blue  8 |
0xFF);//255-alpha);
}

System.out.println(k=0 loadTexture 3 in
GLTutorialBase);

ib.position(0);
bb.position(0);
gl.glBindTexture(GL10.GL_TEXTURE_2D, texture);
gl.glTexImage2D(GL10.GL_TEXTURE_2D, 0, GL10.GL_RGBA,
bmp.getWidth(), bmp.getHeight(), 0, GL10.GL_RGBA,
GL10.GL_UNSIGNED_BYTE, bb);
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);
tmp_texture=null;
ib.position(0);
bb.position(0);
ib.clear();
bb.clear();
System.out.println(k =0 Leave loadTexture in
GLTutorialBase);
return texture;
}


protected void init(GL10 gl) {
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.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, lightPos, 0);

gl.glEnable(GL10.GL_DEPTH_TEST);
gl.glClearDepthf(1.0f);
gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glEnable(GL10.GL_CULL_FACE);
gl.glEnable(GL10.GL_CULL_FACE) ;
gl.glCullFace(GL10.GL_BACK);
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
gl.glClearDepthf(1.0f);

gl.glVertexPointer(3, GL10.GL_FLOAT, 0, cubeBuff);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, texBuff);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);

gl.glShadeModel(GL10.GL_SMOOTH);

tex = loadTexture(gl, bmp0);
tex1 = loadTexture(gl, bmp1);
tex2 = loadTexture(gl, bmp2);
tex3 = loadTexture(gl,bmp3);

gl.glFogf(GL10.GL_FOG_MODE, GL10.GL_EXP);;
gl.glFogfv(GL10.GL_FOG_COLOR, fogColor, 0);
gl.glFogf(GL10.GL_FOG_DENSITY, 0.75f);
gl.glHint(GL10.GL_FOG_HINT, GL10.GL_DONT_CARE);
gl.glFogf(GL10.GL_FOG_START, 1.0f);
gl.glFogf(GL10.GL_FOG_END, 5.0f);
gl.glEnable(GL10.GL_FOG);
}
protected void drawFrame(GL10 gl) {
if (fog) {
gl.glEnable(GL10.GL_FOG);
}
else {
gl.glDisable(GL10.GL_FOG);
}

gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
GLU.gluLookAt(gl, 0, 0, 3, 0, 0, 0, 0, 1, 0);
gl.glPushMatrix();

gl.glRotatef(yrot, 0, 1, 0);
gl.glBindTexture(GL10.GL_TEXTURE_2D, tex);
gl.glEnable(GL10.GL_TEXTURE_2D);
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.glVertexPointer(3, GL10.GL_FLOAT, 0, cubeBuff);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, texBuff);

Log.d(TAG,before tBefore bind tex1);
gl.glNormal3f(0,0,1);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);

[android-developers] Re: opengl 纹理映射

2009-05-13 Thread xiaofeng

now i found the problem is in the following code.Maybe the following
process loses some important data;can give me some code about this?
现在我确定问题是在下面的对bmp图片作处理过程导致丢失了一些重要信息,或下面的算法有问题,有没有人有这方面的算法代码?

ByteBuffer bb = ByteBuffer.allocateDirect(bmp.getHeight()
*bmp.getWidth()*4);
bb.order(ByteOrder.BIG_ENDIAN);
IntBuffer ib = bb.asIntBuffer();
System.out.println(k=0 loadTexture 2 in
GLTutorialBase);

for (int y=bmp.getHeight()-1;y-1;y--)
   for (int x=0;xbmp.getWidth();x++) {
   int pix = bmp.getPixel(x,bmp.getHeight()-y-1);
   // Convert ARGB - RGBA
   @SuppressWarnings(unused)
   byte alpha = (byte)((pix  24)0xFF);
   byte red = (byte)((pix  16)0xFF);
   byte green = (byte)((pix  8)0xFF);
   byte blue = (byte)((pix)0xFF);

// It seems like alpha is currently broken in
Android...
   ib.put(red  24 | green  16 | blue  8 |
0xFF);//255-alpha);
}

System.out.println(k=0 loadTexture 3 in
GLTutorialBase);

ib.position(0);
bb.position(0);

On 5月14日, 上午11时50分, xiaofeng rwgcz...@163.com wrote:
this is my code!是不是loadTexture里有问题?

  protected static int loadTexture(GL10 gl,Bitmap bmp, boolean
 reverseRGB) {

 System.out.println(Eenter loadTexture in GLTutorialBase);
 int[] tmp_texture = new int[1];
 gl.glGenTextures(1, tmp_texture, 0);
 int texture = tmp_texture[0] ;//QQ

 System.out.println(k=0 loadTexture 1 in GLTutorialBase);
 ByteBuffer bb = ByteBuffer.allocateDirect(bmp.getHeight()
 *bmp.getWidth()*4);
 bb.order(ByteOrder.BIG_ENDIAN);
 IntBuffer ib = bb.asIntBuffer();
 System.out.println(k=0 loadTexture 2 in
 GLTutorialBase);

 for (int y=bmp.getHeight()-1;y-1;y--)
for (int x=0;xbmp.getWidth();x++) {
int pix = bmp.getPixel(x,bmp.getHeight()-y-1);
// Convert ARGB - RGBA
@SuppressWarnings(unused)
byte alpha = (byte)((pix  24)0xFF);
byte red = (byte)((pix  16)0xFF);
byte green = (byte)((pix  8)0xFF);
byte blue = (byte)((pix)0xFF);

 // It seems like alpha is currently broken in
 Android...
ib.put(red  24 | green  16 | blue  8 |
 0xFF);//255-alpha);
 }

 System.out.println(k=0 loadTexture 3 in
 GLTutorialBase);

 ib.position(0);
 bb.position(0);
 gl.glBindTexture(GL10.GL_TEXTURE_2D, texture);
 gl.glTexImage2D(GL10.GL_TEXTURE_2D, 0, GL10.GL_RGBA,
 bmp.getWidth(), bmp.getHeight(), 0, GL10.GL_RGBA,
 GL10.GL_UNSIGNED_BYTE, bb);
 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);
 tmp_texture=null;
 ib.position(0);
 bb.position(0);
 ib.clear();
 bb.clear();
 System.out.println(k =0 Leave loadTexture in
 GLTutorialBase);
 return texture;

 }

 protected void init(GL10 gl) {
 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.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, lightPos, 0);

 gl.glEnable(GL10.GL_DEPTH_TEST);
 gl.glClearDepthf(1.0f);
 gl.glEnable(GL10.GL_TEXTURE_2D);
 gl.glEnable(GL10.GL_CULL_FACE);
 gl.glEnable(GL10.GL_CULL_FACE) ;
 gl.glCullFace(GL10.GL_BACK);
 gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
 gl.glClearDepthf(1.0f);

 gl.glVertexPointer(3, GL10.GL_FLOAT, 0, cubeBuff);
 gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
 gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, texBuff);
 gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);

 gl.glShadeModel(GL10.GL_SMOOTH);

 tex = loadTexture(gl, bmp0);
 tex1 = loadTexture(gl, bmp1);
 tex2 = loadTexture(gl, bmp2);
 tex3 = loadTexture(gl,bmp3);

 gl.glFogf(GL10.GL_FOG_MODE, GL10.GL_EXP);;
 gl.glFogfv(GL10.GL_FOG_COLOR, fogColor, 0);
 gl.glFogf(GL10.GL_FOG_DENSITY, 0.75f);
 gl.glHint(GL10.GL_FOG_HINT, GL10.GL_DONT_CARE);
 gl.glFogf(GL10.GL_FOG_START, 1.0f);
 gl.glFogf(GL10.GL_FOG_END, 5.0f);