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);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律