Commit 02048eaa authored by Jan Möbius's avatar Jan Möbius

Replaced the glutSolidSphere in Manipulator Node with own implementation

parent 403a73bf
......@@ -10,7 +10,6 @@ include_directories (
${CMAKE_CURRENT_BINARY_DIR}
${OPENGL_INCLUDE_DIR}
${GLEW_INCLUDE_DIR}
${GLUT_INCLUDE_DIR}
)
# Linking for apple is special here as the linker pulls in the dependencies, we have to set them like in PluginLib!
......@@ -156,7 +155,6 @@ if (WIN32)
-DUSEACG
-DPLUGINLIBDLL
-DUSEPLUGINLIBDLL
-DFREEGLUT_LIB_PRAGMAS=0
)
endif ()
......@@ -228,7 +226,6 @@ target_link_libraries (${OPENFLIPPER_PRODUCT_STRING}
${QT_LIBRARIES}
${OPENGL_LIBRARIES}
${GLEW_LIBRARY}
${GLUT_LIBRARIES}
${COREAPP_ADDITIONAL_LINK_LIBRARIES}
${OPENFLIPPER_STATIC_PLUGINS}
)
......
......@@ -762,10 +762,6 @@ int main(int argc, char **argv)
return -1;
}
#ifndef __APPLE__
glutInit(&argc,argv);
#endif
// create core ( this also reads the ini files )
Core * w = new Core( );
#ifdef PYTHON_ENABLED
......
......@@ -43,7 +43,6 @@ include_directories (
${CMAKE_CURRENT_BINARY_DIR}
${OPENGL_INCLUDE_DIR}
${GLEW_INCLUDE_DIR}
${GLUT_INCLUDE_DIR}
${ADDITIONAL_PLUGINLIB_INCS}
${PACKAGE_INCLUDES}
)
......@@ -63,7 +62,6 @@ if (WIN32)
-DPLUGINLIBDLL
-DACGDLL
-DUSEACG
-DFREEGLUT_LIB_PRAGMAS=0
)
endif ()
......@@ -145,7 +143,6 @@ target_link_libraries (OpenFlipperPluginLib
${QT_LIBRARIES}
${OPENGL_LIBRARIES}
${GLEW_LIBRARY}
${GLUT_LIBRARIES}
${FTGL_LIBS}
${ADDITIONAL_PLUGINLIB_LIBS}
)
......
......@@ -202,7 +202,7 @@ include (ACGOutput)
acg_openmp ()
# check for OpenGL, GLEW and GLUT as our required dependencies
# check for OpenGL, GLEW as our required dependencies
find_package (OpenGL)
if (NOT OPENGL_FOUND)
message (FATAL_ERROR "OpengGL not found!")
......@@ -213,11 +213,6 @@ if (NOT GLEW_FOUND)
message (FATAL_ERROR "GLEW not found!")
endif ()
find_package (GLUT)
if (NOT GLUT_FOUND)
message (FATAL_ERROR "GLUT not found!")
endif ()
# using the internal openmesh delivered by the svn repo (default) or use some external installation
set (USE_INTERNAL_OPENMESH ON CACHE BOOL "Use and build internal version of OpenMesh found in libs_required")
......
# - try to find glut library and include files
# GLUT_INCLUDE_DIR, where to find GL/glut.h, etc.
# GLUT_LIBRARIES, the libraries to link against
# GLUT_FOUND, If false, do not try to use GLUT.
# Also defined, but not for general use are:
# GLUT_glut_LIBRARY = the full path to the glut library.
# GLUT_Xmu_LIBRARY = the full path to the Xmu library.
# GLUT_Xi_LIBRARY = the full path to the Xi Library.
#=============================================================================
# Copyright 2001-2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distributed this file outside of CMake, substitute the full
# License text for the above reference.)
IF (WIN32)
# Check if the base path is set
if ( NOT CMAKE_WINDOWS_LIBS_DIR )
# This is the base directory for windows library search used in the finders we shipp.
set(CMAKE_WINDOWS_LIBS_DIR "c:\libs" CACHE STRING "Default Library search dir on windows." )
endif()
if ( CMAKE_GENERATOR MATCHES "^Visual Studio 11.*Win64" )
SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2012/x64/")
elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 11.*" )
SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2012/x32/")
elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 12.*Win64" )
SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2013/x64/")
elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 12.*" )
SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2013/x32/")
elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 14.*Win64" )
SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2015/x64/")
elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 14.*" )
SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2015/x32/")
elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 15.*Win64" )
SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2017/x64/")
elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 15.*" )
SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2017/x32/")
endif()
FIND_PATH( GLUT_INCLUDE_DIR NAMES GL/glut.h
PATHS ${GLUT_ROOT_PATH}/include
"${CMAKE_WINDOWS_LIBS_DIR}/glut-3.7/include"
"${VS_SEARCH_PATH}/freeglut-3.0.0/include"
"${VS_SEARCH_PATH}/freeglut-2.8.1/include" )
FIND_LIBRARY( GLUT_release_LIBRARY NAMES glut32 glut freeglut
PATHS
${OPENGL_LIBRARY_DIR}
${GLUT_ROOT_PATH}/Release
"${CMAKE_WINDOWS_LIBS_DIR}/glut-3.7/lib"
"${VS_SEARCH_PATH}/freeglut-3.0.0/lib"
"${VS_SEARCH_PATH}/freeglut-2.8.1/lib"
)
GET_FILENAME_COMPONENT( GLUT_LIBRARY_DIR ${GLUT_release_LIBRARY} PATH )
FIND_LIBRARY( GLUT_debug_LIBRARY NAMES glut32d glutd freeglutd
PATHS
${OPENGL_LIBRARY_DIR}
${GLUT_ROOT_PATH}/Release
"${CMAKE_WINDOWS_LIBS_DIR}/glut-3.7/lib"
"${VS_SEARCH_PATH}/freeglut-3.0.0/lib"
"${VS_SEARCH_PATH}/freeglut-2.8.1/lib"
)
set(GLUT_glut_LIBRARY optimized ${GLUT_release_LIBRARY} debug ${GLUT_debug_LIBRARY} CACHE STRING "Path to the glut libraries")
ELSE (WIN32)
IF (APPLE)
# These values for Apple could probably do with improvement.
FIND_PATH( GLUT_INCLUDE_DIR glut.h
/System/Library/Frameworks/GLUT.framework/Versions/A/Headers
${OPENGL_LIBRARY_DIR}
)
SET(GLUT_glut_LIBRARY "-framework GLUT" CACHE STRING "GLUT library for OSX")
SET(GLUT_cocoa_LIBRARY "-framework Cocoa" CACHE STRING "Cocoa framework for OSX")
ELSE (APPLE)
FIND_PATH( GLUT_INCLUDE_DIR GL/glut.h
/usr/include/GL
/usr/openwin/share/include
/usr/openwin/include
/opt/graphics/OpenGL/include
/opt/graphics/OpenGL/contrib/libglut
)
FIND_LIBRARY( GLUT_glut_LIBRARY glut
/usr/openwin/lib
)
FIND_LIBRARY( GLUT_Xi_LIBRARY Xi
/usr/openwin/lib
)
FIND_LIBRARY( GLUT_Xmu_LIBRARY Xmu
/usr/openwin/lib
)
ENDIF (APPLE)
ENDIF (WIN32)
SET( GLUT_FOUND "NO" )
IF(GLUT_INCLUDE_DIR)
IF(GLUT_glut_LIBRARY)
# Is -lXi and -lXmu required on all platforms that have it?
# If not, we need some way to figure out what platform we are on.
SET( GLUT_LIBRARIES
${GLUT_glut_LIBRARY}
${GLUT_Xmu_LIBRARY}
${GLUT_Xi_LIBRARY}
${GLUT_cocoa_LIBRARY}
)
SET( GLUT_FOUND "YES" )
#The following deprecated settings are for backwards compatibility with CMake1.4
SET (GLUT_LIBRARY ${GLUT_LIBRARIES})
SET (GLUT_INCLUDE_PATH ${GLUT_INCLUDE_DIR})
ENDIF(GLUT_glut_LIBRARY)
ENDIF(GLUT_INCLUDE_DIR)
MARK_AS_ADVANCED(
GLUT_INCLUDE_DIR
GLUT_glut_LIBRARY
GLUT_Xmu_LIBRARY
GLUT_Xi_LIBRARY
)
......@@ -528,7 +528,6 @@ function (_build_openflipper_plugin plugin)
${${_PLUGIN}_INCDIRS}
${OPENGL_INCLUDE_DIR}
${GLEW_INCLUDE_DIR}
${GLUT_INCLUDE_DIR}
${CMAKE_BINARY_DIR}/OpenFlipper/PluginLib
${PACKAGE_INCLUDES}
${${_PLUGIN}_TYPE_INCLUDES}
......@@ -693,15 +692,12 @@ function (_build_openflipper_plugin plugin)
)
if (WIN32)
# Visual studio requires our plugins to link with GLUT
find_package (GLUT)
# generate dllinport defines
add_definitions (-DACGDLL -DUSEACG -DPLUGINLIBDLL -DUSEPLUGINLIBDLL -DFREEGLUT_LIB_PRAGMAS=0)
add_definitions (-DACGDLL -DUSEACG -DPLUGINLIBDLL -DUSEPLUGINLIBDLL )
target_link_libraries (Plugin-${plugin}
${OPENMESH_LIBRARIES}
ACG
OpenFlipperPluginLib
${GLUT_LIBRARIES}
)
# copy plugin dll file to "Build" directory
......
......@@ -17,7 +17,6 @@ if (WIN32)
-DBUILDOBJECTTYPEDLL
-DACGDLL
-DUSEACG
-DFREEGLUT_LIB_PRAGMAS=0
)
endif ()
......@@ -43,7 +42,6 @@ include_directories (
${CMAKE_CURRENT_BINARY_DIR}
${OPENGL_INCLUDE_DIR}
${GLEW_INCLUDE_DIR}
${GLUT_INCLUDE_DIR}
)
# remove template cc files from source file list
......@@ -73,7 +71,6 @@ target_link_libraries (${TYPENAME}
${QT_LIBRARIES}
${OPENGL_LIBRARIES}
${GLEW_LIBRARY}
${GLUT_LIBRARIES}
OpenFlipperPluginLib
)
......@@ -16,7 +16,7 @@ endif ()
acg_openmp ()
# check for OpenGL, GLEW and GLUT as our required dependencies
# check for OpenGL, GLEW as our required dependencies
find_package (OpenGL)
if (NOT OPENGL_FOUND)
message (FATAL_ERROR "OpengGL not found!")
......@@ -27,11 +27,6 @@ if (NOT GLEW_FOUND)
message (FATAL_ERROR "GLEW not found!")
endif ()
find_package (GLUT)
if (NOT GLUT_FOUND)
message (FATAL_ERROR "GLUT not found!")
endif ()
find_package (OpenMesh)
if (NOT OPENMESH_FOUND)
message (FATAL_ERROR "OpenMesh not found!")
......@@ -42,8 +37,7 @@ set(INCLUDE_DIRS ${OPENMESH_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/ShaderUtils
${CMAKE_CURRENT_BINARY_DIR}
${OPENGL_INCLUDE_DIR}
${GLEW_INCLUDE_DIR}
${GLUT_INCLUDE_DIR} )
${GLEW_INCLUDE_DIR} )
set(ADDITIONAL_LINK_LIBRARIES "" )
set(ADDITIONAL_BUILD_DIRS "" )
......@@ -100,7 +94,7 @@ set (directories
# generate dllexport macros on windows
if (WIN32)
add_definitions(-DACGDLL -DFREEGLUT_LIB_PRAGMAS=0)
add_definitions(-DACGDLL )
remove_definitions(-DUSEACG)
endif ()
......@@ -146,7 +140,6 @@ target_link_libraries ( ACG ${OPENMESH_LIBRARIES}
${QT_LIBRARIES}
${OPENGL_LIBRARIES}
${GLEW_LIBRARY}
${GLUT_LIBRARIES}
${ADDITIONAL_LINK_LIBRARIES} )
#===================================================================
......
/*===========================================================================*\
* *
* OpenFlipper *
* Copyright (c) 2001-2015, RWTH-Aachen University *
* Department of Computer Graphics and Multimedia *
* All rights reserved. *
* www.openflipper.org *
* *
*---------------------------------------------------------------------------*
* This file is part of OpenFlipper. *
*---------------------------------------------------------------------------*
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions *
* are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice, *
* this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. Neither the name of the copyright holder nor the names of its *
* contributors may be used to endorse or promote products derived from *
* this software without specific prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
* *
\*===========================================================================*/
//=============================================================================
//
// CLASS GlutExaminer - IMPLEMENTATION
//
//=============================================================================
//== INCLUDES =================================================================
#include "GlutExaminer.hh"
#include "../Utils/StopWatch.hh"
//== NAMESPACES ===============================================================
namespace ACG {
//== IMPLEMENTATION ==========================================================
GlutExaminer::
GlutExaminer(const char* _title, int _width, int _height)
: GlutViewer(_title, _width, _height),
trackball_(glstate_),
center_(Vec3f(0.0,0.0,0.0)),
radius_(1.0)
{
init();
}
//-----------------------------------------------------------------------------
void
GlutExaminer::init()
{
trackball_.set_center(Vec3f(0,0,0));
}
//-----------------------------------------------------------------------------
void
GlutExaminer::draw()
{
ACG::GLState::enable(GL_LIGHTING);
ACG::GLState::shadeModel(GL_SMOOTH);
glutSolidTeapot(0.5);
}
//-----------------------------------------------------------------------------
void
GlutExaminer::mouse(int button, int state, int x, int y)
{
if (state == GLUT_DOWN) trackball_.mouse_press(button, x, y);
else trackball_.mouse_release(button, x, y);
glutPostRedisplay();
}
//-----------------------------------------------------------------------------
void
GlutExaminer::motion(int x, int y)
{
trackball_.mouse_move(x, y);
glutPostRedisplay();
}
//-----------------------------------------------------------------------------
void
GlutExaminer::keyboard(int key, int x, int y)
{
switch (key)
{
case 'f':
{
std::cerr << "Performance test: ";
double fps = measure_fps();
std::cerr << fps << " FPS\n";
break;
}
default:
{
GlutViewer::keyboard(key, x, y);
break;
}
}
}
//-----------------------------------------------------------------------------
void
GlutExaminer::setup_scene(const Vec3f& _center, float _radius)
{
center_ = _center;
radius_ = _radius;
trackball_.set_center(_center);
near_ = 0.01f * radius_;
far_ = 10.0f * radius_;
update_projection();
view_all();
}
//-----------------------------------------------------------------------------
void
GlutExaminer::view_all()
{
ACG::Vec3d t = (-(glstate_.modelview().transform_point(center_))
- Vec3d(0.0f, 0.0f, 3.0f*radius_));
glstate_.translate(t[0], t[1], t[2], MULT_FROM_LEFT);
}
//-----------------------------------------------------------------------------
double
GlutExaminer::measure_fps()
{
const Vec3d t = glstate_.modelview().transform_point(center_);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
StopWatch timer; timer.start();
for (int i=0; i<72; ++i)
{
glstate_.translate(-t[0], -t[1], -t[2], MULT_FROM_LEFT);
glstate_.rotate(5.0f, 0.0f, 1.0f, 0.0f, MULT_FROM_LEFT);
glstate_.translate( t[0], t[1], t[2], MULT_FROM_LEFT);
display();
}
glFinish();
double elapsed = timer.stop();
glPopMatrix();
glutPostRedisplay();
return (1000.0 / elapsed * 72.0);
}
//=============================================================================
} // namespace ACG
//=============================================================================
/*===========================================================================*\
* *
* OpenFlipper *
* Copyright (c) 2001-2015, RWTH-Aachen University *
* Department of Computer Graphics and Multimedia *
* All rights reserved. *
* www.openflipper.org *
* *
*---------------------------------------------------------------------------*
* This file is part of OpenFlipper. *
*---------------------------------------------------------------------------*
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions *
* are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice, *
* this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. Neither the name of the copyright holder nor the names of its *
* contributors may be used to endorse or promote products derived from *
* this software without specific prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
* *
\*===========================================================================*/
//=============================================================================
//
// CLASS GlutExaminer
//
//=============================================================================
#ifndef ACG_GLUTEXAMINER_HH
#define ACG_GLUTEXAMINER_HH
//== INCLUDES =================================================================
#include "GlutViewer.hh"
#include "../GL/GLTrackball.hh"
#include "../Config/ACGDefines.hh"
//== NAMESPACES ===============================================================
namespace ACG {
//== CLASS DEFINITION =========================================================
class ACGDLLEXPORT GlutExaminer : public GlutViewer
{
public:
GlutExaminer(const char* _title, int _width, int _height);
~GlutExaminer() {}
void setup_scene(const Vec3f& _center, float _radius);
void view_all();
double measure_fps();
protected:
virtual void init();
virtual void draw();
virtual void motion(int x, int y);
virtual void mouse(int button, int state, int x, int y);
virtual void keyboard(int key, int x, int y);
protected:
GLTrackball trackball_;
Vec3d center_;
float radius_;
};
//=============================================================================
} // namespace ACG
//=============================================================================
#endif // ACG_GLUTEXAMINER_HH defined
//=============================================================================
/*===========================================================================*\
* *
* OpenFlipper *
* Copyright (c) 2001-2015, RWTH-Aachen University *
* Department of Computer Graphics and Multimedia *
* All rights reserved. *
* www.openflipper.org *
* *
*---------------------------------------------------------------------------*
* This file is part of OpenFlipper. *
*---------------------------------------------------------------------------*
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions *
* are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice, *
* this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. Neither the name of the copyright holder nor the names of its *
* contributors may be used to endorse or promote products derived from *
* this software without specific prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
* *
\*===========================================================================*/
//=============================================================================
//
// CLASS GlutViewer - IMPLEMENTATION
//
//=============================================================================
//== INCLUDES =================================================================
#include "GlutViewer.hh"
#include <cstdio>
//== NAMESPACES ===============================================================
namespace ACG {
//== IMPLEMENTATION ==========================================================
std::map<int, GlutViewer*> GlutViewer::windows__;
//-----------------------------------------------------------------------------
GlutViewer::GlutViewer(const char* _title, int _width, int _height) :
width_(_width),
height_(_height),
fullscreen_(false),
bak_left_(0),
bak_top_(0),
bak_width_(0),
bak_height_(0)
{
// create window
glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE | GLUT_ALPHA);
glutInitWindowSize(_width, _height);
glViewport(0, 0, _width, _height);
windowID_ = glutCreateWindow(_title);
windows__[windowID_] = this;
// register callbacks
glutDisplayFunc(display__);
glutKeyboardFunc(keyboard__);
glutSpecialFunc(special__);
glutMouseFunc(mouse__);
glutMotionFunc(motion__);
glutPassiveMotionFunc(passivemotion__);
glutReshapeFunc(reshape__);
glutVisibilityFunc(visibility__);
// init GL
init();
}
//-----------------------------------------------------------------------------
GlutViewer::
~GlutViewer()
{
glutDestroyWindow(windowID_);
}