Visual Servoing Platform version 3.7.0
Loading...
Searching...
No Matches
vpPanda3DFrameworkManager.cpp
1/*
2 * ViSP, open source Visual Servoing Platform software.
3 * Copyright (C) 2005 - 2024 by Inria. All rights reserved.
4 *
5 * This software is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 * See the file LICENSE.txt at the root directory of this source
10 * distribution for additional information about the GNU GPL.
11 *
12 * For using ViSP with software that can not be combined with the GNU
13 * GPL, please contact Inria about acquiring a ViSP Professional
14 * Edition License.
15 *
16 * See https://visp.inria.fr for more information.
17 *
18 * This software was developed at:
19 * Inria Rennes - Bretagne Atlantique
20 * Campus Universitaire de Beaulieu
21 * 35042 Rennes Cedex
22 * France
23 *
24 * If you have questions regarding the use of this file, please contact
25 * Inria at visp@inria.fr
26 *
27 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
28 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
29 */
30
31#include <visp3/ar/vpPanda3DFrameworkManager.h>
32#include <visp3/ar/vpPanda3DBaseRenderer.h>
33
34#if defined(VISP_HAVE_PANDA3D)
35
36#include "load_prc_file.h"
37
39
41{
42 if (!m_frameworkIsOpen) {
43 load_prc_file_data("",
44 "gl-version 3 2\n"
45 "textures-power-2 none\n"
46 "back-buffers 0\n"
47 "auto-flip 1\n"
48 // "pstats-gpu-timing 1\n"
49 // "gl-finish 1\n"
50 // "texture-minfilter mipmap\n"
51 "no-singular-invert\n"
52 "load-file-type p3assimp\n"
53 "audio-library-name null\n"
54 "model-cache-dir\n");
55 m_framework.open_framework();
56 m_frameworkIsOpen = true;
57 }
58}
59
61{
62 m_framework.close_framework();
63}
64
65void vpPanda3DFrameworkManager::registerDisabledWindow(PointerTo<WindowFramework> wf)
66{
67 m_disabledWindows.push_back(wf);
68}
69
75
76void vpPanda3DFrameworkManager::disableAllOtherRenderers(PointerTo<WindowFramework> &active)
77{
78 GraphicsStateGuardian *activeGsg = active->get_graphics_output()->get_gsg();
79
80 for (int i = 0; i < m_framework.get_num_windows(); ++i) {
81 PointerTo<WindowFramework> fi = m_framework.get_window(i);
82 GraphicsStateGuardian *g = fi->get_graphics_output()->get_gsg();
83 bool active = (g == activeGsg);
84 g->set_active(active);
85 fi->get_graphics_output()->set_active(active);
86 }
87}
88
90{
91 for (int i = 0; i < m_framework.get_num_windows(); ++i) {
92 WindowFramework *fi = m_framework.get_window(i);
93 if (std::find(m_disabledWindows.begin(), m_disabledWindows.end(), fi) == m_disabledWindows.end()) {
94
95 fi->get_graphics_output()->get_gsg()->set_active(true);
96 fi->get_graphics_output()->set_active(true);
97 }
98 }
99}
100
101END_VISP_NAMESPACE
102
103#endif
Base class for a panda3D renderer. This class handles basic functionalities, such as loading object,...
PointerTo< WindowFramework > & getWindowFramework()
void registerDisabledWindow(PointerTo< WindowFramework > wf)
std::vector< PointerTo< WindowFramework > > m_disabledWindows
bool m_frameworkIsOpen
Panda Rendering framework.
void disableAllOtherRenderers(PointerTo< WindowFramework > &active)
void enableSingleRenderer(vpPanda3DBaseRenderer &renderer)