Created
April 16, 2011 13:19
-
-
Save narumij/923107 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// EAGLDepthBufferedView.h | |
// DepthBufferTest | |
// | |
// Created by narumij on 11/04/16. | |
// | |
#import "EAGLView.h" | |
@interface EAGLDepthBufferedView : EAGLView { | |
GLuint depthRenderbuffer; | |
} | |
@end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// EAGLDepthBufferedView.m | |
// DepthBufferTest | |
// | |
// Created by narumij on 11/04/16. | |
// | |
#import <QuartzCore/QuartzCore.h> | |
#import "EAGLDepthBufferedView.h" | |
@interface EAGLDepthBufferedView (PrivateMethods) | |
- (void)createFramebuffer; | |
- (void)deleteFramebuffer; | |
@end | |
@implementation EAGLDepthBufferedView | |
- (void)createFramebuffer | |
{ | |
if (self.context && !defaultFramebuffer) { | |
[EAGLContext setCurrentContext:self.context]; | |
// Create default framebuffer object. | |
glGenFramebuffers(1, &defaultFramebuffer); | |
glBindFramebuffer(GL_FRAMEBUFFER, defaultFramebuffer); | |
// Create color render buffer and allocate backing store. | |
glGenRenderbuffers(1, &colorRenderbuffer); | |
glBindRenderbuffer(GL_RENDERBUFFER, colorRenderbuffer); | |
[self.context renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer *)self.layer]; | |
glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &framebufferWidth); | |
glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &framebufferHeight); | |
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, colorRenderbuffer); | |
glGenRenderbuffers(1, &depthRenderbuffer); | |
glBindRenderbuffer(GL_RENDERBUFFER, depthRenderbuffer); | |
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthRenderbuffer); | |
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, framebufferWidth, framebufferHeight); | |
if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) | |
NSLog(@"Failed to make complete framebuffer object %x", glCheckFramebufferStatus(GL_FRAMEBUFFER)); | |
} | |
} | |
- (void)deleteFramebuffer | |
{ | |
if (self.context) { | |
[EAGLContext setCurrentContext:self.context]; | |
if (defaultFramebuffer) { | |
glDeleteFramebuffers(1, &defaultFramebuffer); | |
defaultFramebuffer = 0; | |
} | |
if (colorRenderbuffer) { | |
glDeleteRenderbuffers(1, &colorRenderbuffer); | |
colorRenderbuffer = 0; | |
} | |
if (depthRenderbuffer) | |
{ | |
glDeleteRenderbuffers(1, &depthRenderbuffer); | |
depthRenderbuffer = 0; | |
} | |
} | |
} | |
@end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// EAGLView.h | |
// OpenGLES_iPhone | |
// | |
// Created by mmalc Crawford on 11/18/10. | |
// Copyright 2010 Apple Inc. All rights reserved. | |
// | |
#import <UIKit/UIKit.h> | |
#import <OpenGLES/ES1/gl.h> | |
#import <OpenGLES/ES1/glext.h> | |
#import <OpenGLES/ES2/gl.h> | |
#import <OpenGLES/ES2/glext.h> | |
@class EAGLContext; | |
// This class wraps the CAEAGLLayer from CoreAnimation into a convenient UIView subclass. | |
// The view content is basically an EAGL surface you render your OpenGL scene into. | |
// Note that setting the view non-opaque will only work if the EAGL surface has an alpha channel. | |
@interface EAGLView : UIView { | |
@protected | |
// The pixel dimensions of the CAEAGLLayer. | |
GLint framebufferWidth; | |
GLint framebufferHeight; | |
// The OpenGL ES names for the framebuffer and renderbuffer used to render to this view. | |
GLuint defaultFramebuffer, colorRenderbuffer; | |
} | |
@property (nonatomic, retain) EAGLContext *context; | |
- (void)setFramebuffer; | |
- (BOOL)presentFramebuffer; | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment