You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

77 lines
2.4 KiB

// This file is part of libigl, a simple c++ geometry processing library.
//
// Copyright (C) 2015 Alec Jacobson <alecjacobson@gmail.com>
//
// This Source Code Form is subject to the terms of the Mozilla Public License
// v. 2.0. If a copy of the MPL was not distributed with this file, You can
// obtain one at http://mozilla.org/MPL/2.0/.
#ifndef IGL_OPENGL_INIT_RENDER_TO_TEXTURE_H
#define IGL_OPENGL_INIT_RENDER_TO_TEXTURE_H
#include "../igl_inline.h"
#include "gl.h"
#include <cstdlib>
namespace igl
{
namespace opengl
{
/// Create a frame buffer that renders color to a RGBA texture a depth to a
/// "render buffer".
///
/// After calling this, you can use with something like:
///
/// \code{cpp}
/// glBindFramebuffer(GL_FRAMEBUFFER, fbo_id);
/// if(!depth_texture)
/// {
/// glBindRenderbuffer(GL_RENDERBUFFER, d_id);
/// }
/// //
/// // draw scene ...
/// //
/// // clean up
/// glBindFramebuffer(GL_FRAMEBUFFER,0);
/// if(!depth_texture)
/// {
/// glBindRenderbuffer(GL_RENDERBUFFER, 0);
/// }
/// // Later ...
/// glActiveTexture(GL_TEXTURE0+0);
/// glBindTexture(GL_TEXTURE_2D,tex_id);
/// if(depth_texture)
/// {
/// glActiveTexture(GL_TEXTURE0+1);
/// glBindTexture(GL_TEXTURE_2D,d_id);
/// }
/// // draw textures
/// \endcode
///
///
/// @param[in] width image width
/// @param[in] height image height
/// @param[in] depth_texture whether to create a texture for depth or to create a
/// render buffer for depth
/// @param[out] tex_id id of the texture
/// @param[out] fbo_id id of the frame buffer object
/// @param[out] d_id id of the depth texture or frame buffer object
///
IGL_INLINE void init_render_to_texture(
const size_t width,
const size_t height,
const bool depth_texture,
GLuint & tex_id,
GLuint & fbo_id,
GLuint & d_id);
/// \overload
/// \brief Wrapper with depth_texture = false for legacy reasons
IGL_INLINE void init_render_to_texture(
const size_t width,
const size_t height,
GLuint & tex_id,
GLuint & fbo_id,
GLuint & dfbo_id);
}
}
#ifndef IGL_STATIC_LIBRARY
# include "init_render_to_texture.cpp"
#endif
#endif