目前我正在使用glreadpixels()捕獲屏幕。捕獲的圖像通常是鏡像圖像,因此我將圖像翻轉回正常。 現在我想旋轉捕獲的數據(圖像)90'degree。 任何想法該怎麼做?如何使用圖像的像素數據按90度旋轉圖像?
I M使用來捕獲畫面數據的代碼是:
CGRect screenBounds = [[UIScreen mainScreen] bounds];
int backingWidth = screenBounds.size.width;
int backingHeight =screenBounds.size.height;
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);
NSInteger myDataLength = backingWidth * backingHeight * 4;
GLuint *buffer;
if((buffer= (GLuint *) malloc(myDataLength)) == NULL)
NSLog(@"error initializing the buffer");
glReadPixels(0, 0, backingWidth, backingHeight, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
// code for flipping back (mirroring the image data)
for(int y = 0; y < backingHeight/2; y++) {
for(int xt = 0; xt < backingWidth; xt++) {
GLuint top = buffer[y * backingWidth + xt];
GLuint bottom = buffer[(backingHeight - 1 - y) * backingWidth + xt];
buffer[(backingHeight - 1 - y) * backingWidth + xt] = top;
buffer[y * backingWidth + xt] = bottom;
}
}
不知道如何通過旋轉在90'degree緩衝器捕獲的數據? 感謝
嘿,我想這代碼,但它並不工作正常。所獲得的圖像是一個扭曲的一個..我也製作這些幀的視頻,在每個循環中分配另一個緩衝區將導致性能問題,我也得到這個特殊代碼的例外 – Tornado
a)它是如何失真?嘗試一下,例如3 * 5 int數組。 b)你不需要爲每一幀新的緩衝區,你可以重新使用舊的。 c)上面的代碼中沒有任何內容可以拋出,其他錯誤也會出錯。 – spraff
K現在我正在使用舊的同一緩衝區,並刪除了異常。現在唯一剩下的就是扭曲的圖像。嘿,我不知道如何檢查您的代碼3 * 5 int數組...因爲我的圖像數據存儲在GLuint類型的緩衝區,我認爲代表一個平面陣列..新的OpenGl的東西 – Tornado