Axiom.RenderSystems.OpenGL.GLFBORTTManager._tryPackedFormat C# (CSharp) Method

_tryPackedFormat() private method

private _tryPackedFormat ( int packedFormat ) : bool
packedFormat int
return bool
		private bool _tryPackedFormat( int packedFormat )
		{
			int packedRB;
			bool failed = false; // flag on GL errors

			/// Generate renderbuffer
			Gl.glGenRenderbuffersEXT( 1, out packedRB );

			/// Bind it to FBO
			Gl.glBindRenderbufferEXT( Gl.GL_RENDERBUFFER_EXT, packedRB );

			/// Allocate storage for buffer
			Gl.glRenderbufferStorageEXT( Gl.GL_RENDERBUFFER_EXT, packedFormat, PROBE_SIZE, PROBE_SIZE );
			Gl.glGetError(); // NV hack

			/// Attach depth
			Gl.glFramebufferRenderbufferEXT( Gl.GL_FRAMEBUFFER_EXT, Gl.GL_DEPTH_ATTACHMENT_EXT, Gl.GL_RENDERBUFFER_EXT, packedRB );
			if ( Gl.glGetError() != Gl.GL_NO_ERROR ) // NV hack
				failed = true;

			/// Attach stencil
			Gl.glFramebufferRenderbufferEXT( Gl.GL_FRAMEBUFFER_EXT, Gl.GL_STENCIL_ATTACHMENT_EXT, Gl.GL_RENDERBUFFER_EXT, packedRB );
			if ( Gl.glGetError() != Gl.GL_NO_ERROR ) // NV hack
				failed = true;

			int status = Gl.glCheckFramebufferStatusEXT( Gl.GL_FRAMEBUFFER_EXT );

			/// Detach and destroy
			Gl.glFramebufferRenderbufferEXT( Gl.GL_FRAMEBUFFER_EXT, Gl.GL_DEPTH_ATTACHMENT_EXT, Gl.GL_RENDERBUFFER_EXT, 0 );
			Gl.glFramebufferRenderbufferEXT( Gl.GL_FRAMEBUFFER_EXT, Gl.GL_STENCIL_ATTACHMENT_EXT, Gl.GL_RENDERBUFFER_EXT, 0 );
			Gl.glDeleteRenderbuffersEXT( 1, ref packedRB );

			return status == Gl.GL_FRAMEBUFFER_COMPLETE_EXT && !failed;
		}