Wenn ich auf Textur rendern, und dann das gleiche Bild zeichnen, scheint es alles dunkler zu machen. Um dieses Bild:Rendern Texturproblem mit Alpha
http://img24.imageshack.us/img24/8061/87993367.png
Ich bin Rendering auf die obere linke Quadrat mit Farbe (1, 1, 1, .8)
auf eine Textur, dann diese Textur-Rendering sowie das mittlere Quadrat (gleiche Farbe) auf eine andere Textur, dann schließlich, dass Textur plus das untere rechte Quadrat (gleiche Farbe) auf dem Bildschirm.
Wie Sie sehen, jedes Mal, wenn ich Textur rendere, wird alles ein wenig dunkler.
Mein Render-to-Narbung Code wie: (Ich bin auf dem iPhone OpenGL ES verwenden)
// gen framebuffer
GLuint framebuffer;
glGenFramebuffersOES(1, &framebuffer);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, framebuffer);
// gen texture
GLuint texture;
glGenTextures(1, &texture);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glBindTexture(GL_TEXTURE_2D, 0);
glDisable(GL_TEXTURE_2D);
// hook it up
glFramebufferTexture2DOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, texture, 0);
if(glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES))
return false;
// set up drawing
glBindFramebufferOES(GL_FRAMEBUFFER_OES, framebuffer);
glViewport(0, 0, Screen::Width, Screen::Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, Screen::Width, 0, Screen::Height, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor4f(1, 1, 1, 1);
// do whatever drawing we'll do here
Draw();
glBindFramebufferOES(GL_FRAMEBUFFER_OES, 0);
Gibt es etwas, was ich hier falsch mache? Brauchen Sie mehr Code, um es herauszufinden? Was könnte hier vor sich gehen?
Danke! Ich habe gedankenlos immer noch 'glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) 'benutzt, ohne über seine Verzweigungen nachzudenken –