⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 glut.h

📁 SiftGPU is an implementation of SIFT [1] for GPU. SiftGPU processes pixels parallely to build Gaussi
💻 H
📖 第 1 页 / 共 3 页
字号:
#ifndef __glut_h__
#define __glut_h__

/* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998, 2000, 2006. */

/* This program is freely distributable without licensing fees  and is
   provided without guarantee or warrantee expressed or  implied. This
   program is -not- in the public domain. */

#if defined(_WIN32) || defined(__CYGWIN__)

/* GLUT 3.7 now tries to avoid including <windows.h>
   to avoid name space pollution, but Win32's <GL/gl.h> 
   needs APIENTRY and WINGDIAPI defined properly. */
# if 0
   /* This would put tons of macros and crap in our clean name space. */
#  define  WIN32_LEAN_AND_MEAN
#  include <windows.h>
# else
   /* XXX This is from Win32's <windef.h> */
#  ifndef APIENTRY
#   define GLUT_APIENTRY_DEFINED
    /* Cygwin and MingW32 are two free GNU-based Open Source compilation
       environments for Win32.  Note that __CYGWIN32__ is deprecated
       in favor of simply __CYGWIN__. */
#   if defined(__MINGW32__) || defined(__CYGWIN32__) || defined(__CYGWIN__)
#    if defined(__CYGWIN__)
#     define APIENTRY __stdcall
#    else
#     ifdef i386
#      define APIENTRY __attribute__((stdcall))
#     else
#      define APIENTRY
#     endif
#    endif
#   else
#    if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
#     define APIENTRY __stdcall
#    else
#     define APIENTRY
#    endif
#   endif
#  endif
   /* XXX This is from Win32's <winnt.h> */
#  ifndef CALLBACK
#   if defined(__MINGW32__) || defined(__CYGWIN32__) || defined(__CYGWIN__)
#    ifndef __stdcall
#     define __stdcall __attribute__((stdcall))
#    endif 
#    define CALLBACK __stdcall
#   else
#    if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
#     define CALLBACK __stdcall
#    else
#     define CALLBACK
#    endif
#   endif
#  endif
   /* XXX This is from Win32's <wingdi.h> and <winnt.h> */
#  ifndef WINGDIAPI
#   define GLUT_WINGDIAPI_DEFINED
#   if defined(__MINGW32__) || defined(__CYGWIN32__) || defined(__CYGWIN__)
#    define WINGDIAPI
#   else
#    define WINGDIAPI __declspec(dllimport)
#   endif
#  endif
#  if defined(__MINGW32__) || defined(__CYGWIN32__) || defined(__CYGWIN__)
    /* Rely on Cygwin32/MingW32 <stddef.h> to set wchar_t. */
    /* XXX Warning.  The Cygwin32/MingW32 definition for wchar_t
       is an "int" instead of the "short" used by Windows. */
#   include <stddef.h>
#  else
    /* XXX This is from Win32's <ctype.h> */
#   ifndef _WCHAR_T_DEFINED
typedef unsigned short wchar_t;
#    define _WCHAR_T_DEFINED
#   endif
#  endif
# endif

/* To disable automatic library usage for GLUT, define GLUT_NO_LIB_PRAGMA
   in your compile preprocessor options (Microsoft Visual C only). */
# if !defined(GLUT_BUILDING_LIB) && !defined(GLUT_NO_LIB_PRAGMA) && defined(_MSC_VER)
#  pragma comment (lib, "winmm.lib")      /* link with Windows MultiMedia lib */
#  pragma comment (lib, "user32.lib")     /* link with Windows User lib */
#  pragma comment (lib, "gdi32.lib")      /* link with Windows GDI lib */
/* To enable automatic SGI OpenGL for Windows library usage for GLUT,
   define GLUT_USE_SGI_OPENGL in your compile preprocessor options.  */
#  ifdef GLUT_USE_SGI_OPENGL
#   pragma comment (lib, "opengl.lib") /* link with SGI OpenGL for Windows lib */
#   pragma comment (lib, "glu.lib")    /* link with SGI OpenGL Utility lib */
#   if defined(GLUT_STATIC_LIB)
#    pragma comment (lib, "glutstatic.lib")   /* link with static Win32 GLUT lib */
#   else
#    pragma comment (lib, "glut.lib")   /* link with Win32 GLUT lib */
#   endif
#  else
#   pragma comment (lib, "opengl32.lib") /* link with Microsoft OpenGL lib */
#   pragma comment (lib, "glu32.lib")    /* link with Microsoft OpenGL Utility lib */
#   if defined(GLUT_STATIC_LIB)
#    pragma comment (lib, "glutstatic.lib")   /* link with static Win32 GLUT lib */
#   else
#    pragma comment (lib, "glut32.lib")   /* link with Win32 GLUT lib */
#   endif
#  endif
# endif

/* To disable supression of annoying warnings about floats being promoted
   to doubles, define GLUT_NO_WARNING_DISABLE in your compile preprocessor
   options. */
# if defined(_MSC_VER) && !defined(GLUT_NO_WARNING_DISABLE)
#  pragma warning (disable:4244)  /* Disable bogus VC++ 4.2 conversion warnings. */
#  pragma warning (disable:4305)  /* VC++ 5.0 version of above warning. */
# endif

