OpenGl第四章纹理详细亮度调整代码注释 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

OpenGl第四章纹理详细亮度调整代码注释

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:28


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我也传了,可以用的不克不及用找我

相关案例查看更多