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
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
|
|
|