有沒有辦法在iPhone上使用OpenGLES時檢測繪製後像素的alpha是否不是0?alpha通道中的測試點
我想測試多個點來查看id,它們在用戶繪製的隨機多邊形區域內。如果你知道Flash,相當於BitmapData :: getPixel32的是我正在尋找的東西。
有沒有辦法在iPhone上使用OpenGLES時檢測繪製後像素的alpha是否不是0?alpha通道中的測試點
我想測試多個點來查看id,它們在用戶繪製的隨機多邊形區域內。如果你知道Flash,相當於BitmapData :: getPixel32的是我正在尋找的東西。
framebuffer由GPU保存,不能立即CPU訪問。我認爲你最想從完整的OpenGL中獲得的東西就是遮擋查詢;您可以請求繪製幾何圖形,並可以知道實際繪製了多少個像素。可悲的是,這在iPhone上不可用。
我想你可能想要的是glReadPixels,如果你喜歡,它可以用來讀取單個像素。 (寫到這裏,我鍵入,未測試)
GLubyte pixelValue[4];
glReadPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixelValue);
NSLog(@"alpha was %d", pixelValue[3]);
使用glReadPixels導致管道沖洗,所以通常是從一個GL性能上來看是一個壞主意,但它會做你想要什麼。與iOS不同,OpenGL使用圖形紙張順序來顯示像素座標,因此(0,0)是左下角。
不是BitmapData :: getPixel32返回alpha通道值嗎? – PatrickS 2010-11-08 02:28:18
getPixel32返回像素的完整ARGB值。從中你可以檢測到該像素上是否有東西。 – sharvey 2010-11-08 16:21:57