环境:eclipse,android,opengl es

           最近需要对纹理图像进行一些修改,首先需要加载纹理图片,并对纹理图片进行一些修改,最后再进行纹理对象的生成。

一、纹理图片的加载

      纹理图片的加载可以通过getResources().openRawResource(int)函数和bitmapFactory类进行加载。

 InputStream is = mContext.getResources().openRawResource(        R.drawable.map_lr_new_n);        Bitmap sbitmap = null;        try {    sbitmap = BitmapFactory.decodeStream(is);    // dst = revertBitmapColor(bitmap);        } finally {    try {        is.close();    } catch (IOException e) {        // Ignore.    }        }        @SuppressWarnings("deprecation")        Drawable drawable = new BitmapDrawable(sbitmap);        Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();                
二、纹理图片的修改

1、copy bitmap对象

从文件加入的图片不能修改,所以需要先将图像copy到另外一个bitmap对象。

 Bitmap bitmap2=bitmap.copy(bitmap.getConfig(), true);                ModifyBitmap(bitmap2);

2、修改bitmap对象

通过bitmap中的setPixel函数进行bitmap对象的修改,其中还涉及到int类型的rgb赋值。

 public void ModifyBitmap(Bitmap bitmap)    {    int nw=bitmap.getWidth();        int nh=bitmap.getHeight();        //int alpha=        int col1=0;    int col2=0;        for(int i=0;i>16;       int g=(p&  0x0000FF00)>>8;       int b= p&  0x000000FF;              int a=255-k*50;              p=(a<<24)|(r<<16)|(g<<8)|(b);                   int tempA=p;       bitmap.setPixel(j+1-k, i,tempA) ;                            }          }    }        }

三、纹理的绑定

使用opengl es中的函数对纹理进行绑定。

    if (bitmap != null) {    glBindTexture(GLES11.GL_TEXTURE_2D, drawTestTxId[0]);        glTexParameteri(GLES11.GL_TEXTURE_2D,    GLES11.GL_TEXTURE_MAG_FILTER, GLES11.GL_LINEAR);    glTexParameteri(GLES11.GL_TEXTURE_2D,    GLES11.GL_TEXTURE_MIN_FILTER, GLES11.GL_LINEAR);    glTexParameteri(GLES11.GL_TEXTURE_2D, GLES11.GL_TEXTURE_WRAP_S,    GLES11.GL_REPEAT);    glTexParameteri(GLES11.GL_TEXTURE_2D, GLES11.GL_TEXTURE_WRAP_T,    GLES11.GL_REPEAT);                GLUtils.texImage2D(GLES10.GL_TEXTURE_2D, 0, (bitmap 0);        bitmap.recycle();        }



更多相关文章

  1. Android SharedPreferences 存储复杂对象
  2. React Native嵌入到Android原生应用中、组件的生命周期、颜色、
  3. 三层缓存机制-新知识点,Android常见的内存缓存算法(LruCache原理
  4. Android使用Parcelable传递对象方法及注意事项
  5. Android Handler 异步消息处理机制的妙用 创建强大的图片加载类
  6. [记录点滴]在Ionic和Android中上传Blob图片
  7. android 实现保存图片到相册
  8. android图片裁剪
  9. Android 中保存图片的代码

随机推荐

  1. android Service
  2. Android的一些例子
  3. Android EditText
  4. Android重启应用程序 && 不重启应用不改
  5. Android(安卓)Tv ListView支持遥控器item
  6. Virtual Box 虚拟机安装Android
  7. android webview httpdefaultclient cook
  8. 欢迎使用CSDN-markdown编辑器
  9. android开发学习资料
  10. Android ProgressBar的使用