fctom1215
2020-02-23 b81d0cf47a08b3b5de01bf753fb71f6d1fda783a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
//package safeluck.drive.evaluation.render;
//
//import android.opengl.GLSurfaceView;
//
//import java.nio.ByteBuffer;
//
//import javax.microedition.khronos.egl.EGLConfig;
//import javax.microedition.khronos.opengles.GL10;
//
///**
// * MyApplication2
// * Created by lzw on 2019/9/29. 13:31:28
// * 邮箱:632393724@qq.com
// * All Rights Saved! Chongqing AnYun Tech co. LTD
// */
//public class GLRender implements GLSurfaceView.Renderer {
//    //控制旋转的角度
//    private float rotate;
//    @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);
//
//    }
//
//    @Override
//    public void onSurfaceChanged(GL10 gl, int width, int height) {
//        //设置3D视窗的大小及位置
//        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 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_COLOR_ARRAY);
//        //设置当前矩阵堆栈为模型堆栈
//        gl.glMatrixMode(GL10.GL_MODELVIEW);
//        //------绘制第一个图形-----
//        //重置当前的模型视图矩阵
//        gl.glLoadIdentity();
//        gl.glTranslatef(0.95f, -0.8f, -1.5f); //1️⃣
//        //设置顶点位置数据
//        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, PointData.floatBufferUtil(PointData.triangleData));
//        //设置顶点颜色数据
//        gl.glColorPointer(4, GL10.GL_FIXED, 0, PointData.intBufferUtil(PointData.triangleColor));
//        //根据顶点数据绘制平面图形
//        gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3);
//
//        //-----绘制第二个图形-----
//        //重置当前的模型视图矩阵
//        gl.glLoadIdentity();
//        gl.glTranslatef(0.95f, 0.8f, -1.5f);
//        //设置顶点位置数据
//        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, PointData.floatBufferUtil(PointData.rectData));
//        //设置顶点颜色数据
//        gl.glColorPointer(4, GL10.GL_FIXED, 0, PointData.intBufferUtil(PointData.rectColor));
//        //更具顶点数据绘制平面图形
//        gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
//
//        //-----绘制第三个图形----
//        //重置当前的模型视图矩阵
//        gl.glLoadIdentity();
//        gl.glTranslatef(-0.95f, 0.8f, -1.5f);
//        //设置顶点位置数据
//        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, PointData.floatBufferUtil(PointData.rectData2));
//        //根据顶点数据绘制平面图形
//        gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
//
//        //-----绘制第四个图形-----
//        //重置当前的模型视图矩阵
//        gl.glLoadIdentity();
//        gl.glTranslatef(-0.95f, -0.8f, -1.5f);
//        //设置使用纯色填充 **需要注意: 使用纯色填充需要禁用顶点颜色数组
//        gl.glColor4f(1.0f, 0.2f, 0.2f, 0.0f);
//        gl.glDisableClientState(GL10.GL_COLOR_ARRAY);
//        //设置顶点位置数据
//        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, PointData.floatBufferUtil(PointData.pentacle));
//        //根据顶点数据绘制图形
//        gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 5);
//
//        //----绘制第五个图形---
//        //重置当前的模型视图矩阵
//        gl.glLoadIdentity();
//        gl.glTranslatef(0f, 0f, -1.5f);
//        gl.glRotatef(rotate, 0f, 0.2f, 0f);
//        //设置顶点位置数据
//        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, PointData.floatBufferUtil(TDPointData.taperVertices));
//        //启用顶点颜色组
//        gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
//        //设置顶点颜色数据
//        gl.glColorPointer(4, GL10.GL_FIXED, 0, PointData.intBufferUtil(TDPointData.taperColors));
//        //按taperFacetsBuffer指定的面绘制三角形
//        ByteBuffer byteBuffer = PointData.byteBufferUtil(TDPointData.taperFacets);
//        gl.glDrawElements(GL10.GL_TRIANGLE_STRIP, byteBuffer.remaining(), GL10.GL_UNSIGNED_BYTE, byteBuffer);
//
//
//        //绘制结束
//        gl.glFinish();
//        gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
//        //旋转角度+1
//        rotate += 1;
//    }
//}