gpt4 book ai didi

c++ - 如何在cocos2d-x中制作清晰的纹理

转载 作者:搜寻专家 更新时间:2023-10-31 01:44:17 24 4
gpt4 key购买 nike

我在一个字符数组中有一个 size 的纯图像数据(32 位 RGBA),我想用它制作一个 cocos2d-x Texture2D,如下所示:

Texture2D * tex = new Texture2D();
tex->initWithData(data, 4*size.width*size.height, Texture2D::PixelFormat::RGBA8888,size.width, size.height, size);
tex->drawAtPoint(Point(offset));

但是生成的图像是模糊的(就像压缩的 jpeg 图像)..输入和纹理(如上所示)都具有大小 size 并且我没有进行任何转换。我只是将代码放在新创建的项目中的 HelloWorld::draw(Renderer *, const kmMat4&, bool) 中。如何获得清晰的图像(数据的精确表示)?也欢迎任何其他建议(如直接帧缓冲区之类的东西......等等,如果有的话)。

我在 mac os 10.8.x 中使用 v3.0

编辑:我尝试在 Texture2D 创建之后和 initWithData 之前设置纹理参数 (GL_NEAREST),但没有任何改变。数据和纹理的大小相同,所以无论如何都不应该调整大小……这是一张图片;矩形的角不尖锐:

Edit2:设置纹理参数(GL_NEAREST)之后 initWithData 工作:

...

Texture2D::TexParams tp = {GL_NEAREST, GL_NEAREST, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE};
tex->setTexParameters(tp);
tex->drawAtPoint(Point(offset));

最佳答案

根据您对问题的描述,我不得不假设与 Texture2D 对象关联的 GL 纹理在您调用 Texture2D::initWithData (...).

在 OpenGL 中,默认的纹理放大过滤器是 GL_LINEAR。在这种情况下,您需要默认的 mag 过滤器,但是在初始化纹理之后之前,您也不能更改过滤器。在创建纹理后设置 GL_NEAREST mag 过滤器将消除在升级纹理时的平滑。

关于c++ - 如何在cocos2d-x中制作清晰的纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23744415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com