Joshua Moerman
14 years ago
4 changed files with 77 additions and 10 deletions
@ -0,0 +1,43 @@ |
|||||
|
// |
||||
|
// fbo.mm |
||||
|
// J |
||||
|
// |
||||
|
// Created by Joshua Moerman on 8/28/11. |
||||
|
// Copyright 2011 Vadovas. All rights reserved. |
||||
|
// |
||||
|
|
||||
|
#import "fbo.h" |
||||
|
|
||||
|
#import <QuartzCore/QuartzCore.h> |
||||
|
|
||||
|
namespace J { |
||||
|
fbo::fbo(EAGLContext* context, CAEAGLLayer* layer) : width(0), height(0), fbo_number(0), renderbuffers(), texture_id(0){ |
||||
|
glGenFramebuffers(1, &fbo_number); |
||||
|
bind(); |
||||
|
|
||||
|
// much like create_attach_renderbuffer(), but it's not created, but given by the context. |
||||
|
{ |
||||
|
GLuint buffer; |
||||
|
glGenRenderbuffers(1, &buffer); |
||||
|
glBindRenderbuffer(GL_RENDERBUFFER, buffer); |
||||
|
[context renderbufferStorage:GL_RENDERBUFFER fromDrawable:layer]; |
||||
|
glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &width); |
||||
|
glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &height); |
||||
|
|
||||
|
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, buffer); |
||||
|
|
||||
|
renderbuffers[GL_COLOR_ATTACHMENT0] = buffer; |
||||
|
} |
||||
|
|
||||
|
//this will cause a INVALID_OPERATION in bind(). |
||||
|
//create_attach_renderbuffer(GL_DEPTH_COMPONENT16, GL_DEPTH_ATTACHMENT); |
||||
|
|
||||
|
check_error(); |
||||
|
check_status(); |
||||
|
|
||||
|
glClearColor(0.0, 0.0, 0.0, 0.0); |
||||
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); |
||||
|
|
||||
|
unbind(); |
||||
|
} |
||||
|
} |
Reference in new issue