iPhone,你如何使用coregraphics从纹理页面绘制?

时间:2009-03-10 15:38:48

标签: iphone rendering core-graphics texture-mapping

我正在尝试使用CoreGraphics来解决如何使用TexturePage进行绘制。

给定一个包含多个64x64打包纹理的纹理页面(CGImageRef),如何将该页面中的子区域渲染到设备上下文中。

CGContextDrawImage似乎只占用目标rect。我注意到CGImageCreateWithImageInRect,但这会创建一个新图像。我不想要一张我只想从原始图像中绘制的新图像。

我确信这是可能的,但我是iPhone开发的新手。

任何帮助都非常感激。

由于

2 个答案:

答案 0 :(得分:2)

CGImageCreateWithImageInRect出了什么问题?

CGImageRef subImage = CGImageCreateWithImageInRect(image, srcRect);
if (subImage) {
    CGContextDrawImage(context, destRect, subImage);
    CFRelease(subImage);
}

答案 1 :(得分:1)

编辑:等一下。使用CGImageCreateWithImageInRect。这就是它的用途。

这是我最初写的想法;我会留下它们,以防它们有用。

  • 看看你是否可以从另一个图像创建某种子图像,这样它就可以借用原始图像的缓冲区(就像一些子字符串实现一样)。然后你可以使用子图像进行绘制。
  • 可能是Core Graphics更适用于合成而不是图像处理,因此您可能必须在应用程序包中使用单独的图像文件。如果SDK文档没有特别推荐你正在做的事情,那么我建议你走这条路线,因为它似乎是最简单和最自然的方式。
  • 您可以使用OpenGLES,在这种情况下,您可以指定多边形顶点的纹理坐标,以便仅选择大纹理的那一部分。