-// File: OpenGl_Workspace_3.cxx
-// Created: 20 September 2011
-// Author: Sergey ZERCHANINOV
-// Copyright: OPEN CASCADE 2011
+// Created on: 2011-09-20
+// Created by: Sergey ZERCHANINOV
+// Copyright (c) 2011-2012 OPEN CASCADE SAS
+//
+// The content of this file is subject to the Open CASCADE Technology Public
+// License Version 6.5 (the "License"). You may not use the content of this file
+// except in compliance with the License. Please obtain a copy of the License
+// at http://www.opencascade.org and read it completely before using this file.
+//
+// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
+// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
+//
+// The Original Code and all software distributed under the License is
+// distributed on an "AS IS" basis, without warranty of any kind, and the
+// Initial Developer hereby disclaims all such warranties, including without
+// limitation, any warranties of merchantability, fitness for a particular
+// purpose or non-infringement. Please see the License for the specific terms
+// and conditions governing the rights and limitations under the License.
+
#include <OpenGl_GlCore11.hxx>
#endif
#include <OpenGl_FrameBuffer.hxx>
-#include <OpenGl_ResourceCleaner.hxx>
#include <InterfaceGraphic_Graphic3d.hxx>
#include <InterfaceGraphic_Visual3d.hxx>
return;
// release pending GL resources
- OpenGl_ResourceCleaner::GetInstance()->Cleanup (GetGlContext());
+ Handle(OpenGl_Context) aGlCtx = GetGlContext();
+ aGlCtx->ReleaseDelayed();
+
+ // cache render mode state
+ GLint aRendMode = GL_RENDER;
+ glGetIntegerv (GL_RENDER_MODE, &aRendMode);
+ aGlCtx->SetFeedback (aRendMode == GL_FEEDBACK);
- Tint toSwap = 1; // swap buffers
+ Tint toSwap = (aRendMode == GL_RENDER); // swap buffers
GLint aViewPortBack[4];
OpenGl_FrameBuffer* aFrameBuffer = (OpenGl_FrameBuffer* )theCView.ptrFBO;
if (aFrameBuffer != NULL)
{
glGetIntegerv (GL_VIEWPORT, aViewPortBack);
aFrameBuffer->SetupViewport();
- aFrameBuffer->BindBuffer (GetGlContext());
+ aFrameBuffer->BindBuffer (aGlCtx);
toSwap = 0; // no need to swap buffers
}
if (aFrameBuffer != NULL)
{
- aFrameBuffer->UnbindBuffer (GetGlContext());
+ aFrameBuffer->UnbindBuffer (aGlCtx);
// move back original viewport
glViewport (aViewPortBack[0], aViewPortBack[1], aViewPortBack[2], aViewPortBack[3]);
}
delete[] aDumpData;
}
#endif
+
+ // reset render mode state
+ aGlCtx->SetFeedback (Standard_False);
}