/* Win32 has an annoying issue where there are multiple C run-time
   libraries (CRTs).  If the executable is linked with a different CRT
   from the GLUT DLL, the GLUT DLL will not share the same CRT static
   data seen by the executable.  In particular, atexit callbacks registered
   in the executable will not be called if GLUT calls its (different)
   exit routine).  GLUT is typically built with the
   "/MD" option (the CRT with multithreading DLL support), but the Visual
   C++ linker default is "/ML" (the single threaded CRT).

   One workaround to this issue is requiring users to always link with
   the same CRT as GLUT is compiled with.  That requires users supply a
   non-standard option.  GLUT 3.7 has its own built-in workaround where
   the executable's "exit" function pointer is covertly passed to GLUT.
   GLUT then calls the executable's exit function pointer to ensure that
   any "atexit" calls registered by the application are called if GLUT
   needs to exit.

   Note that the __glut*WithExit routines should NEVER be called directly.
   To avoid the atexit workaround, #define GLUT_DISABLE_ATEXIT_HACK. */

/* XXX This is from Win32's <process.h> */
# if !defined(_MSC_VER) && !defined(__cdecl)
   /* Define __cdecl for non-Microsoft compilers. */
#  define __cdecl
#  define GLUT_DEFINED___CDECL
# endif
# ifndef _CRTIMP
#  ifdef _NTSDK
    /* Definition compatible with NT SDK */
#   define _CRTIMP
#  else
    /* Current definition */
#   ifdef _DLL
#    define _CRTIMP __declspec(dllimport)
#   else
#    define _CRTIMP
#   endif
#  endif
#  define GLUT_DEFINED__CRTIMP
# endif

/* GLUT API entry point declarations for Win32. */
# ifdef GLUT_BUILDING_LIB
/* MSDN article 835326 says "When you build a DLL by using the 64-bit
   version of the Microsoft Visual C++ Compiler and Linker, you may
   receive Linker error number LNK4197 if a function has been declared
   for export more than one time."  GLUT builds with glut.def that
   declares GLUT's EXPORTS list so do not use __declspec(dllexport)
   to keep 64-bit compiler happy. */
#  define GLUTAPI /*__declspec(dllexport)*/
# else
#  ifdef _DLL
#   define GLUTAPI __declspec(dllimport)
#  else
#   define GLUTAPI extern
#  endif
# endif

/* GLUT callback calling convention for Win32. */
# define GLUTCALLBACK __cdecl

# if (_MSC_VER >= 800) || defined(__MINGW32__) || defined(_STDCALL_SUPPORTED) || defined(__CYGWIN32__)
#  define GLUTAPIENTRY __stdcall
# else
#  define GLUTAPIENTRY
# endif

#endif  /* _WIN32 */

#include <GL/gl.h>
#include <GL/glu.h>

#ifdef __cplusplus
extern "C" {
#endif

#if defined(_WIN32) || defined(__CYGWIN__)
# ifndef GLUT_BUILDING_LIB
#  if __BORLANDC__
#   if defined(_BUILDRTLDLL)
void __cdecl __export exit(int __status);
#   else
void __cdecl exit(int __status);
#   endif
#  else
#   if _MSC_VER >= 1200
     extern _CRTIMP __declspec(noreturn) void   __cdecl exit(int);
#   else
     extern _CRTIMP void __cdecl exit(int);
#   endif
#  endif
# endif
#else
/* non-Win32 case. */
/* Define APIENTRY and CALLBACK to nothing if we aren't on Win32. */
# define APIENTRY
# define GLUT_APIENTRY_DEFINED
# define CALLBACK
/* Define GLUTAPI and GLUTCALLBACK as below if we aren't on Win32. */
# define GLUTAPI extern
# define GLUTAPIENTRY
# define GLUTCALLBACK
/* Prototype exit for the non-Win32 case (see above). */
# ifdef __GNUC__
extern void exit(int __status) __attribute__((__noreturn__));
# else
extern void exit(int);
# endif
#endif

/**
 GLUT API revision history:
 
 GLUT_API_VERSION is updated to reflect incompatible GLUT
 API changes (interface changes, semantic changes, deletions,
 or additions).
 
 GLUT_API_VERSION=1  First public release of GLUT.  11/29/94

 GLUT_API_VERSION=2  Added support for OpenGL/GLX multisampling,
 extension.  Supports new input devices like tablet, dial and button
 box, and Spaceball.  Easy to query OpenGL extensions.

 GLUT_API_VERSION=3  glutMenuStatus added.

 GLUT_API_VERSION=4  glutInitDisplayString, glutWarpPointer,
 glutBitmapLength, glutStrokeLength, glutWindowStatusFunc, dynamic
 video resize subAPI, glutPostWindowRedisplay, glutKeyboardUpFunc,
 glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat,
 glutJoystickFunc, glutForceJoystickFunc, glutStrokeWidthf,
 glutStrokeLengthf (NOT FINALIZED!).
**/
#ifndef GLUT_API_VERSION  /* allow this to be overriden */
#define GLUT_API_VERSION                3
#endif

/**
 GLUT implementation revision history:
 
 GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT
 API revisions and implementation revisions (ie, bug fixes).

 GLUT_XLIB_IMPLEMENTATION=1  mjk's first public release of
 GLUT Xlib-based implementation.  11/29/94

 GLUT_XLIB_IMPLEMENTATION=2  mjk's second public release of
 GLUT Xlib-based implementation providing GLUT version 2 
 interfaces.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -