CCRenderTexture没有正确清除颜色并跳过像素

时间:2014-01-03 06:57:04

标签: objective-c cocos2d-iphone 2d-games

我正在使用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。

感谢您的帮助!

编辑:添加了缺失的代码和图片。

1 个答案:

答案 0 :(得分:1)

您的明确方法调用不正确。值介于0.0和1.0之间,而不是0和255.尝试:

[mapTexture beginWithClear:0.1f g:1.0f b:0.1f a:1.0f];

目前你所拥有的东西会让它显得全白。我希望这会有所帮助。

另外你为什么要做sizeof(积分)? sizeof以字节为单位返回大小,而不是数组中元素的数量。