OpenGl第四章 纹理详细亮度调整代码注释
来源:互联网 发布:注册淘宝店铺需要钱吗 编辑:程序博客网 时间:2024/05/16 13:45
OpenGl使用纹理在上一个正方体中知识简单的添加了一个纹理,这一章主要是通过设置三个面的纹理来进行详细的学习;
上次纹理的调用是在onSurfaceCreated 的时候才调用,现在,在Render中当执行 onSurfaceChanged的时候,就对纹理进行初始化操作
/**
* 这是来进行纹理初始化的方法
* @param gl
*/
private void LoadTextures(GL10 gl) {
// create textures
gl.glEnable(GL10.GL_TEXTURE_2D);//首先启用纹理
texturesBuffer = IntBuffer.allocate(3);
gl.glGenTextures(3, texturesBuffer); //生成纹理的数量
// 这个地方加载一张图片来做为我们的背景
Bitmap texture = BufferUtil.getTextureFromBitmapResource(context, R.drawable.crate);
// 设置第一个纹理
gl.glBindTexture(GL10.GL_TEXTURE_2D, texturesBuffer.get(0));//绑定纹理
/**
* 设置纹理的参数,设置纹理过滤器
*/
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_NEAREST);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE);
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, texture, 0); //生成纹理
// 设置第二个纹理
gl.glBindTexture(GL10.GL_TEXTURE_2D, texturesBuffer.get(1));
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE);
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, texture, 0);
// 设置第三个纹理
gl.glBindTexture(GL10.GL_TEXTURE_2D, texturesBuffer.get(2));
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR_MIPMAP_NEAREST);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE);
BufferUtil.generateMipmapsForBoundTexture(texture);
//释放bitmap
texture.recycle();
}
通过这个方法来初始化了纹理,然后在onSurfaceChanged的时候执行,
其他的方法基本上没有变动,因为是学习亮度调整所以还要在onSurfaceCreated中设置gl的亮度
代码如下 // 亮度,三个面的亮度
gl.glEnable(GL10.GL_LIGHT0);
gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_AMBIENT, lightAmbBfr);
gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_DIFFUSE, lightDifBfr);
gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, lightPosBfr);
然后在就是要在onDrawFrame进行亮度的调整,因为
//跟新亮度
if (lighting) {
gl.glEnable(GL10.GL_LIGHTING);
} else {
gl.glDisable(GL10.GL_LIGHTING);
}
这就是对亮度的调整的代码,很简单,Demo我也传了,可以用的不能用找我
- OpenGl第四章 纹理详细亮度调整代码注释
- opengl实现图像亮度调整
- OpenGL 多重纹理示例代码
- Android调整屏幕亮度和改变屏幕亮度调整模式的代码
- Android调整屏幕亮度和改变屏幕亮度调整模式的代码
- 代码注释要详细
- LBP代码详细注释
- OpenGL-纹理读取BMP图片-代码
- 代码整洁之道精华——第四章 注释
- 第四章 注释
- 第四章:注释
- 第四章 注释
- openGL纹理
- OpenGL 纹理
- OpenGL纹理
- OpenGL 纹理
- OpenGL 纹理
- OPenGL纹理
- 在vi中如何显示当前正在编辑的文件名(包括路径
- UILabel 适应内容
- web前端开发规范文档
- C++进阶 必读书籍
- cocos2dx2.x杂记之CCSpriteBatchNode
- OpenGl第四章 纹理详细亮度调整代码注释
- Scipy, Import pylab
- linux下安装ImageMagick
- 说说光耦继电器
- BndTools Tutorial(BndTools 教程)
- SDK及工具类型的网站整理
- svn 可视化工具
- 《时代的变换》:现象、网络和时代变换的动力
- 灰度图像--形态学处理:腐蚀、膨胀、开操作、闭操作、顶帽、底帽等