This file is indexed.

/usr/include/oce/OpenGl_FrameBuffer.hxx is in liboce-visualization-dev 0.18.2-2build1.

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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
// 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 License 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_Resource.hxx>
#include <OpenGl_Texture.hxx>

#include <Standard_Boolean.hxx>
#include <InterfaceGraphic.hxx>

#include <Handle_OpenGl_FrameBuffer.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_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 (OpenGl_Context* theGlCtx);

  //! Textures width.
  GLsizei GetSizeX() const
  {
    return myColorTexture->SizeX();
  }

  //! Textures height.
  GLsizei GetSizeY() const
  {
    return myColorTexture->SizeY();
  }

  //! 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();
  }

  //! 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);

  //! (Re-)initialize FBO with specified dimensions.
  Standard_EXPORT Standard_Boolean InitLazy (const Handle(OpenGl_Context)& theGlCtx,
                                             const GLsizei                 theViewportSizeX,
                                             const GLsizei                 theViewportSizeY);

  //! (Re-)initialize FBO with specified dimensions.
  //! The Render Buffer Objects will be used for Color, Depth and Stencil attachments (as opposite to textures).
  //! @param theGlCtx         currently bound OpenGL context
  //! @param theViewportSizeX required viewport size, the actual dimensions of FBO might be greater
  //! @param theViewportSizeY required viewport size, the actual dimensions of FBO might be greater
  //! @param theColorRBufferFromWindow when specified - should be ID of already initialized RB object, which will be released within this class
  Standard_EXPORT Standard_Boolean InitWithRB (const Handle(OpenGl_Context)& theGlCtx,
                                               const GLsizei                 theViewportSizeX,
                                               const GLsizei                 theViewportSizeY,
                                               const GLuint                  theColorRBufferFromWindow = 0);

  //! Initialize class from currently bound FBO.
  //! Retrieved OpenGL objects will not be destroyed on Release.
  Standard_EXPORT Standard_Boolean InitWrapper (const Handle(OpenGl_Context)& theGlCtx);

  //! 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 for drawing and reading (to render into the texture).
  Standard_EXPORT virtual void BindBuffer (const Handle(OpenGl_Context)& theGlCtx);

  //! Bind frame buffer for drawing GL_DRAW_FRAMEBUFFER (to render into the texture).
  Standard_EXPORT virtual void BindDrawBuffer (const Handle(OpenGl_Context)& theGlCtx);

  //! Bind frame buffer for reading GL_READ_FRAMEBUFFER
  Standard_EXPORT virtual void BindReadBuffer (const Handle(OpenGl_Context)& theGlCtx);

  //! Unbind frame buffer.
  Standard_EXPORT virtual void UnbindBuffer (const Handle(OpenGl_Context)& theGlCtx);

  //! Returns the color texture.
  inline const Handle(OpenGl_Texture)& ColorTexture() const
  {
    return myColorTexture;
  }

  //! Returns the depth-stencil texture.
  inline const Handle(OpenGl_Texture)& DepthStencilTexture() const
  {
    return myDepthStencilTexture;
  }

  //! Returns the color Render Buffer.
  GLuint ColorRenderBuffer() const
  {
    return myGlColorRBufferId;
  }

  //! Returns the depth Render Buffer.
  GLuint DepthStencilRenderBuffer() const
  {
    return myGlDepthRBufferId;
  }

protected:

  Standard_Boolean isValidFrameBuffer() const
  {
    return myGlFBufferId != NO_FRAMEBUFFER;
  }

protected:

  GLsizei                myVPSizeX;             //!< viewport width  (should be <= texture width)
  GLsizei                myVPSizeY;             //!< viewport height (should be <= texture height)
  GLint                  myTextFormat;          //!< GL_RGB, GL_RGBA,...
  GLuint                 myGlFBufferId;         //!< FBO object ID
  GLuint                 myGlColorRBufferId;    //!< color         Render Buffer object (alternative to myColorTexture)
  GLuint                 myGlDepthRBufferId;    //!< depth-stencil Render Buffer object (alternative to myDepthStencilTexture)
  bool                   myIsOwnBuffer;         //!< flag indicating that FBO should be deallocated by this class
  Handle(OpenGl_Texture) myColorTexture;        //!< color texture object
  Handle(OpenGl_Texture) myDepthStencilTexture; //!< depth-stencil texture object

public:

  DEFINE_STANDARD_RTTI(OpenGl_FrameBuffer) // Type definition

};

#endif // OPENGL_FRAME_BUFFER_H