cocos2d-x 获取纹理数据
s = Sprite::create("res/GIRE.png");
s->setPosition(visibleSize / 2);
this->addChild(s);
auto id = s->getTexture()->getName();
//int format,width,height;
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT, &format);
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width);
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &height);
//glGetTexImage(GL_TEXTURE_2D, 0, format, GL_UNSIGNED_BYTE, void*);
//这是不现实的
虽然我有解决方案但不建议用
因为 ndk 中没有glGetTexImage 函数
仅限于windows...
如果需要解决方案请联系YZFHKM@163.com
//http://codingdict.com/questions/143818
{
共1个答案
ES 2.0中没有。实际上不存在该功能真让人感到惊讶。您可以获取渲染缓冲区的大小,但不能获取纹理的大小,这似乎是不一致的。
唯一可用的是您可以通过获取的值glGetTexParameteriv()
,即纹理的FILTER
和WRAP
参数。
ES 3.0也没有。仅在ES 3.1glGetTexLevelParameteriv()
中添加了它,使您可以访问要查找的所有值。例如,获取当前绑定纹理的宽度和高度:
int[] texDims = new int[2];
GLES31.glGetTexLevelParameteriv(GLES31.GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, texDims, 0);
GLES31.glGetTexLevelParameteriv(GLES31.GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, texDims, 1);
}