- procedure InitTeamColorFBO(size_x, size_y, Color: Integer; fbo, depthbuffer : GLUint; var tex : GLUInt);
- var newtex : GLUInt;
- c_Red, C_Green, C_Blue : Double;
- begin
- C_Blue := (Color div (256*256))/256;
- Color := Color mod (256*256);
- C_Green := (Color div 256)/256;
- C_Red := ((Color mod 256))/256;
- glGenFramebuffersEXT(1, @fbo);
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
- glGenRenderbuffersEXT(1, @depthbuffer);
- glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depthbuffer);
- glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, size_x, size_y);
- glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthbuffer);
- glGenTextures(1, @newtex);
- glBindTexture(GL_TEXTURE_2D, newtex);
- glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, size_x,size_y, 0, GL_RGBA, GL_UNSIGNED_BYTE, nil);
- glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,GL_TEXTURE_2D, newtex, 0);
- CheckFBO;
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
- glViewPort(0, 0, size_x, size_y);
- glortho(0,1,0,1,0,128);
- glClearColor(C_Red,C_Green,C_Blue,0);
- glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
- glBindTexture(GL_TEXTURE_2D, Tex);
- glEnable(GL_BLEND);
- glBlendFunc(GL_src_color ,GL_one);
- glBegin(GL_QUADS);
- glTexCoord2f(0,0); glVertex3f(0, 0, 0);
- glTexCoord2f(1,0); glVertex3f(1, 0, 0);
- glTexCoord2f(1,1); glVertex3f(1, 1, 0);
- glTexCoord2f(0,1); glVertex3f(0, 1, 0);
- glEnd;
- glDisable(GL_Blend);
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
- glDeleteTextures(1, @tex); //alte Textur freigeben
- tex := newtex;
- end;