07 2012 档案
摘要:昨晚完成了一篇转换RGB24为BGR24的文章,今天续写如何将RGB24转换为RGBA。一点显著的不同是RGB占有3个字节,而RGBA则占有4个字节,相比RGB TO BGR的简单性,RGB TO RGBA一定需要为RGBA另外分配存储空间。类似于昨天的第一中方法这里就不再提供了,一是简单,二呢效率太低。1.使用ACCERLERATE.FRAMEWORK提供的库函数vImageConvert_RGB888toARGB8888 和vImagePermuteChannels_ARGB8888- (void)transformRGBToRGBA:(const UInt8 *)pict width:(
阅读全文
摘要:为了适应多平台,也是满足跨平台的要求,有时候必须转换。因为rgb像素在windows上是按照BGRBGR这样的顺序存储的,而在OS X上则是按照RGBRGB存储。所以如果不做转换,必然在某个平台上出现色差。这里主要演示如何在OS X上实现这种转换。1.第一种方法最为简单也最慢,就是写一个循环,交换R和B的位置。Uint8 tmpValue = 0;for(int i = 0; i < numOfPixels; i+=3){ tmpValue = pixelBuffer[i]; pixelBuffer[i] = pixelBuffer[i + 2]; pixelBuffer[i...
阅读全文
摘要:1.CVOpenGLESTextureCacheCreateTextureFromImage为什么该函数使用系统生成的CVImageBufferRef 时速度很快,而本人使用由原始的rgb生成 CVImageBufferRef,或者将系统原始的CVImageBufferRef -> BGRA ->CVImageBufferRef,这两种情况下生成的CVImageBufferRef 则要耗费几十毫秒,在我的试验平台下,耗时30ms。2.glDrawArrays 使用该函数做图像渲染时,如果数据源为BGRA, 则速度很快,而当数据源为RGB时,又要耗时20ms在本人的试验平台上。这两个
阅读全文