本文纹理贴图的native实现,是指指定纹理的功能放在了native中实现,其他流程和Java实现类似,在这里就不赘述了。再回头看一下指定纹理数据的方法:
void glTexImage2D(GLenum target,GLint level,GLint internalFormat,
GLsizei width,GLsizei height,Glint border,GLenum format,
GLenum type,const void *texles);
通过以上我们可以知道,需要指定图像的像素数据和图像的一些参数才可以指定纹理,以PNG图像为例,实现指定纹理的步骤:
(1)解析PNG文件
其实网上有很多各种版本解析PNG文件的库,基本上不需要自己实现,本文采用为Android重新包装的libpng 1.6.23,具体代码可参考github地址:https://github.com/julienr/libpng-android。
(2)获取PNG像素数据和其他一些参数
bool ParsePngFile::parse() {
std::istringstream pngDataStream(pngDataString);
const