OpenGL ES方向解惑

顶点坐标如图3-2定义

计算机图像、android屏幕坐标如图7-4所示

二维纹理坐标方向如图7-3定义

1、2D纹理贴图坐标

//顶点的坐标系

private static float TEXTURE_COORDS[] = {

//Order of coordinates: X, Y,S,T

-1.0f, 1.0f, 0.0f, 0.0f, //原点

-1.0f, -1.0f, 0.0f, 1.0f, //bottom left

1.0f, 1.0f, 1.0f, 0.0f, // top right

1.0f, -1.0f, 1.0f, 1.0f, // bottom right

};

这里将顶点坐标和纹理坐标写到了一个一维数组里面,其中X、Y表示顶点坐标,S、T表示纹理坐标。

也可以分开表示

//顶点坐标

float[] vertex = new float[]{

-1.0f, 1.0f,

-1.0f, -1.0f,

1.0f, 1.0f,

1.0f, -1.0f

};

//纹理坐标数据

float[] text = {

0f,0f , 0f,1f , 1f,1f,

0f,0f , 1f,1f , 1f,0f

};

为什么这么匹配呢,根据图3-2和图7-4可以得出openGL顶点的坐标方向如下图1-1所示

对比图1-1和图7-3,只要按箭头方向将原点、y轴加1,x轴加1,x和y轴同时加1四个点对应起来就行。

2、android相机摄像头坐标

顶点坐标不变

float[] vertex = new float[]{

-1.0f, 1.0f,

-1.0f, -1.0f,

1.0f, 1.0f,

1.0f, -1.0f

};

// 后置摄像头使用的纹理坐标(顺时针旋转90度)

float[] text_back = {

0.0f, 1.0f,

1.0f, 1.0f,

0.0f, 0.0f,

1.0f, 0.0f,

};

// 前置摄像头使用的纹理坐标(顺时针旋转270度然后纵坐标取反)

float[] text_front = {

1f,1f ,

0f,1f ,

1f,0f ,

0f,0f ,

};

参考:

android平台下OpenGL ES 3.0使用GLSurfaceView对相机Camera预览实时处理

OpenGL ES

猜你喜欢

转载自blog.csdn.net/u013795543/article/details/105418494