glTexImage2D使用OpenGL ES 2.0抛出错误0x501 Android NDK程序

glTexImage2D使用OpenGL ES 2.0抛出错误0x501 Android NDK程序,android,opengl-es,android-ndk,Android,Opengl Es,Android Ndk,我正在尝试使用OpenGL ES 2.0在Android NDK程序中加载和显示纹理 图像加载正在工作,但我正在尝试使用glTexImage2D初始化纹理,但它总是抛出一个错误:distrib/android emugl//host/libs/Translator/GLES\u V2//GLESv2Imp.cpp:glTexImage2D:1883错误0x501 我在glTexImage2D上遇到问题 glTexImage2D(GL_纹理,0,纹理[0]。bpp/8,纹理[0]。宽度,纹理[0]

我正在尝试使用OpenGL ES 2.0在Android NDK程序中加载和显示纹理

图像加载正在工作,但我正在尝试使用glTexImage2D初始化纹理,但它总是抛出一个错误:distrib/android emugl//host/libs/Translator/GLES\u V2//GLESv2Imp.cpp:glTexImage2D:1883错误0x501

我在glTexImage2D上遇到问题

glTexImage2D(GL_纹理,0,纹理[0]。bpp/8,纹理[0]。宽度,纹理[0]。高度,0,纹理[0]。类型,GL_无符号字节,纹理[0]。图像数据)

我使用的是128x128图像大小

请帮我拿一个

代码类似于:

int LoadGLTextures()//加载位图并转换为纹理
{
int Status=false;//状态指示器
if(LoadTGA(&纹理[0],“/sdcard/BG.tga”))
{
Status=true;//将状态设置为true
//使用TGA数据生成典型纹理
glGenTextures(1,&纹理[0].texID);//创建纹理
glBindTexture(GL_TEXTURE_2D,纹理[0].texID);
glTexParameteri(GL_纹理2D、GL_纹理最小过滤器、GL_线性);
glTexParameteri(GL_纹理2D、GL_纹理MAG_过滤器、GL_线性);
glTexImage2D(GL_纹理,0,纹理[0]。bpp/8,纹理[0]。宽度,纹理[0]。高度,0,纹理[0]。类型,GL_无符号字节,纹理[0]。图像数据);
if(纹理[0].imageData)//如果纹理图像存在
{
释放(纹理[0].imageData);//释放纹理图像内存
}
}
返回状态;//返回状态
}
bool LoadTGA(纹理*纹理,字符*文件名)//加载TGA文件
{
FILE*fTGA;//指向纹理文件的文件指针
fTGA=fopen(文件名,“rb”);//打开文件进行读取
if(fTGA==NULL)//如果它没有打开。。。。
{
返回false;//退出函数
}
if(fread(&tgaheader,sizeof(tgaheader),1,fTGA)==0)//尝试从文件中读取12字节的头
{
if(fTGA!=NULL)//检查seeiffile是否仍然打开
{
fclose(fTGA);//如果是,则将其关闭
}
返回false;//退出函数
}
if(memcmp(uTGAcompare,&tgaheader,sizeof(tgaheader))==0)//查看头是否与的预定义头匹配
{//未压缩的TGA图像
LoadUncompressedTGA(纹理、文件名、fTGA);//如果是,跳转到未压缩TGA加载代码
}
else if(memcmp(cTGAcompare,&tgaheader,sizeof(tgaheader))==0)//查看头是否与的预定义头匹配
{//RLE压缩TGA图像
LoadCompressedTGA(纹理,文件名,fTGA);//如果是,跳转到压缩TGA加载代码
}
else//If头与两种类型都不匹配
{
fclose(fTGA);
返回false;//退出函数
}
return true;//一切顺利,继续

}
您为glTexImage2D指定的参数似乎是错误的

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texture[0].width, texture[0].height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*)texture[0].imageData);