- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我有一个 EAGLView(取自 Apple 的示例),我可以使用以下代码将其成功转换为 UIImage:
- (UIImage *)glToUIImage:(CGSize)size {
NSInteger backingWidth = size.width;
NSInteger backingHeight = size.height;
NSInteger myDataLength = backingWidth * backingHeight * 4;
// allocate array and read pixels into it.
GLuint *buffer = (GLuint *) malloc(myDataLength);
glReadPixels(0, 0, backingWidth, backingHeight, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
// gl renders “upside down” so swap top to bottom into new array.
for(int y = 0; y < backingHeight / 2; y++) {
for(int x = 0; x < backingWidth; x++) {
//Swap top and bottom bytes
GLuint top = buffer[y * backingWidth + x];
GLuint bottom = buffer[(backingHeight - 1 - y) * backingWidth + x];
buffer[(backingHeight - 1 - y) * backingWidth + x] = top;
buffer[y * backingWidth + x] = bottom;
}
}
// make data provider with data.
CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, buffer, myDataLength, releaseScreenshotData);
// prep the ingredients
const int bitsPerComponent = 8;
const int bitsPerPixel = 4 * bitsPerComponent;
const int bytesPerRow = 4 * backingWidth;
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;
CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault;
// make the cgimage
CGImageRef imageRef = CGImageCreate(backingWidth, backingHeight, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, YES, renderingIntent);
CGColorSpaceRelease(colorSpaceRef);
CGDataProviderRelease(provider);
// then make the UIImage from that
UIImage *myImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
return myImage;
}
void releaseScreenshotData(void *info, const void *data, size_t size) {
free((void *)data);
};
下面是我使用此方法转换为 UIImage 的代码:
EAGLView *newView = [[EAGLView alloc] initWithImage:photo.originalImage];
[newView reshapeFramebuffer];
[newView drawView:theSlider.tag value:theSlider.value];
//the two lines above are how EAGLViews in Apple's examples are modified
photoItem *newPhoto = [[photoItem alloc] initWithImage:[self glToUIImage:photo.originalImage.size]];
我遇到的问题是,有时转换后的 UIImage 与 EAGLView 的颜色不同。如果我对 EAGLView 应用高饱和度、高亮度或低对比度以及其他一些情况,就会发生这种情况。例如,如果我对 EAGLView 应用高饱和度,然后转换为 UIImage,则图像的某些部分会比预期的更亮。
所以我发现问题是伪装的 EAGLView 计时问题,类似于我之前在这里的问题 ( EAGLView to UIImage timing question )。
最佳答案
对于仍然关心的人,请参阅下面我的评论:
Tommy,我终于找到了解决方案。这是另一个 EAGLView 计时问题(实际上仅在饱和期间出现),我能够使用您的 performSelector:afterDelay:0.0 方法修复它。谢谢
此外,我会推荐任何为 iOS 5.0 编码的人研究 Core Image 和 GLKView。它们基本上使您调整图像属性(就像我在这里所做的那样)和 EAGLView 到 UIImage 转换类型的工作变得更加简单。
关于iphone - EAGLView 到 UIImage 颜色转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7086468/
当我收到内存警告级别 1 时,我的 EAGLView 开始吐出一行 openGL 错误(502 和 506),并且应用程序没有崩溃,但 EAGLView 变得无响应。由于 Cocos2d Direct
...沮丧。我希望我的游戏仅在横向模式下运行。我已将适当的键/值添加到 Info.plist 文件中,以强制设备方向在启动时正确。 我现在正在尝试旋转 OpenGL 坐标空间以匹配设备的坐标空间。我正
重新启动我的游戏时,它崩溃并显示内存不足警告。我正在寻找一种关闭 EAGLView 并停止所有进程的方法。我不确定要向您展示什么,所以如果需要,请询问更多信息。 我有一个带有 mainGameLoop
我在使用 Apple 的 EAGLView 和 Texture2D 时遇到了一些问题。如果我创建一个 EAGLView 实例并绘制一些纹理,效果会很好。但是,每当我创建 EAGLView 的第二个实例
我正在尝试将我的 CCScene 类(class)附加到我的 EAGLView。所以我的 EAGLView 是 1 类中的 IBOutlet。我连接它并设置和获取它。然后在我的 Class 1 的 V
我有一个 UITableView,每个单元格内有 3 个 EAGLView,用户可以在其中绘制一些东西(在 apple GLPaint 之后,我只是使用该示例中的 PaintingView 类) 我试
我有一个 EAGLView,我希望将其转换为 UIImage。我可以使用此处发布的解决方案来做到这一点: How to get UIImage from EAGLView? 但是,如果在创建 EAGL
我有一个在 iPad 上运行的应用程序,它使用大量纹理,渲染到一个 EAGLView 中。现在我需要第二个 EAGLView,与第一个共享纹理。 通过修复 Apple 代码中的一些设计错误(例如,默认
我有一个显示 OpenGL 3D 模型的 EAGLView 和一个显示图像的 UIImageView。 我想要的是在具有透明背景的 UIImageView 上方显示 EAGLView。 有什么方法可以
我有一个 EAGLView(取自 Apple 的示例),我可以使用以下代码将其成功转换为 UIImage: - (UIImage *)glToUIImage:(CGSize)size { NSInte
我见过 EAGLView 和 GLKView 都用在 iOS 应用程序中。它们有什么区别? 最佳答案 这两个类都与 OpenGL ES 相关,但实际上只有一个由 Apple 作为 iOS SDK 的一
我在 EAGLView 层上渲染了一个 opengl 场景,并在 UIView 上渲染了一些其他元素(圆圈等)(它是 EAGLView 的同级,位于其上方)。是否可以在两层之间混合颜色?我想做一些差异
我有一个 EAGLView,我正在动画中调整其大小,动画由调用绘图函数的 NSTimer 驱动。当我调整 EAGLView 的大小时,我需要调整 View 的投影以保持内容的纵横比。绘制函数如下所示:
我正在制作 OpenGL 游戏并希望同时支持纵向和横向。我编写了所有必要的代码来支持自动旋转,并希望通过以下方式通知我的游戏有关视口(viewport)大小的更改 [[NSNotificationCe
是否可以在EAGLView中使用UIKit类? 例如,是否可以在 EAGLView 中使用 UIScrollView,或者您是否需要重新实现某些内容? 最佳答案 据我所知 EAGLView 是一个 U
在我的 ios 应用程序中,我正在尝试录制 EAGLView 内容的视频(没有摄像头参与)。我录制视频没有问题。录制后,我必须向视频添加一些音轨,然后必须将此视频分享到 Youtube 和 faceb
我必须在我的 iOS 应用程序中的一些其他 View 之上覆盖一个(大部分)透明的 OpenGL View ,但是在我的 iPod touch(第一代,尽管是 iPhone OS 3.1)上进行的测试
我有一个 EAGLView,它有一个 EAGLLayer 作为支持层。我的应用程序基于 UIKit,但我想全屏显示基于 OpenGL 的图表。删除底层 View 会很痛苦,我只想在其他任何内容之上显示
试图获得 Cocos2D和 openFrameworks在 iOS 上一起玩得很好。两者都想使用 GL/EAGLview,当然他们不能同时使用 glView = [[EAGLView alloc] i
我已经实现了GPUImage framework在我的 cocos2d 项目中,GPUImage 框架是一个 BSD 许可的 iOS 库,可让您将 GPU 加速滤镜和其他效果应用于图像、实时摄像机视频
我是一名优秀的程序员,十分优秀!