在使用OpenGL ES2.0渲染圖像到時(shí)候,經(jīng)常需要跟坐標(biāo)系打交道,由于目前主要還是研究二維的坐標(biāo),所有我們就先忽略三圍的z軸。
1、安卓屏幕坐標(biāo)系,如下圖:

image.png
2、OpenGL中頂點(diǎn)坐標(biāo)系,如下圖:

image.png
3、OpenGL中紋理坐標(biāo)系,如下圖:

image.png
利用上面三個(gè)坐標(biāo)系,簡單實(shí)現(xiàn)一張圖片的紋理坐標(biāo)和頂點(diǎn)坐標(biāo)。
因?yàn)镺penGL ES2.0,只能支持繪制點(diǎn)、線、和三角形,所有其余的一些簡單形狀需要利用前面的幾種去拼接。

image.png
如上圖,我們需要拼接成一個(gè)矩形需要使用,abc,bcd連個(gè)三個(gè)形去完成。
所以就能得到頂點(diǎn)坐標(biāo)為:
//頂點(diǎn)數(shù)據(jù)
private float[] vertexData = {
-1f, 1f,
-1f, -1f,
1f, 1f,
-1f, -1f,
1f, 1f,
1f, -1f
};
紋理坐標(biāo)是:
//紋理坐標(biāo)
private final float[] textureData = {
1f, 0,
1, 1,
0f, 0f,
1, 1,
0f, 0f,
0f, 1f
};
總結(jié)下,紋理坐標(biāo)是通過頂點(diǎn)坐標(biāo)的位置,在紋理坐標(biāo)中找到該點(diǎn)斜對角的點(diǎn)坐標(biāo)即可。