2012-08-16 67 views
0

我是iphone開發新手。目前我正在使用opengl的項目,我需要爲視圖的一部分設置動畫。爲此,我拍攝了屏幕截圖,然後創建了紋理。如何在開放的gl iphone中爲動畫製作紋理?

這是我的代碼

glEnable(GL_TEXTURE_2D); 
glEnable(GL_BLEND); 
glBlendFunc(GL_ONE, GL_SRC_COLOR); 

UIGraphicsBeginImageContext(self.introductionTextLabel.frame.size); 
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

GLuint  texture[1]; 
glGenTextures(1, &texture[0]); 

glBindTexture(GL_TEXTURE_2D, texture[0]); 

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 

GLuint width = CGImageGetWidth(viewImage.CGImage); 
GLuint height = CGImageGetHeight(viewImage.CGImage); 
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
void *imageData = malloc(height * width * 4); 
CGContextRef contextTexture = CGBitmapContextCreate(imageData, width, height, 8, 4 * width, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big); 

CGColorSpaceRelease(colorSpace); 
CGContextClearRect(contextTexture, CGRectMake(0, 0, width, height)); 
CGContextTranslateCTM(contextTexture, 0, height - height); 
CGContextDrawImage(contextTexture, CGRectMake(0, 0, width, height), viewImage.CGImage); 

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, imageData); 


CGContextRelease(contextTexture); 

free(imageData); 

我尋覓了很多,但無法找到一個發出動畫紋理的好方法。

任何人都可以建議我很好的方法。如果我做錯了,請指出。

在此先感謝。

回答

0

我可以推薦您修改紋理的唯一方法是使用glTexImage2D()進行全幀更新,並使用glTexSubImage2D()進行部分更新。當然,如果你使用預加載和壓縮類型的紋理會更好......