我正在使用 cocos2dx 将 iOS 游戏移植到 Android。游戏的想法是使图像变形并将其实时转换为物理形状。游戏的逻辑是首先使用 CGContextDrawImage 从纹理中创建一个 CGContext,然后使用不同的混合模式操作触摸上下文,如下所示:
CGContextSetBlendMode(context, kCGBlendModeMultiply);
CGContextDrawImage(context, rect, texture);
之后,脏像素在纹理中更新:
glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, w, h, GL_ALPHA, GL_UNSIGNED_BYTE, dirtyPixels);
这在 iOS 上运行良好,但在 Android 上却不行,因为它没有核心图形 (doh)。我正在寻找一种使此代码平台独立的方法,并且由于两个图像的混合非常简单,我的想法是用我自己的代码交换 CGContextDrawImage 以混合内存中的像素。
如果我实现自己的混合像素代码,它会比使用核心图形慢得多(即使我会以各种可能的方式优化混合)还是我应该找到一种方法并分别为每个平台实现混合(使用核心图形在 iOS 上和 Android 上可用的任何东西)?还是有更好的方法(我曾尝试在 GPU 上卸载混合,但恢复像素的同步速度太慢)?