我有一个 char 数组中的普通图像数据(32 位 RGBA),size
并想用它制作一个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
编辑:我尝试在创建之后和之前设置纹理参数(GL_NEAREST)initWithData
并且没有任何改变。数据和纹理的大小相同,因此无论如何都不应该调整大小……这是一张图片;矩形的角不尖锐:
Edit2:工作后 initWithData
设置纹理参数(GL_NEAREST) :
...
Texture2D::TexParams tp = {GL_NEAREST, GL_NEAREST, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE};
tex->setTexParameters(tp);
tex->drawAtPoint(Point(offset));