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

Version Path
rays-0.1.25 src/render_buffer.cpp
rays-0.1.24 src/render_buffer.cpp
rays-0.1.23 src/render_buffer.cpp
rays-0.1.22 src/render_buffer.cpp
rays-0.1.21 src/render_buffer.cpp
rays-0.1.20 src/render_buffer.cpp
rays-0.1.19 src/render_buffer.cpp
rays-0.1.18 src/render_buffer.cpp
rays-0.1.17 src/render_buffer.cpp
rays-0.1.16 src/render_buffer.cpp
rays-0.1.15 src/render_buffer.cpp
rays-0.1.14 src/render_buffer.cpp
rays-0.1.13 src/render_buffer.cpp