我正在使用CCRenderTexture逐个像素地绘制一些点。 但是,它正在跳过像素而不是正确清除背景。 当我清除它时,我选择的颜色并不重要。我总是得到一个白色的背景。 它会随机跳过我尝试写入纹理的像素。 这是代码:
size = [[CCDirector sharedDirector] winSize];
mapOfTheLongLostGoldenSpoon = [Map2D newMapWithDimensions:16 :16];
[mapOfTheLongLostGoldenSpoon set:100 :102];
[mapOfTheLongLostGoldenSpoon set:102 :100];
[mapOfTheLongLostGoldenSpoon set:103 :100];
[mapOfTheLongLostGoldenSpoon set:104 :102];
layer = [CCSprite spriteWithFile:@"PixelSprite.png"];
layer.color = ccc3(0, 0, 0);
points = [mapOfTheLongLostGoldenSpoon getPoints];
mapTexture = [[CCRenderTexture alloc] initWithWidth:[mapOfTheLongLostGoldenSpoon width] height:[mapOfTheLongLostGoldenSpoon height] pixelFormat:kCCTexture2DPixelFormat_RGBA8888];
mapTexture.position = CGPointMake([mapOfTheLongLostGoldenSpoon width], size.height-[mapOfTheLongLostGoldenSpoon height]);
mapTexture.scale = 2;
mapTexture.anchorPoint = ccp(0, 0);
[mapTexture beginWithClear:25 g:255 b:25 a:255];
layer.visible = TRUE;
for (int x = 0; x < sizeof(points); x++) {
NSLog(@"%f, %f", points[x].x, points[x].y);
layer.position = points[x];
[layer visit];
}
layer.visible = FALSE;
[mapTexture end];
free(points);
[self addChild:mapTexture];
您可以相信提供的积分很好。 示例点:点100,102不会渲染。
链接到图片:http://i.stack.imgur.com/xWiXB.png
记下我清楚的颜色以及我尝试渲染4个像素并且只显示3个像素的事实。
模拟器正在模拟iPhone Retina 3.5英寸。
图像是110×110。
感谢您的帮助!
编辑:添加了缺失的代码和图片。
答案 0 :(得分:1)
您的明确方法调用不正确。值介于0.0和1.0之间,而不是0和255.尝试:
[mapTexture beginWithClear:0.1f g:1.0f b:0.1f a:1.0f];
目前你所拥有的东西会让它显得全白。我希望这会有所帮助。
另外你为什么要做sizeof(积分)? sizeof以字节为单位返回大小,而不是数组中元素的数量。