openels20 三角形
来源:互联网 发布:电脑监控软件价格 编辑:程序博客网 时间:2024/06/05 10:06
package edu.wuwang.opengl.jason.demo1;import android.opengl.GLES20;import android.opengl.GLSurfaceView;import java.nio.ByteBuffer;import java.nio.ByteOrder;import java.nio.FloatBuffer;import javax.microedition.khronos.egl.EGLConfig;import javax.microedition.khronos.opengles.GL10;/** * Created by Administrator on 2017/9/25. */public class MyRender implements GLSurfaceView.Renderer { private int mProgram; static final int COORDS_PER_VERTEX = 3; static float triangleCoords[] = { 0.5f, 0.5f, 0.0f, // top -0.5f, -0.5f, 0.0f, // bottom left 0.5f, -0.5f, 0.0f // bottom right }; private final String vertexShaderCode = "attribute vec4 vPosition;" + "void main() {" + " gl_Position = vPosition;" + "}"; private final String fragmentShaderCode = "precision mediump float;" + "uniform vec4 vColor;" + "void main() {" + " gl_FragColor = vColor;" + "}"; private int mPositionHandle; private int mColorHandle; private float[] mViewMatrix=new float[16]; //顶点个数 private final int vertexCount = triangleCoords.length / COORDS_PER_VERTEX; //顶点之间的偏移量 private final int vertexStride = COORDS_PER_VERTEX * 4; // 每个顶点四个字节 private int mMatrixHandler; private FloatBuffer vertexBuffer; //设置颜色,依次为红绿蓝和透明通道 float color[] = { 1.0f, 0.6f, 0.5f, 1.0f }; public MyRender() { } @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { GLES20.glClearColor(0.5f,0.5f,0.5f,1.0f); ByteBuffer bb = ByteBuffer.allocateDirect( triangleCoords.length * 4); bb.order(ByteOrder.nativeOrder()); vertexBuffer = bb.asFloatBuffer(); vertexBuffer.put(triangleCoords); vertexBuffer.position(0); int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode); int fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode); //创建一个空的OpenGLES程序 mProgram = GLES20.glCreateProgram(); //将顶点着色器加入到程序 GLES20.glAttachShader(mProgram, vertexShader); //将片元着色器加入到程序中 GLES20.glAttachShader(mProgram, fragmentShader); //连接到着色器程序 GLES20.glLinkProgram(mProgram); } @Override public void onSurfaceChanged(GL10 gl, int width, int height) { GLES20.glViewport(0,0,width,height); } @Override public void onDrawFrame(GL10 gl) { GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT|GLES20.GL_DEPTH_BUFFER_BIT); GLES20.glUseProgram(mProgram); //获取顶点着色器的vPosition成员句柄 mPositionHandle = GLES20.glGetAttribLocation(mProgram, "vPosition"); //启用三角形顶点的句柄 GLES20.glEnableVertexAttribArray(mPositionHandle); //准备三角形的坐标数据 GLES20.glVertexAttribPointer(mPositionHandle, COORDS_PER_VERTEX, GLES20.GL_FLOAT, false, vertexStride, vertexBuffer); //获取片元着色器的vColor成员的句柄 mColorHandle = GLES20.glGetUniformLocation(mProgram, "vColor"); //设置绘制三角形的颜色 GLES20.glUniform4fv(mColorHandle, 1, color, 0); //绘制三角形 GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, vertexCount); //禁止顶点数组的句柄 GLES20.glDisableVertexAttribArray(mPositionHandle); } public int loadShader(int type, String shaderCode){ //根据type创建顶点着色器或者片元着色器 int shader = GLES20.glCreateShader(type); //将资源加入到着色器中,并编译 GLES20.glShaderSource(shader, shaderCode); GLES20.glCompileShader(shader); return shader; }}
阅读全文
0 0
- openels20 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 第5章 语句
- dubbo-monitor安装、 监控中心 配置过程
- 读书笔记---浪潮之巅
- win编程笔记---文件之类
- 77. Combinations
- openels20 三角形
- 抓取新华网所有旅游相关的标题和地址
- ConcurrentHashMap 总结( 中 )
- 2017/0910 实验结果记录
- 灰度图像形态学膨胀与腐蚀
- jquery 函数返回参数
- HDFS1.0 与HDFS2.x 架构理解
- Linux文件保护
- Java知识:IO流