Cocoa touch 使用数组内容在石英位图上下文中设置单个像素

Cocoa touch 使用数组内容在石英位图上下文中设置单个像素,cocoa-touch,core-graphics,Cocoa Touch,Core Graphics,我有一个阵列,其中包含320 x 180显示器中每个像素的RGB颜色值。我希望能够在屏幕外设置相同大小的位图上下文中的单个像素值,然后在视图中显示位图上下文 似乎我必须创建1x1矩形,要么在其上画一个笔划,要么在所讨论的点上画一条长度为1的线。对吗?我正在寻找一种非常有效的方法,将数组数据放到图形上下文中,正如您可以想象的那样,这将是一个每秒循环25帧的图像缓冲区,以这种方式绘制似乎效率低下 我想另一个问题是我应该使用OPENGL ES吗 如有想法/最佳实践,将不胜感激 问候 戴夫 好的,我们已

我有一个阵列,其中包含320 x 180显示器中每个像素的RGB颜色值。我希望能够在屏幕外设置相同大小的位图上下文中的单个像素值,然后在视图中显示位图上下文

似乎我必须创建1x1矩形,要么在其上画一个笔划,要么在所讨论的点上画一条长度为1的线。对吗?我正在寻找一种非常有效的方法,将数组数据放到图形上下文中,正如您可以想象的那样,这将是一个每秒循环25帧的图像缓冲区,以这种方式绘制似乎效率低下

我想另一个问题是我应该使用OPENGL ES吗

如有想法/最佳实践,将不胜感激

问候

戴夫

好的,我们已经走了一小段路,但无法跨过最后一关,我不确定这为什么不起作用:

- (void) displayContentsOfArray1UsingBitmap: (CGContextRef)context
{
    long bitmapData[WIDTH * HEIGHT];

    // Build bitmap
    int i, j, h;
    for (i = 0; i < WIDTH; i++)
    {
        for (j = 0; j < HEIGHT; j++)
        {
        h = frameBuffer01[i][j];
        bitmapData[i * j] = h;
        }
}
// Blit the bitmap to the context
    CGDataProviderRef providerRef = CGDataProviderCreateWithData(NULL, bitmapData,4 * WIDTH * HEIGHT, NULL);

    CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();

    CGImageRef imageRef = CGImageCreate(WIDTH, HEIGHT, 8, 32, WIDTH * 4, colorSpaceRef, kCGImageAlphaFirst, providerRef, NULL, YES, kCGRenderingIntentDefault);

    CGContextDrawImage(context, CGRectMake(0.0, HEIGHT, WIDTH, HEIGHT), imageRef);

    CGImageRelease(imageRef);
    CGColorSpaceRelease(colorSpaceRef);
    CGDataProviderRelease(providerRef);
}
-(void)使用位图:(CGContextRef)上下文显示阵列1的内容
{
长位图数据[宽度*高度];
//构建位图
inti,j,h;
对于(i=0;i
阅读
CGImageCreate()
的文档。基本上,您必须从像素阵列(使用
CGDataProviderCreateDirect()
)创建一个CGDataProvider,然后使用此数据提供程序作为源创建一个
CGImage
。然后可以将图像绘制到任何上下文中。正确处理这个问题有点繁琐,因为这些函数需要很多参数,但是文档非常好。

Dave

blitting代码工作正常,但要从帧缓冲区复制的代码不正确

// Build bitmap
int i, j, h;
for (i = 0; i < WIDTH; i++)
{
    for (j = 0; j < HEIGHT; j++)
    {
    h = frameBuffer01[i][j];
    bitmapData[/*step across a line*/i + /*step down a line*/j*WIDTH] = h;
    }
}
//构建位图
inti,j,h;
对于(i=0;i
请注意我对bitmapData元素赋值的更改


由于不知道框架的布局,这可能仍然是错误的,但从您的代码来看,这看起来更接近目的。

干杯,Ole,可以试一试。戴夫:嗨,奥利,很抱歉打扰你,但是你知道我上面的代码有什么问题吗?干杯,戴夫。