2010-05-03 19 views
6

में प्रस्तुत करें मुझे आईफोन पर OpenGLES के साथ बनावट और ऑफस्क्रीन फ्रेमबफर को प्रस्तुत करने में समस्या है।बनावट या ऑफस्क्रीन फ्रेमबफर

alt text http://j.imagehost.org/0923/IMG_0020.pngalt text http://j.imagehost.org/0725/IMG_0019.png

पहले छवि महजोंग टाइल CAEAGLLayer सीधे करने के लिए प्रदान की गई पता चलता है और यह सही है। दूसरा, ऑफस्क्रीन फ्रेमबफर को प्रदान की गई टाइल्स दिखाता है, glCopyTexImage2D का उपयोग करके बनावट पर कॉपी किया गया और CAEAGLLayer पर बनावट बनावट। दोनों पृष्ठभूमि के लिए सफेद अपारदर्शी क्वाड का उपयोग करें। मैंने सीधे बनावट को प्रतिपादन करने का प्रयास किया है लेकिन प्रभाव ऑफस्क्रीन फ्रेमबफर के समान ही था।

फ्रेमबफर बनाने के लिए मेरे कोड:

GLuint framebuffer; 
    glGenFramebuffersOES(1, &framebuffer); 
    glBindFramebufferOES(GL_FRAMEBUFFER_OES, framebuffer); 

    GLuint renderbuffer; 
    glGenRenderbuffersOES(1, &renderbuffer); 
    glBindRenderbufferOES(GL_RENDERBUFFER_OES, renderbuffer); 
    glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_RGB8_OES, 
      512, 512); 

    glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, 
      GL_RENDERBUFFER_OES, renderbuffer);

मैं interlaced शिखर डेटा (निर्देशांक, बनावट समन्वय, रंग) पारित करने के लिए VBO का उपयोग कर glDrawElements करने के लिए एक कॉल के साथ एक बनावट एटलस से सभी टाइल आकर्षित। मैं RGBA8888 बनावट प्रारूप का उपयोग करता हूं, प्रत्येक छवि को दो त्रिकोण (क्वाड) पर glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) मिश्रण समारोह के साथ चित्रित करता हूं। मैं गहराई बफर (सभी मामलों में) का उपयोग नहीं करता हूं।

क्या कोई मुझे बता सकता है कि समस्या क्या हो सकती है?

+1

क्या गलत के बारे में छवियों प्रदान की गई है: इसलिए निम्न प्रयास करें? आप उन्हें किस तरह दिखने की उम्मीद करते हैं? – Frogblast

+0

@Frogblast पहला, जिसे ऑफस्क्रीन फ्रेमबफर और न ही बनावट में प्रस्तुत किया गया है, सही है। – sfider

+0

पर्याप्त कोड नहीं दिखाया गया है। एफबीओ शायद समस्या नहीं हैं। – karx11erx

उत्तर

0

ऐसा लगता है कि आपने पर्याप्त कोड पोस्ट नहीं किया है लेकिन पोस्ट किए गए पोस्ट से ऐसा लगता है कि आपने अपने एफबीओ में बनावट और रेंडरबफर की भूमिकाओं को एक साथ जोड़ा है। (आपके पोस्ट शीर्षक ने बनावट को प्रस्तुत किया) इसके अलावा आप अपने ड्रा बफर को परिभाषित करना भूल गए हैं।

एफबीओ से जुड़ा रेंडर बफर आमतौर पर गहराई बफर के रूप में उपयोग किया जाता है।

GLuint framebuffer; 
glGenFramebuffersOES(1, &framebuffer); 
glBindFramebufferOES(GL_FRAMEBUFFER_OES, framebuffer); 

//set up the Depth Buffer 
GLuint renderbuffer; 
glGenRenderbuffersOES(1, &renderbuffer); 
glBindRenderbufferOES(GL_RENDERBUFFER_OES, renderbuffer); 
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT24, 
     512, 512); 

glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT, 
     GL_RENDERBUFFER_OES, renderbuffer); 
//set up the texture that you will be rendering to 
glActiveTexture(GL_TEXTURE0); 
GLuint textureID; 
glGenTextures(1, &textureID); 
glBindTexture(GL_TEXTURE_2D, textureID); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 
//add various other texture parameters here 
glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGB8_OES, 512,512); 
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textureID, 0); 
// define your draw buffers 
GLenum drawBuffers[1] = {GL_COLOR_ATTACHMENT0}; 
glDrawBuffers(1, drawBuffers); 

आशा व्यक्त की कि मदद करता है