Android OpenGL es 纹理坐标设定与贴图规则
当opengl对一个四方形进行贴图时,会定义纹理贴图坐标,一串数组,相信初学openggl es者看到后会很头疼,不知道写得是什么东西。现在就将我的研究成果与大家分享下! 当纹理映射启动后绘图时,你必须为OpenGL ES提供其他数据,即顶点数组中各顶点的纹理坐标。纹理坐标定义了图像的哪一部分将被映射到多边形。它的工作方式有点奇怪。 下面看下在 Android 平台下Opengl纹理系统坐标,左下角为原点。 我们现在讨论怎样使用这些纹理坐标。当我们指定顶点数组中的顶点时,我们需要在另一个数组中提供纹理坐标,它称为纹理坐标数组。这里需要注意定义坐标数组顺序,这很关键。 float texCoords[] = new float[] { // FRONT 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, }; 效果如下: 如果我们想截取图片有上角不分做纹理,按照上面方法可获的数组 float texCoords[] = new float[] { // FRONT 0.5f, 0.5f, 1f, 0.5f, 0.5f, 1f, 1f, 1f }; 效果如下: 我们看下贴图的原始文件 你会发现截屏中的图片y轴是颠倒的,其实这是android图像坐标系统与Opengl es 坐标系统不一致导致的。最简单的修正办法将原始图片用工具翻转过来