/usr/include/oce/OpenGl_FrameBuffer.hxx is in liboce-visualization-dev 0.15-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | // Created by: Kirill GAVRILOV
// Copyright (c) 2011-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and / or modify it
// under the terms of the GNU Lesser General Public version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef OPENGL_FRAME_BUFFER_H
#define OPENGL_FRAME_BUFFER_H
#include <OpenGl_Context.hxx>
#include <OpenGl_ExtFBO.hxx>
#include <OpenGl_Resource.hxx>
#include <Standard_Boolean.hxx>
#include <InterfaceGraphic.hxx>
//! Class implements FrameBuffer Object (FBO) resource
//! intended for off-screen rendering.
class OpenGl_FrameBuffer : public OpenGl_Resource
{
public:
//! Helpful constants
static const GLuint NO_TEXTURE = 0;
static const GLuint NO_FRAMEBUFFER = 0;
static const GLuint NO_RENDERBUFFER = 0;
public:
//! Empty constructor
Standard_EXPORT OpenGl_FrameBuffer (GLint theTextureFormat = GL_RGBA8);
//! Destructor
Standard_EXPORT virtual ~OpenGl_FrameBuffer();
//! Destroy object - will release GPU memory if any.
Standard_EXPORT virtual void Release (const OpenGl_Context* theGlCtx);
//! Texture width.
GLsizei GetSizeX() const
{
return mySizeX;
}
//! Texture height.
GLsizei GetSizeY() const
{
return mySizeY;
}
//! Viewport width.
GLsizei GetVPSizeX() const
{
return myVPSizeX;
}
//! Viewport height.
GLsizei GetVPSizeY() const
{
return myVPSizeY;
}
//! Returns true if current object was initialized
Standard_Boolean IsValid() const
{
return isValidFrameBuffer() && isValidTexture() && isValidDepthBuffer() && isValidStencilBuffer();
}
//! Notice! Obsolete hardware (GeForce FX etc)
//! doesn't support rectangular textures!
//! There are 3 possible results if you are trying
//! to create non power-of-two FBO on these cards:
//! 1) FBO creation will fail,
//! current implementation will try to generate compatible FBO;
//! 2) FBO rendering will be done in software mode (ForceWare 'hack');
//! 3) FBO rendering will be incorrect (some obsolete Catalyst drivers).
Standard_EXPORT Standard_Boolean Init (const Handle(OpenGl_Context)& theGlCtx,
const GLsizei theViewportSizeX,
const GLsizei theViewportSizeY,
const GLboolean toForcePowerOfTwo = GL_FALSE);
//! Setup viewport to render into FBO
Standard_EXPORT void SetupViewport (const Handle(OpenGl_Context)& theGlCtx);
//! Override viewport settings
Standard_EXPORT void ChangeViewport (const GLsizei theVPSizeX,
const GLsizei theVPSizeY);
//! Bind frame buffer (to render into the texture).
Standard_EXPORT void BindBuffer (const Handle(OpenGl_Context)& theGlCtx);
//! Unbind frame buffer.
Standard_EXPORT void UnbindBuffer (const Handle(OpenGl_Context)& theGlCtx);
//! Bind the texture.
Standard_EXPORT void BindTexture (const Handle(OpenGl_Context)& theGlCtx);
//! Unbind the texture.
Standard_EXPORT void UnbindTexture (const Handle(OpenGl_Context)& theGlCtx);
private:
//! Check texture could be created
Standard_Boolean isProxySuccess() const;
//! Generate texture with undefined data
Standard_Boolean initTrashTexture (const Handle(OpenGl_Context)& theGlContext);
Standard_Boolean isValidTexture() const
{
return myGlTextureId != NO_TEXTURE;
}
Standard_Boolean isValidFrameBuffer() const
{
return myGlFBufferId != NO_FRAMEBUFFER;
}
Standard_Boolean isValidDepthBuffer() const
{
return myGlDepthRBId != NO_RENDERBUFFER;
}
Standard_Boolean isValidStencilBuffer() const
{
return myGlStencilRBId != NO_RENDERBUFFER;
}
private:
GLsizei mySizeX; //!< texture width
GLsizei mySizeY; //!< texture height
GLsizei myVPSizeX; //!< viewport width (should be <= texture width)
GLsizei myVPSizeY; //!< viewport height (should be <= texture height)
GLint myTextFormat; //!< GL_RGB, GL_RGBA,...
GLuint myGlTextureId; //!< GL texture ID
GLuint myGlFBufferId; //!< FBO object ID
GLuint myGlDepthRBId; //!< RenderBuffer object for depth ID
GLuint myGlStencilRBId; //!< RenderBuffer object for stencil ID
public:
DEFINE_STANDARD_RTTI(OpenGl_FrameBuffer) // Type definition
};
DEFINE_STANDARD_HANDLE(OpenGl_FrameBuffer, OpenGl_Resource)
#endif // OPENGL_FRAME_BUFFER_H
|