Sha256: 36164f46837dade351ad515f2f0ad8c9cd7d9e42cb033476c55f4bc6f975f4fd
Contents?: true
Size: 1.73 KB
Versions: 13
Compression:
Stored size: 1.73 KB
Contents
#include "render_buffer.h" #include "rays/exception.h" namespace Rays { struct RenderBuffer::Data { int id, width, height; Data () : id(-1), width(0), height(0) { } ~Data () { clear(); } void create (int width_, int height_) { if (width_ <= 0 || height_ <= 0) argument_error(__FILE__, __LINE__); if (is_valid()) { if (width != width_ || height == height_) { argument_error(__FILE__, __LINE__, "RenderBuffer is already created and " "width/height parameters is not same as current width/height."); } return; } GLuint id_ = 0; glGenRenderbuffers(1, &id_); OpenGL_check_error(__FILE__, __LINE__); id = id_; glBindRenderbuffer(GL_RENDERBUFFER, id_); OpenGL_check_error(__FILE__, __LINE__); glRenderbufferStorage( GL_RENDERBUFFER, #ifdef IOS GL_DEPTH_COMPONENT16, #else GL_DEPTH_COMPONENT24, #endif width, height); OpenGL_check_error(__FILE__, __LINE__); width = width_; height = height_; } void clear () { if (id >= 0) { GLuint id_ = id; glDeleteRenderbuffers(1, &id_); } id = -1; } bool is_valid () const { return id >= 0; } };// RenderBuffer::Data RenderBuffer::RenderBuffer () { } RenderBuffer::RenderBuffer (int width, int height) { self->create(width, height); } RenderBuffer::~RenderBuffer () { } GLuint RenderBuffer::id () const { return self->id; } int RenderBuffer::width () const { return self->width; } int RenderBuffer::height () const { return self->height; } RenderBuffer::operator bool () const { return self && self->is_valid(); } bool RenderBuffer::operator ! () const { return !operator bool(); } }// Rays
Version data entries
13 entries across 13 versions & 1 rubygems