Android(安卓)中使用OpenGL ES进行2D开发(绘制第一个三角形番外篇)
16lz
2021-01-25
绘制三角形需要3步:
- 在虚拟3D空间定义三个点的坐标位置
- 在虚拟3D空间定义视椎体(VIewPort)
- 转换显示到屏幕中
1.理解下glViewport(int x, int y, int width, int height ),即改变绘制三角形的第三步
上一篇Android 中使用OpenGL ES进行2D开发(绘制第一个三角形)中这个方法的使用是用下面的值传递进去的。
gl.glViewport(0,0,glView.getWidth(),glView.getHeight());
我们试着来改变传递进去的值
gl.glViewport(50, 50,430, 550);,同样的代码在不同分辨率的手机上最终显示的三角形就不一样了。
T1981(480*800分辨率) A81(640*960分辨率)
其实三角形在虚拟空间中的大小和viewport都未改变
2.GL10.glOrthof(int left, int right, int bottom, int top, int near, int far),即改变绘制三角形的第三步
下面的两张图中,虚拟3D空间中的三角形位置是不变的,只是改变viewport
vertices.put( new float[] { 0f, 0f, 320f, 0f, 160f, 480.0f});
gl.glOrthof(0, 320, 0, 480, 1, -1); gl.glOrthof(-160, 160, -240, 240, 1, -1);
在手机屏幕中的样子就是这样的:
3.改变虚拟3D空间定义三个点的坐标位置
vertices.put( new float[] { 0f, 0f,320f, 0f,
160f, 480.0f});
gl.glOrthof(0, 320, 0, 480, 1, -1); vertices.put( new float[] { -160f, -240f,
160f, -240f,
0f, 240.0f});
gl.glOrthof(-160, 160, -240, 240, 1, -1); 虽然在屏幕中看起来是一个样子,实际上在 3d 虚拟空间中是不同位置:
原文转自: http://www.waitingfy.com/?p=45
更多相关文章
- ANDROID中LISTVIEW仿QQ群组向上滚动特效
- Android(安卓)OpenGL ES绘制三角形时角度的控制
- Android(安卓)侧边栏开发的方法
- Android(安卓)仿2016版京东筛选
- 2018-01-22 Android(安卓)屏幕完美适配方案
- ANDROID GridView 分页平滑滑动 效果的实现(基于android TV遥控器
- ListView和Adapter的基础知识
- Android(安卓)Fragment生命周期——多屏幕支持
- Android人脸检测类FaceDetector