iPhone,如何使用coregraphics从texturepage绘制?

iPhone,如何使用coregraphics从texturepage绘制?,iphone,rendering,core-graphics,texture-mapping,Iphone,Rendering,Core Graphics,Texture Mapping,我正在尝试解决如何使用CoreGraphics从纹理页面绘制 给定包含多个64x64压缩纹理的纹理页面(CGImageRef),如何将该页面中的子区域渲染到设备上下文中 CGContextDrawImage似乎只接受一个目标矩形。我注意到CGImageCreateWithImageInRect,但是这会创建一个新图像。我不想要一个新的图像,我只是想从原始图像中画出来 我相信这是可能的,不过我对iPhone的开发还不熟悉 非常感谢您的帮助 谢谢编辑:等一下。使用CGImageCreateWithI

我正在尝试解决如何使用CoreGraphics从纹理页面绘制

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

CGContextDrawImage似乎只接受一个目标矩形。我注意到CGImageCreateWithImageInRect,但是这会创建一个新图像。我不想要一个新的图像,我只是想从原始图像中画出来

我相信这是可能的,不过我对iPhone的开发还不熟悉

非常感谢您的帮助


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

以下是我最初写的想法;如果它们有用,我就把它们留下

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

编辑:请稍候。使用CGImageCreateWithImageInRect。这就是它的目的

以下是我最初写的想法;如果它们有用,我就把它们留下

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

    • CGImageCreateWithImageInRect有什么问题

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

      CGImageCreateWithImageInRect
      有什么问题

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

      就性能而言,我不希望在每个渲染帧中多次创建新图像。我意识到我可以预缓存这些图像,但是我首先打包纹理页面的原因是性能原因。性能方面,我不想在每个渲染帧多次创建新图像。我意识到我可以预缓存这些图像,但是我首先打包纹理页面的原因是性能原因。