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(),即纹理的FILTERWRAP参数。

ES 3.0也没有。仅在ES 3.1
glGetTexLevelParameteriv()中添加了它,使您可以访问要查找的所有值。例如,获取当前绑定纹理的宽度和高度:

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);

}

原文地址:https://www.cnblogs.com/YZFHKMS-X/p/14385862.html