Android中涉及OpenGL坐标知识
2022-02-08 本文已影响0人
放羊娃华振
在使用OpenGL ES2.0渲染图像到时候,经常需要跟坐标系打交道,由于目前主要还是研究二维的坐标,所有我们就先忽略三围的z轴。
1、安卓屏幕坐标系,如下图:

2、OpenGL中顶点坐标系,如下图:

3、OpenGL中纹理坐标系,如下图:

利用上面三个坐标系,简单实现一张图片的纹理坐标和顶点坐标。
因为OpenGL ES2.0,只能支持绘制点、线、和三角形,所有其余的一些简单形状需要利用前面的几种去拼接。

如上图,我们需要拼接成一个矩形需要使用,abc,bcd连个三个形去完成。
所以就能得到顶点坐标为:
//顶点数据
private float[] vertexData = {
-1f, 1f,
-1f, -1f,
1f, 1f,
-1f, -1f,
1f, 1f,
1f, -1f
};
纹理坐标是:
//纹理坐标
private final float[] textureData = {
1f, 0,
1, 1,
0f, 0f,
1, 1,
0f, 0f,
0f, 1f
};
总结下,纹理坐标是通过顶点坐标的位置,在纹理坐标中找到该点斜对角的点坐标即可。