android opengl es 雾化效果

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

 

雾效果其实很容易实现,我先总结一下:

(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

评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值