博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android opengl-es 平面贴图的代码
阅读量:6080 次
发布时间:2019-06-20

本文共 4109 字,大约阅读时间需要 13 分钟。

将内容过程较好的一些内容做个珍藏,下面的内容是关于android opengl-es 平面贴图的内容。

package dqq.test.texture;  import java.nio.ByteBuffer;import java.nio.FloatBuffer;  import javax.microedition.khronos.egl.EGLConfig;import javax.microedition.khronos.opengles.GL10;    import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.opengl.GLSurfaceView;import android.opengl.GLUtils;    public class MyRenderer implements GLSurfaceView.Renderer{           private float[] cubeVertices = {             -0.6f, -0.6f, 0.0f,             -0.6f, 0.6f,0.0f,             0.6f, 0.6f, 0.0f,             0.6f, 0.6f, 0.0f,             0.6f, -0.6f, 0.0f,            -0.6f, -0.6f, 0.0f,         };         private byte[] cubeFacets = { 0, 1, 2, 3, 4, 5,            };    private float[] cubeTextures = {             1.0000f, 1.0000f,            1.0000f, 0.0000f,            0.0000f, 0.0000f,             0.0000f, 0.0000f,             0.0000f, 1.0000f,            1.0000f, 1.0000f,                                   };      private Context context;    private FloatBuffer cubeVerticesBuffer;    private ByteBuffer cubeFacetsBuffer;    private FloatBuffer cubeTexturesBuffer;    private int texture;              MyRenderer(Context main){                 this.context = main;        cubeVerticesBuffer = BufferUtil.floatToBuffer(cubeVertices);        cubeFacetsBuffer = BufferUtil.byteToBuffer(cubeFacets);        cubeTexturesBuffer = BufferUtil.floatToBuffer(cubeTextures);                               }              @Override    public void onDrawFrame(GL10 gl) {        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);        gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);        gl.glMatrixMode(GL10.GL_MODELVIEW);        gl.glLoadIdentity();        gl.glTranslatef(0f, 0.0f, -2.0f);        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, cubeVerticesBuffer);        gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, cubeTexturesBuffer);        gl.glBindTexture(GL10.GL_TEXTURE_2D, texture);        gl.glDrawElements(GL10.GL_TRIANGLES, cubeFacetsBuffer.remaining(),            GL10.GL_UNSIGNED_BYTE, cubeFacetsBuffer);        gl.glFinish();        gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);        gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);    }      @Override    public void onSurfaceChanged(GL10 gl, int width, int height) {        gl.glViewport(0, 0, width, height);        gl.glMatrixMode(GL10.GL_PROJECTION);        gl.glLoadIdentity();        float ratio = (float) width / height;        gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10);    }      @Override    public void onSurfaceCreated(GL10 gl, EGLConfig config) {        gl.glDisable(GL10.GL_DITHER);        gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);        gl.glClearColor(0, 0, 0, 0);        gl.glShadeModel(GL10.GL_SMOOTH);        gl.glEnable(GL10.GL_DEPTH_TEST);        gl.glDepthFunc(GL10.GL_LEQUAL);        gl.glEnable(GL10.GL_TEXTURE_2D);        loadTexture(gl);    }              private void loadTexture(GL10 gl)    {        Bitmap bitmap = null;        try        {            bitmap = BitmapFactory.decodeResource(context.getResources(),                R.drawable.sand);            int[] textures = new int[1];            gl.glGenTextures(1, textures, 0);            texture = textures[0];            gl.glBindTexture(GL10.GL_TEXTURE_2D, texture);            gl.glTexParameterf(GL10.GL_TEXTURE_2D,                GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);            gl.glTexParameterf(GL10.GL_TEXTURE_2D,                GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);            gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S,                GL10.GL_REPEAT);            gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T,                GL10.GL_REPEAT);            GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);       }        finally        {            if (bitmap != null)                bitmap.recycle();        }    }       }                   复制代码
                                                                                                                          

转载于:https://juejin.im/post/5c1897df6fb9a04a0604cbb8

你可能感兴趣的文章
tomcat指定配置文件路径方法
查看>>
linux下查看各硬件型号
查看>>
epoll的lt和et模式的实验
查看>>
Flux OOM实例
查看>>
07-k8s-dns
查看>>
Android 中 ListView 分页加载数据
查看>>
oracle启动报错:ORA-00845: MEMORY_TARGET not supported on this system
查看>>
Go方法
查看>>
Dapper丶DapperExtention,以及AbpDapper之间的关系,
查看>>
搞IT的同学们,你们在哪个等级__那些年发过的帖子
查看>>
且谈语音搜索
查看>>
MySQL数据库导入导出常用命令
查看>>
低版本Samba无法挂载
查看>>
Telegraf+Influxdb+Grafana构建监控平台
查看>>
使用excel 展现数据库内容
查看>>
C#方法拓展
查看>>
MySql.Data.dll的版本
查看>>
Linux系统磁盘管理
查看>>
hdu 2191 (多重背包+二进制优化)
查看>>
home.php
查看>>