GlReadPixels kullanarak alfa piksel değerlerini okumaya çalışıyorum. Yaptığım ilk şey, pikselleri ayrı ayrı okudu. İşleri hızlandırmak için denemek için ben bir kerede tüm pikselleri okuma çalıştı:glReadPixels ve GL_ALPHA
GLubyte *pixels = new GLubyte[w*h*4];
glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
ve işe yaradı, ama gerçekten yavaş.
GLubyte *pixels = new GLubyte[w*h];
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glReadPixels(0, 0, w, h, GL_ALPHA, GL_UNSIGNED_BYTE, pixels);
Ama olsun: Şimdi RGB bileşenlerine yer israf etmeden, sadece alfa değerini almak çalışıyorum OpenGL error 0x0500 in -[EAGLView swapBuffers]
.
INVALID_ENUM (0x0500)
neden atılır?
Bunun için teşekkürler. Son önerinizle ilgili olarak, bunu nasıl uygulayacağınız konusunda bir işaretçiniz var mı? – sharvey
@sharvey - Yazılıma buradan bakın: http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios. Orada var örnek uygulama: http://www.sunsetlakesoftware.com/sites/default/files/ColorTracking.zip bir dokuya render yapmak için bir offscreen framebuffer kullanır, ben 'glReadPixels() 'kullanarak sonucu çekiyorum, çünkü ben istediğim GPU tabanlı rengi bitiremedi. Bunu yapmak için daha yavaş bir C rutini kullanarak bitti. Bunu bir noktada tamamlayacağım. –