2011-11-14 8 views
1

iOSプラットフォームのテクスチャにUIImageを読み込もうとしています。私はStackOverflowのトリックを行うコードスニペットを見つけましたが、問題は、表示されているテクスチャを逆さまにして表示するときです。UIImageからテクスチャへの変換では、テクスチャが垂直方向に反転されます

int numComponents = 4; 

UIImage* image = [UIImage imageNamed:@"Test.png"]; 
CGImageRef imageRef = [image CGImage]; 
int width = CGImageGetWidth(imageRef); 
int height = CGImageGetHeight(imageRef); 

//Allocate texture data 
GLubyte* textureData = (GLubyte *)malloc(width * height * numComponents);  

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
NSUInteger bytesPerPixel = 4; 
NSUInteger bytesPerRow = bytesPerPixel * width; 
NSUInteger bitsPerComponent = 8; 
CGContextRef context = CGBitmapContextCreate(textureData, width, height, 
              bitsPerComponent, bytesPerRow, colorSpace, 
              kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big); 
CGColorSpaceRelease(colorSpace); 

CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef); 
CGContextRelease(context); 

//texture setup 
GLuint textureID;  
glPixelStorei(GL_UNPACK_ALIGNMENT, 1); 
glGenTextures(1, &textureID); 

glBindTexture(GL_TEXTURE_2D, textureID); 
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureDataMirrored); 

私はUIImageを次の行(データを読む前)でミラーリングしようとしましたが、それも動作しませんでした。実際には何の効果もありません。

ここで間違っていることを教えてください。ありがとうございました。

+0

http://stackoverflow.com/questions/506622/cgcontextdrawimage-draws-image-upside-down-when-passed-uiimage-cgimageの可能重複 –

+0

感謝..それは完全に答えなかったが、解決に私を導いた。 – kal21

+0

必要に応じて独自のソリューションを受け入れることができます。 – coder

答えて

5

この2行は、問題を修正し

CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0,height); 
CGContextConcatCTM(context, flipVertical); 
関連する問題