2017-11-05 35 views
6

मैं ऑफस्क्रीन प्रतिपादन के लिए एक NSOpenGLPixelBuffer बनाना चाहता हूं। अभी के लिए, मैं इसे भी शामिल करने में असमर्थ हूं। कोड यह रहा:एक पिक्सेल बफर बनाना उद्देश्य-सी

NSOpenGLPixelFormatAttribute attribs[] = { 
    NSOpenGLPFAPixelBuffer, 
    NSOpenGLPFANoRecovery, 
    NSOpenGLPFAAccelerated, 
    NSOpenGLPFADepthSize, 24, 
    (NSOpenGLPixelFormatAttribute) 0 
}; 

NSOpenGLPixelFormat* format = [[[NSOpenGLPixelFormat alloc] initWithAttributes:attribs] autorelease]; 
NSOpenGLPixelBuffer* pixBuf = [[NSOpenGLPixelBuffer alloc] 
           initWithTextureTarget: GL_TEXTURE_2D 
           textureInternalFormat: GL_RGBA 
           textureMaxMipMapLevel: 0 
           pixelsWide: 32 
           pixelsHigh: 32]; 

NSLog(@"pbuf address: %p", pixBuf); 

मैं पिक्सेल प्रारूप और चौड़ाई, ऊँचाई के साथ बेला के की कोशिश की है लेकिन कुछ भी काम करने के लिए लगता है। मैं बार-बार पिक्सबफ के लिए शून्य प्राप्त करता हूं। मैं मैकोज़ 10.13 पर एक्सकोड 9 का उपयोग कर रहा हूं। यह कहता है कि NSOpenGLPixelBuffer को बहिष्कृत किया गया है लेकिन इसे अभी भी काम करना चाहिए, है ना?

उत्तर

5

NSOpenGLPixelBuffer, deprecated since OS X Lion किया गया है जो अपने आप में dates back to 2011। कोई आश्चर्य नहीं कि आपको nil मिल रहा है।

Here, एप्पल बनावट में ड्राइंग के लिए एक नया दृष्टिकोण का प्रस्ताव:

अंत में ध्यान दें कि NSOpenGLPixelBuffer वर्ग की सम्पूर्णता पदावनत माना जाना चाहिए। प्रतिस्थापन के रूप में GL framebuffer objects के साथ IOSurface का उपयोग करें।

this example देखें कि यह कैसे होने की जरूरत है की समझ पाने के लिए।

+0

तो ऐसा लगता है कि पुराना एपीआई काम नहीं करेगा। मैं वास्तव में उपरोक्त कोड के साथ एक विरासत प्रणाली पर काम कर रहा था। वैसे भी, सिर के लिए धन्यवाद; मैं उदाहरण देखता हूं और उसके साथ काम करने की कोशिश करता हूं। – alDiablo

2

कोड के बाद मदद की जा सकती है। आप इस GL_TEXTURE_RECTANGLE_EXT पर GL_TEXTURE_2D को प्रतिस्थापित करते हैं।

// Create an OpenGL pixel buffer 
pixBuf = [[NSOpenGLPixelBuffer alloc] initWithTextureTarget:GL_TEXTURE_RECTANGLE_EXT textureInternalFormat:GL_RGBA textureMaxMipMapLevel:0 pixelsWide:32 pixelsHigh:32]; 
NULL_ERROR_EXIT(pixBuf, "Unable to create NSOpenGLPixelBuffer"); 
+0

कोशिश की। काम नहीं किया – alDiablo

संबंधित मुद्दे