雾效果其实很容易实现,我先总结一下:
(1)首先肯定是将背景色设为我们雾的颜色
(2)打开雾效果
(3)设置雾的背景色
(4)设置雾方程式
雾方程式有三种表现形式 EXP(最老),EXP2(EXP加强版),LINEAR(雾的最好方程式,当然用这个),如果要用LINEAR这种,则要多雾start,end的设置,表示雾从多远开始,从多远停止 。像LINEAR这种称之为线性雾(不是我发明的,OPENGL超级宝典上这样说,设置稠密度无效)。
(5)最后,设置雾质量优先还是效率优先。
ok,上源码
(1)Activity
package sim.feel;
import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.opengl.GLSurfaceView;
import android.opengl.GLSurfaceView.Renderer;
import android.os.Bundle;
public class Fog extends Activity {
/** Called when the activity is first created. */
private GLSurfaceView surfaceView;
private Renderer renderer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 载入图片
BitGL.init(this.getResources());
surfaceView = new GLSurfaceView(this);
renderer = new MyRenderer(this);
surfaceView.setRenderer(renderer);
setContentView(surfaceView);
}
}
class BitGL {
public static Bitmap bitmap;
public static void init(Resources resources) {
bitmap = BitmapFactory.decodeResource(resources, R.drawable.img);
}
}
(2)Renderer类
package sim.feel;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.IntBuffer;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.content.Context;
import android.graphics.Bitmap;
import android.opengl.GLSurfaceView.Renderer;
import android.opengl.GLUtils;
public class MyRenderer implements Renderer {
// Context
public Context context;
// 顶点纹理相关
private int one = 0x10000;
// Bitmap
private Bitmap bitmap;
// 纹理相关
&nb

本文介绍了如何在Android中使用OpenGL ES实现雾化效果。通过设置背景色、开启雾效果、设置雾颜色和方程式,以及调整雾的质量和效率,详细展示了在Activity和Renderer类中的实现代码,包括纹理加载和3D正方体的绘制。
最低0.47元/天 解锁文章
1036





