Add a new OpenGL pyramid sample

This sample shows the use of modern OpenGL (3.2).

Closes #16910.
This commit is contained in:
Manuel Martin
2016-02-23 00:52:28 +01:00
committed by Vadim Zeitlin
parent bdc95f5766
commit d6fb44e158
27 changed files with 6418 additions and 68 deletions

View File

@@ -0,0 +1,205 @@
# =========================================================================
# This makefile was generated by
# Bakefile 0.2.9 (http://www.bakefile.org)
# Do not modify, all changes will be overwritten!
# =========================================================================
@MAKE_SET@
prefix = @prefix@
exec_prefix = @exec_prefix@
datarootdir = @datarootdir@
INSTALL = @INSTALL@
EXEEXT = @EXEEXT@
WINDRES = @WINDRES@
SETFILE = @SETFILE@
NM = @NM@
BK_DEPS = @BK_DEPS@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
LIBS = @LIBS@
LDFLAGS_GUI = @LDFLAGS_GUI@
CXX = @CXX@
CXXFLAGS = @CXXFLAGS@
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
WX_LIB_FLAVOUR = @WX_LIB_FLAVOUR@
TOOLKIT = @TOOLKIT@
TOOLKIT_LOWERCASE = @TOOLKIT_LOWERCASE@
TOOLKIT_VERSION = @TOOLKIT_VERSION@
TOOLCHAIN_FULLNAME = @TOOLCHAIN_FULLNAME@
EXTRALIBS = @EXTRALIBS@
EXTRALIBS_XML = @EXTRALIBS_XML@
EXTRALIBS_GUI = @EXTRALIBS_GUI@
EXTRALIBS_OPENGL = @EXTRALIBS_OPENGL@
CXXWARNINGS = @CXXWARNINGS@
HOST_SUFFIX = @HOST_SUFFIX@
SAMPLES_RPATH_FLAG = @SAMPLES_RPATH_FLAG@
SAMPLES_CXXFLAGS = @SAMPLES_CXXFLAGS@
wx_top_builddir = @wx_top_builddir@
### Variables: ###
DESTDIR =
WX_RELEASE = 3.1
WX_VERSION = $(WX_RELEASE).0
LIBDIRNAME = $(wx_top_builddir)/lib
PYRAMID_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
-I$(srcdir) $(__DLLFLAG_p) -I$(srcdir)/../../../samples $(CXXWARNINGS) \
$(SAMPLES_CXXFLAGS) $(CPPFLAGS) $(CXXFLAGS)
PYRAMID_OBJECTS = \
$(__pyramid___win32rc) \
pyramid_pyramid.o \
pyramid_oglstuff.o \
pyramid_mathstuff.o \
pyramid_oglpfuncs.o
### Conditionally set variables: ###
@COND_DEPS_TRACKING_0@CXXC = $(CXX)
@COND_DEPS_TRACKING_1@CXXC = $(BK_DEPS) $(CXX)
@COND_USE_GUI_0@PORTNAME = base
@COND_USE_GUI_1@PORTNAME = $(TOOLKIT_LOWERCASE)$(TOOLKIT_VERSION)
@COND_TOOLKIT_MAC@WXBASEPORT = _carbon
@COND_BUILD_debug@WXDEBUGFLAG = d
@COND_UNICODE_1@WXUNICODEFLAG = u
@COND_WXUNIV_1@WXUNIVNAME = univ
@COND_MONOLITHIC_0@EXTRALIBS_FOR_BASE = $(EXTRALIBS)
@COND_MONOLITHIC_1@EXTRALIBS_FOR_BASE = $(EXTRALIBS) \
@COND_MONOLITHIC_1@ $(EXTRALIBS_XML) $(EXTRALIBS_GUI)
@COND_MONOLITHIC_0@EXTRALIBS_FOR_GUI = $(EXTRALIBS_GUI)
@COND_MONOLITHIC_1@EXTRALIBS_FOR_GUI =
@COND_USE_OPENGL_1@__pyramid___depname = pyramid$(EXEEXT)
@COND_PLATFORM_MAC_0@__pyramid___mac_setfilecmd = @true
@COND_PLATFORM_MAC_1@__pyramid___mac_setfilecmd = \
@COND_PLATFORM_MAC_1@ $(SETFILE) -t APPL pyramid$(EXEEXT)
@COND_WXUNIV_1@__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
@COND_WXUNIV_1@__WXUNIV_DEFINE_p_2 = --define __WXUNIVERSAL__
@COND_DEBUG_FLAG_0@__DEBUG_DEFINE_p = -DwxDEBUG_LEVEL=0
@COND_DEBUG_FLAG_0@__DEBUG_DEFINE_p_2 = --define wxDEBUG_LEVEL=0
@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p_2 = --define wxNO_EXCEPTIONS
@COND_USE_RTTI_0@__RTTI_DEFINE_p = -DwxNO_RTTI
@COND_USE_RTTI_0@__RTTI_DEFINE_p_2 = --define wxNO_RTTI
@COND_USE_THREADS_0@__THREAD_DEFINE_p = -DwxNO_THREADS
@COND_USE_THREADS_0@__THREAD_DEFINE_p_2 = --define wxNO_THREADS
@COND_SHARED_1@__DLLFLAG_p = -DWXUSINGDLL
@COND_SHARED_1@__DLLFLAG_p_2 = --define WXUSINGDLL
COND_PLATFORM_OS2_1___pyramid___os2_emxbindcmd = $(NM) pyramid$(EXEEXT) | if \
grep -q pmwin.763 ; then emxbind -ep pyramid$(EXEEXT) ; fi
@COND_PLATFORM_OS2_1@__pyramid___os2_emxbindcmd = $(COND_PLATFORM_OS2_1___pyramid___os2_emxbindcmd)
@COND_TOOLKIT_MSW@__RCDEFDIR_p_1 = --include-dir \
@COND_TOOLKIT_MSW@ $(LIBDIRNAME)/wx/include/$(TOOLCHAIN_FULLNAME)
@COND_PLATFORM_WIN32_1@__pyramid___win32rc = pyramid_sample_rc.o
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@__pyramid_app_Contents_PkgInfo___depname \
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ = pyramid.app/Contents/PkgInfo
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@__pyramid_bundle___depname \
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ = pyramid_bundle
@COND_TOOLKIT_MAC@____pyramid_BUNDLE_TGT_REF_DEP = \
@COND_TOOLKIT_MAC@ $(__pyramid_app_Contents_PkgInfo___depname)
@COND_TOOLKIT_OSX_CARBON@____pyramid_BUNDLE_TGT_REF_DEP \
@COND_TOOLKIT_OSX_CARBON@ = $(__pyramid_app_Contents_PkgInfo___depname)
@COND_TOOLKIT_OSX_COCOA@____pyramid_BUNDLE_TGT_REF_DEP \
@COND_TOOLKIT_OSX_COCOA@ = $(__pyramid_app_Contents_PkgInfo___depname)
@COND_TOOLKIT_OSX_IPHONE@____pyramid_BUNDLE_TGT_REF_DEP \
@COND_TOOLKIT_OSX_IPHONE@ = $(__pyramid_app_Contents_PkgInfo___depname)
@COND_TOOLKIT_COCOA@____pyramid_BUNDLE_TGT_REF_DEP = \
@COND_TOOLKIT_COCOA@ $(__pyramid_app_Contents_PkgInfo___depname)
COND_MONOLITHIC_0___WXLIB_CORE_p = \
-lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core-$(WX_RELEASE)$(HOST_SUFFIX)
@COND_MONOLITHIC_0@__WXLIB_CORE_p = $(COND_MONOLITHIC_0___WXLIB_CORE_p)
COND_MONOLITHIC_0___WXLIB_BASE_p = \
-lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
@COND_MONOLITHIC_0@__WXLIB_BASE_p = $(COND_MONOLITHIC_0___WXLIB_BASE_p)
COND_MONOLITHIC_1___WXLIB_MONO_p = \
-lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
@COND_MONOLITHIC_1@__WXLIB_MONO_p = $(COND_MONOLITHIC_1___WXLIB_MONO_p)
@COND_MONOLITHIC_1_USE_STC_1@__LIB_SCINTILLA_IF_MONO_p \
@COND_MONOLITHIC_1_USE_STC_1@ = \
@COND_MONOLITHIC_1_USE_STC_1@ -lwxscintilla$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
@COND_USE_GUI_1_wxUSE_LIBTIFF_builtin@__LIB_TIFF_p \
@COND_USE_GUI_1_wxUSE_LIBTIFF_builtin@ = \
@COND_USE_GUI_1_wxUSE_LIBTIFF_builtin@ -lwxtiff$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
@COND_USE_GUI_1_wxUSE_LIBJPEG_builtin@__LIB_JPEG_p \
@COND_USE_GUI_1_wxUSE_LIBJPEG_builtin@ = \
@COND_USE_GUI_1_wxUSE_LIBJPEG_builtin@ -lwxjpeg$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
@COND_USE_GUI_1_wxUSE_LIBPNG_builtin@__LIB_PNG_p \
@COND_USE_GUI_1_wxUSE_LIBPNG_builtin@ = \
@COND_USE_GUI_1_wxUSE_LIBPNG_builtin@ -lwxpng$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
@COND_wxUSE_ZLIB_builtin@__LIB_ZLIB_p = \
@COND_wxUSE_ZLIB_builtin@ -lwxzlib$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
COND_wxUSE_REGEX_builtin___LIB_REGEX_p = \
-lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
@COND_wxUSE_REGEX_builtin@__LIB_REGEX_p = $(COND_wxUSE_REGEX_builtin___LIB_REGEX_p)
@COND_wxUSE_EXPAT_builtin@__LIB_EXPAT_p = \
@COND_wxUSE_EXPAT_builtin@ -lwxexpat$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
### Targets: ###
all: $(__pyramid___depname) $(__pyramid_bundle___depname)
install:
uninstall:
install-strip: install
clean:
rm -rf ./.deps ./.pch
rm -f ./*.o
rm -f pyramid$(EXEEXT)
rm -rf pyramid.app
distclean: clean
rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile
@COND_USE_OPENGL_1@pyramid$(EXEEXT): $(PYRAMID_OBJECTS) $(__pyramid___win32rc)
@COND_USE_OPENGL_1@ $(CXX) -o $@ $(PYRAMID_OBJECTS) -L$(LIBDIRNAME) $(LDFLAGS_GUI) $(SAMPLES_RPATH_FLAG) $(LDFLAGS) -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl-$(WX_RELEASE)$(HOST_SUFFIX) $(EXTRALIBS_OPENGL) $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_SCINTILLA_IF_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) $(EXTRALIBS_FOR_GUI) $(__LIB_ZLIB_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE) $(LIBS)
@COND_USE_OPENGL_1@
@COND_USE_OPENGL_1@ $(__pyramid___mac_setfilecmd)
@COND_USE_OPENGL_1@ $(__pyramid___os2_emxbindcmd)
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@pyramid.app/Contents/PkgInfo: $(__pyramid___depname) $(top_srcdir)/src/osx/carbon/Info.plist.in $(top_srcdir)/src/osx/carbon/wxmac.icns
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ mkdir -p pyramid.app/Contents
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ mkdir -p pyramid.app/Contents/MacOS
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ mkdir -p pyramid.app/Contents/Resources
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ sed -e "s/IDENTIFIER/`echo $(srcdir) | sed -e 's,\.\./,,g' | sed -e 's,/,.,g'`/" \
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/EXECUTABLE/pyramid/" \
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ -e "s/VERSION/$(WX_VERSION)/" \
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ $(top_srcdir)/src/osx/carbon/Info.plist.in >pyramid.app/Contents/Info.plist
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ /bin/echo "APPL????" >pyramid.app/Contents/PkgInfo
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ ln -f pyramid$(EXEEXT) pyramid.app/Contents/MacOS/pyramid
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@ cp -f $(top_srcdir)/src/osx/carbon/wxmac.icns pyramid.app/Contents/Resources/wxmac.icns
@COND_PLATFORM_MACOSX_1_USE_OPENGL_1@pyramid_bundle: $(____pyramid_BUNDLE_TGT_REF_DEP)
pyramid_sample_rc.o: $(srcdir)/../../../samples/sample.rc
$(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_2) $(__DEBUG_DEFINE_p_2) $(__EXCEPTIONS_DEFINE_p_2) $(__RTTI_DEFINE_p_2) $(__THREAD_DEFINE_p_2) --include-dir $(srcdir) $(__DLLFLAG_p_2) --include-dir $(srcdir)/../../../samples $(__RCDEFDIR_p_1) --include-dir $(top_srcdir)/include
pyramid_pyramid.o: $(srcdir)/pyramid.cpp
$(CXXC) -c -o $@ $(PYRAMID_CXXFLAGS) $(srcdir)/pyramid.cpp
pyramid_oglstuff.o: $(srcdir)/oglstuff.cpp
$(CXXC) -c -o $@ $(PYRAMID_CXXFLAGS) $(srcdir)/oglstuff.cpp
pyramid_mathstuff.o: $(srcdir)/mathstuff.cpp
$(CXXC) -c -o $@ $(PYRAMID_CXXFLAGS) $(srcdir)/mathstuff.cpp
pyramid_oglpfuncs.o: $(srcdir)/oglpfuncs.cpp
$(CXXC) -c -o $@ $(PYRAMID_CXXFLAGS) $(srcdir)/oglpfuncs.cpp
# Include dependency info, if present:
@IF_GNU_MAKE@-include ./.deps/*.d
.PHONY: all install uninstall clean distclean pyramid_bundle

View File

@@ -0,0 +1,256 @@
# =========================================================================
# This makefile was generated by
# Bakefile 0.2.9 (http://www.bakefile.org)
# Do not modify, all changes will be overwritten!
# =========================================================================
.autodepend
!ifndef BCCDIR
!ifndef MAKEDIR
!error Your Borland compiler does not define MAKEDIR. Please define the BCCDIR variable, e.g. BCCDIR=d:\bc4
!endif
BCCDIR = $(MAKEDIR)\..
!endif
!include ../../../build/msw/config.bcc
# -------------------------------------------------------------------------
# Do not modify the rest of this file!
# -------------------------------------------------------------------------
### Variables: ###
WX_RELEASE_NODOT = 31
COMPILER_PREFIX = bcc
OBJS = \
$(COMPILER_PREFIX)$(COMPILER_VERSION)_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)
LIBDIRNAME = \
.\..\..\..\lib\$(COMPILER_PREFIX)$(COMPILER_VERSION)_$(LIBTYPE_SUFFIX)$(CFG)
SETUPHDIR = \
$(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
PYRAMID_CXXFLAGS = $(__RUNTIME_LIBS_7) -I$(BCCDIR)\include $(__DEBUGINFO) \
$(__OPTIMIZEFLAG_2) $(__THREADSFLAG_6) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
$(__DEBUG_DEFINE_p) $(__NDEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \
$(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) \
-I$(SETUPHDIR) -I.\..\..\..\include $(____CAIRO_INCLUDEDIR_FILENAMES_p) -I. \
$(__DLLFLAG_p) -I.\..\..\..\samples -DNOPCH $(CPPFLAGS) $(CXXFLAGS)
PYRAMID_OBJECTS = \
$(OBJS)\pyramid_pyramid.obj \
$(OBJS)\pyramid_oglstuff.obj \
$(OBJS)\pyramid_mathstuff.obj \
$(OBJS)\pyramid_oglpfuncs.obj
### Conditionally set variables: ###
!if "$(USE_GUI)" == "0"
PORTNAME = base
!endif
!if "$(USE_GUI)" == "1"
PORTNAME = msw$(TOOLKIT_VERSION)
!endif
!if "$(OFFICIAL_BUILD)" == "1"
COMPILER_VERSION = ERROR-COMPILER-VERSION-MUST-BE-SET-FOR-OFFICIAL-BUILD
!endif
!if "$(BUILD)" == "debug"
WXDEBUGFLAG = d
!endif
!if "$(UNICODE)" == "1"
WXUNICODEFLAG = u
!endif
!if "$(WXUNIV)" == "1"
WXUNIVNAME = univ
!endif
!if "$(SHARED)" == "1"
WXDLLFLAG = dll
!endif
!if "$(SHARED)" == "0"
LIBTYPE_SUFFIX = lib
!endif
!if "$(SHARED)" == "1"
LIBTYPE_SUFFIX = dll
!endif
!if "$(MONOLITHIC)" == "0"
EXTRALIBS_FOR_BASE =
!endif
!if "$(MONOLITHIC)" == "1"
EXTRALIBS_FOR_BASE =
!endif
!if "$(USE_OPENGL)" == "1"
__pyramid___depname = $(OBJS)\pyramid.exe
!endif
!if "$(BUILD)" == "debug"
__OPTIMIZEFLAG_2 = -Od
!endif
!if "$(BUILD)" == "release"
__OPTIMIZEFLAG_2 = -O2
!endif
!if "$(USE_THREADS)" == "0"
__THREADSFLAG_5 =
!endif
!if "$(USE_THREADS)" == "1"
__THREADSFLAG_5 = mt
!endif
!if "$(USE_THREADS)" == "0"
__THREADSFLAG_6 =
!endif
!if "$(USE_THREADS)" == "1"
__THREADSFLAG_6 = -tWM
!endif
!if "$(RUNTIME_LIBS)" == "dynamic"
__RUNTIME_LIBS_7 = -tWR
!endif
!if "$(RUNTIME_LIBS)" == "static"
__RUNTIME_LIBS_7 =
!endif
!if "$(RUNTIME_LIBS)" == "dynamic"
__RUNTIME_LIBS_8 = i
!endif
!if "$(RUNTIME_LIBS)" == "static"
__RUNTIME_LIBS_8 =
!endif
!if "$(WXUNIV)" == "1"
__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
!endif
!if "$(WXUNIV)" == "1"
__WXUNIV_DEFINE_p_1 = -d__WXUNIVERSAL__
!endif
!if "$(DEBUG_FLAG)" == "0"
__DEBUG_DEFINE_p = -DwxDEBUG_LEVEL=0
!endif
!if "$(DEBUG_FLAG)" == "0"
__DEBUG_DEFINE_p_1 = -dwxDEBUG_LEVEL=0
!endif
!if "$(BUILD)" == "release"
__NDEBUG_DEFINE_p = -DNDEBUG
!endif
!if "$(BUILD)" == "release"
__NDEBUG_DEFINE_p_1 = -dNDEBUG
!endif
!if "$(USE_EXCEPTIONS)" == "0"
__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
!endif
!if "$(USE_EXCEPTIONS)" == "0"
__EXCEPTIONS_DEFINE_p_1 = -dwxNO_EXCEPTIONS
!endif
!if "$(USE_RTTI)" == "0"
__RTTI_DEFINE_p = -DwxNO_RTTI
!endif
!if "$(USE_RTTI)" == "0"
__RTTI_DEFINE_p_1 = -dwxNO_RTTI
!endif
!if "$(USE_THREADS)" == "0"
__THREAD_DEFINE_p = -DwxNO_THREADS
!endif
!if "$(USE_THREADS)" == "0"
__THREAD_DEFINE_p_1 = -dwxNO_THREADS
!endif
!if "$(UNICODE)" == "0"
__UNICODE_DEFINE_p = -DwxUSE_UNICODE=0
!endif
!if "$(UNICODE)" == "1"
__UNICODE_DEFINE_p = -D_UNICODE
!endif
!if "$(UNICODE)" == "0"
__UNICODE_DEFINE_p_1 = -dwxUSE_UNICODE=0
!endif
!if "$(UNICODE)" == "1"
__UNICODE_DEFINE_p_1 = -d_UNICODE
!endif
!if "$(USE_CAIRO)" == "1"
____CAIRO_INCLUDEDIR_FILENAMES_p = -I$(CAIRO_ROOT)\include\cairo
!endif
!if "$(USE_CAIRO)" == "1"
____CAIRO_INCLUDEDIR_FILENAMES_1_p = -i$(CAIRO_ROOT)\include\cairo
!endif
!if "$(SHARED)" == "1"
__DLLFLAG_p = -DWXUSINGDLL
!endif
!if "$(SHARED)" == "1"
__DLLFLAG_p_1 = -dWXUSINGDLL
!endif
!if "$(MONOLITHIC)" == "0"
__WXLIB_CORE_p = \
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib
!endif
!if "$(MONOLITHIC)" == "0"
__WXLIB_BASE_p = \
wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
!endif
!if "$(MONOLITHIC)" == "1"
__WXLIB_MONO_p = \
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
!endif
!if "$(MONOLITHIC)" == "1" && "$(USE_STC)" == "1"
__LIB_SCINTILLA_IF_MONO_p = wxscintilla$(WXDEBUGFLAG).lib
!endif
!if "$(USE_GUI)" == "1"
__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib
!endif
!if "$(USE_GUI)" == "1"
__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib
!endif
!if "$(USE_GUI)" == "1"
__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib
!endif
!if "$(USE_CAIRO)" == "1"
__CAIRO_LIB_p = cairo.lib
!endif
!if "$(USE_CAIRO)" == "1"
____CAIRO_LIBDIR_FILENAMES_p = -L$(CAIRO_ROOT)\lib
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO = -v
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO = -v-
!endif
!if "$(DEBUG_INFO)" == "0"
__DEBUGINFO = -v-
!endif
!if "$(DEBUG_INFO)" == "1"
__DEBUGINFO = -v
!endif
all: $(OBJS)
$(OBJS):
-if not exist $(OBJS) mkdir $(OBJS)
### Targets: ###
all: $(__pyramid___depname)
clean:
-if exist $(OBJS)\*.obj del $(OBJS)\*.obj
-if exist $(OBJS)\*.res del $(OBJS)\*.res
-if exist $(OBJS)\*.csm del $(OBJS)\*.csm
-if exist $(OBJS)\pyramid.exe del $(OBJS)\pyramid.exe
-if exist $(OBJS)\pyramid.tds del $(OBJS)\pyramid.tds
-if exist $(OBJS)\pyramid.ilc del $(OBJS)\pyramid.ilc
-if exist $(OBJS)\pyramid.ild del $(OBJS)\pyramid.ild
-if exist $(OBJS)\pyramid.ilf del $(OBJS)\pyramid.ilf
-if exist $(OBJS)\pyramid.ils del $(OBJS)\pyramid.ils
!if "$(USE_OPENGL)" == "1"
$(OBJS)\pyramid.exe: $(PYRAMID_OBJECTS) $(OBJS)\pyramid_sample.res
ilink32 -Tpe -q -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) -aa $(____CAIRO_LIBDIR_FILENAMES_p) $(LDFLAGS) @&&|
c0w32.obj $(PYRAMID_OBJECTS),$@,, wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl.lib $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_SCINTILLA_IF_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) ole2w32.lib oleacc.lib import32.lib cw32$(__THREADSFLAG_5)$(__RUNTIME_LIBS_8).lib,, $(OBJS)\pyramid_sample.res
|
!endif
$(OBJS)\pyramid_sample.res: .\..\..\..\samples\sample.rc
brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_1) $(__DEBUG_DEFINE_p_1) $(__NDEBUG_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) $(__UNICODE_DEFINE_p_1) -i$(SETUPHDIR) -i.\..\..\..\include $(____CAIRO_INCLUDEDIR_FILENAMES_1_p) -i. $(__DLLFLAG_p_1) -i.\..\..\..\samples -i$(BCCDIR)\include\windows\sdk -dNOPCH .\..\..\..\samples\sample.rc
$(OBJS)\pyramid_pyramid.obj: .\pyramid.cpp
$(CXX) -q -c -P -o$@ $(PYRAMID_CXXFLAGS) .\pyramid.cpp
$(OBJS)\pyramid_oglstuff.obj: .\oglstuff.cpp
$(CXX) -q -c -P -o$@ $(PYRAMID_CXXFLAGS) .\oglstuff.cpp
$(OBJS)\pyramid_mathstuff.obj: .\mathstuff.cpp
$(CXX) -q -c -P -o$@ $(PYRAMID_CXXFLAGS) .\mathstuff.cpp
$(OBJS)\pyramid_oglpfuncs.obj: .\oglpfuncs.cpp
$(CXX) -q -c -P -o$@ $(PYRAMID_CXXFLAGS) .\oglpfuncs.cpp

View File

@@ -0,0 +1,252 @@
# =========================================================================
# This makefile was generated by
# Bakefile 0.2.9 (http://www.bakefile.org)
# Do not modify, all changes will be overwritten!
# =========================================================================
include ../../../build/msw/config.gcc
# -------------------------------------------------------------------------
# Do not modify the rest of this file!
# -------------------------------------------------------------------------
### Variables: ###
CPPDEPS = -MT$@ -MF$@.d -MD -MP
WX_RELEASE_NODOT = 31
COMPILER_PREFIX = gcc
OBJS = \
$(COMPILER_PREFIX)$(COMPILER_VERSION)_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)
LIBDIRNAME = \
.\..\..\..\lib\$(COMPILER_PREFIX)$(COMPILER_VERSION)_$(LIBTYPE_SUFFIX)$(CFG)
SETUPHDIR = \
$(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
PYRAMID_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG_2) $(__THREADSFLAG) \
$(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
$(__DEBUG_DEFINE_p) $(__NDEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \
$(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) \
-I$(SETUPHDIR) -I.\..\..\..\include $(____CAIRO_INCLUDEDIR_FILENAMES_p) -W \
-Wall -I. $(__DLLFLAG_p) -I.\..\..\..\samples -DNOPCH $(__RTTIFLAG_5) \
$(__EXCEPTIONSFLAG_6) -Wno-ctor-dtor-privacy $(CPPFLAGS) $(CXXFLAGS)
PYRAMID_OBJECTS = \
$(OBJS)\pyramid_sample_rc.o \
$(OBJS)\pyramid_pyramid.o \
$(OBJS)\pyramid_oglstuff.o \
$(OBJS)\pyramid_mathstuff.o \
$(OBJS)\pyramid_oglpfuncs.o
### Conditionally set variables: ###
ifeq ($(GCC_VERSION),2.95)
GCCFLAGS = -fvtable-thunks
endif
ifeq ($(USE_GUI),0)
PORTNAME = base
endif
ifeq ($(USE_GUI),1)
PORTNAME = msw$(TOOLKIT_VERSION)
endif
ifeq ($(OFFICIAL_BUILD),1)
COMPILER_VERSION = ERROR-COMPILER-VERSION-MUST-BE-SET-FOR-OFFICIAL-BUILD
endif
ifeq ($(BUILD),debug)
WXDEBUGFLAG = d
endif
ifeq ($(UNICODE),1)
WXUNICODEFLAG = u
endif
ifeq ($(WXUNIV),1)
WXUNIVNAME = univ
endif
ifeq ($(SHARED),1)
WXDLLFLAG = dll
endif
ifeq ($(SHARED),0)
LIBTYPE_SUFFIX = lib
endif
ifeq ($(SHARED),1)
LIBTYPE_SUFFIX = dll
endif
ifeq ($(MONOLITHIC),0)
EXTRALIBS_FOR_BASE =
endif
ifeq ($(MONOLITHIC),1)
EXTRALIBS_FOR_BASE =
endif
ifeq ($(USE_OPENGL),1)
__pyramid___depname = $(OBJS)\pyramid.exe
endif
ifeq ($(BUILD),debug)
__OPTIMIZEFLAG_2 = -O0
endif
ifeq ($(BUILD),release)
__OPTIMIZEFLAG_2 = -O2
endif
ifeq ($(USE_RTTI),0)
__RTTIFLAG_5 = -fno-rtti
endif
ifeq ($(USE_RTTI),1)
__RTTIFLAG_5 =
endif
ifeq ($(USE_EXCEPTIONS),0)
__EXCEPTIONSFLAG_6 = -fno-exceptions
endif
ifeq ($(USE_EXCEPTIONS),1)
__EXCEPTIONSFLAG_6 =
endif
ifeq ($(WXUNIV),1)
__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
endif
ifeq ($(WXUNIV),1)
__WXUNIV_DEFINE_p_1 = --define __WXUNIVERSAL__
endif
ifeq ($(DEBUG_FLAG),0)
__DEBUG_DEFINE_p = -DwxDEBUG_LEVEL=0
endif
ifeq ($(DEBUG_FLAG),0)
__DEBUG_DEFINE_p_1 = --define wxDEBUG_LEVEL=0
endif
ifeq ($(BUILD),release)
__NDEBUG_DEFINE_p = -DNDEBUG
endif
ifeq ($(BUILD),release)
__NDEBUG_DEFINE_p_1 = --define NDEBUG
endif
ifeq ($(USE_EXCEPTIONS),0)
__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
endif
ifeq ($(USE_EXCEPTIONS),0)
__EXCEPTIONS_DEFINE_p_1 = --define wxNO_EXCEPTIONS
endif
ifeq ($(USE_RTTI),0)
__RTTI_DEFINE_p = -DwxNO_RTTI
endif
ifeq ($(USE_RTTI),0)
__RTTI_DEFINE_p_1 = --define wxNO_RTTI
endif
ifeq ($(USE_THREADS),0)
__THREAD_DEFINE_p = -DwxNO_THREADS
endif
ifeq ($(USE_THREADS),0)
__THREAD_DEFINE_p_1 = --define wxNO_THREADS
endif
ifeq ($(UNICODE),0)
__UNICODE_DEFINE_p = -DwxUSE_UNICODE=0
endif
ifeq ($(UNICODE),1)
__UNICODE_DEFINE_p = -D_UNICODE
endif
ifeq ($(UNICODE),0)
__UNICODE_DEFINE_p_1 = --define wxUSE_UNICODE=0
endif
ifeq ($(UNICODE),1)
__UNICODE_DEFINE_p_1 = --define _UNICODE
endif
ifeq ($(USE_CAIRO),1)
____CAIRO_INCLUDEDIR_FILENAMES_p = -I$(CAIRO_ROOT)\include\cairo
endif
ifeq ($(USE_CAIRO),1)
__CAIRO_INCLUDEDIR_p = --include-dir $(CAIRO_ROOT)/include/cairo
endif
ifeq ($(SHARED),1)
__DLLFLAG_p = -DWXUSINGDLL
endif
ifeq ($(SHARED),1)
__DLLFLAG_p_1 = --define WXUSINGDLL
endif
ifeq ($(MONOLITHIC),0)
__WXLIB_CORE_p = \
-lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core
endif
ifeq ($(MONOLITHIC),0)
__WXLIB_BASE_p = \
-lwxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)
endif
ifeq ($(MONOLITHIC),1)
__WXLIB_MONO_p = \
-lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)
endif
ifeq ($(MONOLITHIC),1)
ifeq ($(USE_STC),1)
__LIB_SCINTILLA_IF_MONO_p = -lwxscintilla$(WXDEBUGFLAG)
endif
endif
ifeq ($(USE_GUI),1)
__LIB_TIFF_p = -lwxtiff$(WXDEBUGFLAG)
endif
ifeq ($(USE_GUI),1)
__LIB_JPEG_p = -lwxjpeg$(WXDEBUGFLAG)
endif
ifeq ($(USE_GUI),1)
__LIB_PNG_p = -lwxpng$(WXDEBUGFLAG)
endif
ifeq ($(USE_CAIRO),1)
__CAIRO_LIB_p = -lcairo
endif
ifeq ($(USE_CAIRO),1)
____CAIRO_LIBDIR_FILENAMES_p = -L$(CAIRO_ROOT)\lib
endif
ifeq ($(BUILD),debug)
ifeq ($(DEBUG_INFO),default)
__DEBUGINFO = -g
endif
endif
ifeq ($(BUILD),release)
ifeq ($(DEBUG_INFO),default)
__DEBUGINFO =
endif
endif
ifeq ($(DEBUG_INFO),0)
__DEBUGINFO =
endif
ifeq ($(DEBUG_INFO),1)
__DEBUGINFO = -g
endif
ifeq ($(USE_THREADS),0)
__THREADSFLAG =
endif
ifeq ($(USE_THREADS),1)
__THREADSFLAG = -mthreads
endif
all: $(OBJS)
$(OBJS):
-if not exist $(OBJS) mkdir $(OBJS)
### Targets: ###
all: $(__pyramid___depname)
clean:
-if exist $(OBJS)\*.o del $(OBJS)\*.o
-if exist $(OBJS)\*.d del $(OBJS)\*.d
-if exist $(OBJS)\pyramid.exe del $(OBJS)\pyramid.exe
ifeq ($(USE_OPENGL),1)
$(OBJS)\pyramid.exe: $(PYRAMID_OBJECTS) $(OBJS)\pyramid_sample_rc.o
$(CXX) -o $@ $(PYRAMID_OBJECTS) $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) -Wl,--subsystem,windows -mwindows $(____CAIRO_LIBDIR_FILENAMES_p) $(LDFLAGS) -lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl -lopengl32 -lglu32 $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_SCINTILLA_IF_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lshlwapi -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lversion -lwsock32 -lwininet
endif
$(OBJS)\pyramid_sample_rc.o: ./../../../samples/sample.rc
$(WINDRES) -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_1) $(__DEBUG_DEFINE_p_1) $(__NDEBUG_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) $(__UNICODE_DEFINE_p_1) --include-dir $(SETUPHDIR) --include-dir ./../../../include $(__CAIRO_INCLUDEDIR_p) --include-dir . $(__DLLFLAG_p_1) --include-dir ./../../../samples --define NOPCH
$(OBJS)\pyramid_pyramid.o: ./pyramid.cpp
$(CXX) -c -o $@ $(PYRAMID_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\pyramid_oglstuff.o: ./oglstuff.cpp
$(CXX) -c -o $@ $(PYRAMID_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\pyramid_mathstuff.o: ./mathstuff.cpp
$(CXX) -c -o $@ $(PYRAMID_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\pyramid_oglpfuncs.o: ./oglpfuncs.cpp
$(CXX) -c -o $@ $(PYRAMID_CXXFLAGS) $(CPPDEPS) $<
.PHONY: all clean
SHELL := $(COMSPEC)
# Dependencies tracking:
-include $(OBJS)/*.d

View File

@@ -0,0 +1,112 @@
# =========================================================================
# This makefile was generated by
# Bakefile 0.2.9 (http://www.bakefile.org)
# Do not modify, all changes will be overwritten!
# =========================================================================
# -------------------------------------------------------------------------
# These are configurable options:
# -------------------------------------------------------------------------
# C++ compiler
CXX = `$(WX_CONFIG) --cxx`
# Standard flags for C++
CXXFLAGS ?=
# Standard preprocessor flags (common for CC and CXX)
CPPFLAGS ?=
# Standard linker flags
LDFLAGS ?=
# Location and arguments of wx-config script
WX_CONFIG ?= wx-config
# Port of the wx library to build against [gtk1,gtk2,msw,x11,motif,osx_cocoa,osx_carbon,dfb]
WX_PORT ?= $(shell $(WX_CONFIG) --query-toolkit)
# Use DLL build of wx library to use? [0,1]
WX_SHARED ?= $(shell if test -z `$(WX_CONFIG) --query-linkage`; then echo 1; else echo 0; fi)
# Compile Unicode build of wxWidgets? [0,1]
WX_UNICODE ?= $(shell $(WX_CONFIG) --query-chartype | sed 's/unicode/1/;s/ansi/0/')
# Version of the wx library to build against.
WX_VERSION ?= $(shell $(WX_CONFIG) --query-version | sed -e 's/\([0-9]*\)\.\([0-9]*\)/\1\2/')
# -------------------------------------------------------------------------
# Do not modify the rest of this file!
# -------------------------------------------------------------------------
### Variables: ###
CPPDEPS = -MT$@ -MF`echo $@ | sed -e 's,\.o$$,.d,'` -MD -MP
WX_VERSION_MAJOR = $(shell echo $(WX_VERSION) | cut -c1,1)
WX_VERSION_MINOR = $(shell echo $(WX_VERSION) | cut -c2,2)
WX_CONFIG_FLAGS = $(WX_CONFIG_UNICODE_FLAG) $(WX_CONFIG_SHARED_FLAG) \
--toolkit=$(WX_PORT) --version=$(WX_VERSION_MAJOR).$(WX_VERSION_MINOR)
PYRAMID_CXXFLAGS = -I. `$(WX_CONFIG) --cxxflags $(WX_CONFIG_FLAGS)` $(CPPFLAGS) \
$(CXXFLAGS)
PYRAMID_OBJECTS = \
pyramid_pyramid.o \
pyramid_oglstuff.o \
pyramid_mathstuff.o \
pyramid_oglpfuncs.o
### Conditionally set variables: ###
ifeq ($(WX_UNICODE),0)
WX_CONFIG_UNICODE_FLAG = --unicode=no
endif
ifeq ($(WX_UNICODE),1)
WX_CONFIG_UNICODE_FLAG = --unicode=yes
endif
ifeq ($(WX_SHARED),0)
WX_CONFIG_SHARED_FLAG = --static=yes
endif
ifeq ($(WX_SHARED),1)
WX_CONFIG_SHARED_FLAG = --static=no
endif
### Targets: ###
all: test_for_selected_wxbuild pyramid
install:
uninstall:
clean:
rm -f ./*.o
rm -f ./*.d
rm -f pyramid
test_for_selected_wxbuild:
@$(WX_CONFIG) $(WX_CONFIG_FLAGS)
pyramid: $(PYRAMID_OBJECTS)
$(CXX) -o $@ $(PYRAMID_OBJECTS) $(LDFLAGS) `$(WX_CONFIG) $(WX_CONFIG_FLAGS) --libs gl,core,base`
pyramid_pyramid.o: ./pyramid.cpp
$(CXX) -c -o $@ $(PYRAMID_CXXFLAGS) $(CPPDEPS) $<
pyramid_oglstuff.o: ./oglstuff.cpp
$(CXX) -c -o $@ $(PYRAMID_CXXFLAGS) $(CPPDEPS) $<
pyramid_mathstuff.o: ./mathstuff.cpp
$(CXX) -c -o $@ $(PYRAMID_CXXFLAGS) $(CPPDEPS) $<
pyramid_oglpfuncs.o: ./oglpfuncs.cpp
$(CXX) -c -o $@ $(PYRAMID_CXXFLAGS) $(CPPDEPS) $<
.PHONY: all install uninstall clean
# Dependencies tracking:
-include ./*.d

View File

@@ -0,0 +1,379 @@
# =========================================================================
# This makefile was generated by
# Bakefile 0.2.9 (http://www.bakefile.org)
# Do not modify, all changes will be overwritten!
# =========================================================================
!include <../../../build/msw/config.vc>
# -------------------------------------------------------------------------
# Do not modify the rest of this file!
# -------------------------------------------------------------------------
### Variables: ###
WX_RELEASE_NODOT = 31
COMPILER_PREFIX = vc
OBJS = \
$(COMPILER_PREFIX)$(COMPILER_VERSION)_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)$(ARCH_SUFFIX)
LIBDIRNAME = \
.\..\..\..\lib\$(COMPILER_PREFIX)$(COMPILER_VERSION)$(ARCH_SUFFIX)_$(LIBTYPE_SUFFIX)$(CFG)
SETUPHDIR = \
$(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
PYRAMID_CXXFLAGS = /M$(__RUNTIME_LIBS_10)$(__DEBUGRUNTIME_4) /DWIN32 \
$(__DEBUGINFO_0) /Fd$(OBJS)\pyramid.pdb $(____DEBUGRUNTIME_3_p) \
$(__OPTIMIZEFLAG_6) /D_CRT_SECURE_NO_DEPRECATE=1 \
/D_CRT_NON_CONFORMING_SWPRINTFS=1 /D_SCL_SECURE_NO_WARNINGS=1 \
$(__NO_VC_CRTDBG_p) /D__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \
$(__NDEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) /I$(SETUPHDIR) \
/I.\..\..\..\include $(____CAIRO_INCLUDEDIR_FILENAMES_p) /W4 /I. \
$(__DLLFLAG_p) /D_WINDOWS /I.\..\..\..\samples /DNOPCH $(__RTTIFLAG_11) \
$(__EXCEPTIONSFLAG_12) $(CPPFLAGS) $(CXXFLAGS)
PYRAMID_OBJECTS = \
$(OBJS)\pyramid_pyramid.obj \
$(OBJS)\pyramid_oglstuff.obj \
$(OBJS)\pyramid_mathstuff.obj \
$(OBJS)\pyramid_oglpfuncs.obj
PYRAMID_RESOURCES = \
$(OBJS)\pyramid_sample.res
### Conditionally set variables: ###
!if "$(TARGET_CPU)" == "AMD64"
ARCH_SUFFIX = _x64
!endif
!if "$(TARGET_CPU)" == "IA64"
ARCH_SUFFIX = _ia64
!endif
!if "$(TARGET_CPU)" == "X64"
ARCH_SUFFIX = _x64
!endif
!if "$(TARGET_CPU)" == "amd64"
ARCH_SUFFIX = _x64
!endif
!if "$(TARGET_CPU)" == "ia64"
ARCH_SUFFIX = _ia64
!endif
!if "$(TARGET_CPU)" == "x64"
ARCH_SUFFIX = _x64
!endif
!if "$(USE_GUI)" == "0"
PORTNAME = base
!endif
!if "$(USE_GUI)" == "1"
PORTNAME = msw$(TOOLKIT_VERSION)
!endif
!if "$(OFFICIAL_BUILD)" == "1"
COMPILER_VERSION = ERROR-COMPILER-VERSION-MUST-BE-SET-FOR-OFFICIAL-BUILD
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default"
WXDEBUGFLAG = d
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "1"
WXDEBUGFLAG = d
!endif
!if "$(UNICODE)" == "1"
WXUNICODEFLAG = u
!endif
!if "$(WXUNIV)" == "1"
WXUNIVNAME = univ
!endif
!if "$(SHARED)" == "1"
WXDLLFLAG = dll
!endif
!if "$(SHARED)" == "0"
LIBTYPE_SUFFIX = lib
!endif
!if "$(SHARED)" == "1"
LIBTYPE_SUFFIX = dll
!endif
!if "$(TARGET_CPU)" == "AMD64"
LINK_TARGET_CPU = /MACHINE:X64
!endif
!if "$(TARGET_CPU)" == "IA64"
LINK_TARGET_CPU = /MACHINE:IA64
!endif
!if "$(TARGET_CPU)" == "X64"
LINK_TARGET_CPU = /MACHINE:X64
!endif
!if "$(TARGET_CPU)" == "amd64"
LINK_TARGET_CPU = /MACHINE:X64
!endif
!if "$(TARGET_CPU)" == "ia64"
LINK_TARGET_CPU = /MACHINE:IA64
!endif
!if "$(TARGET_CPU)" == "x64"
LINK_TARGET_CPU = /MACHINE:X64
!endif
!if "$(MONOLITHIC)" == "0"
EXTRALIBS_FOR_BASE =
!endif
!if "$(MONOLITHIC)" == "1"
EXTRALIBS_FOR_BASE =
!endif
!if "$(USE_OPENGL)" == "1"
__pyramid___depname = $(OBJS)\pyramid.exe
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_0 = /Zi
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_0 =
!endif
!if "$(DEBUG_INFO)" == "0"
__DEBUGINFO_0 =
!endif
!if "$(DEBUG_INFO)" == "1"
__DEBUGINFO_0 = /Zi
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_1 = /DEBUG
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_1 =
!endif
!if "$(DEBUG_INFO)" == "0"
__DEBUGINFO_1 =
!endif
!if "$(DEBUG_INFO)" == "1"
__DEBUGINFO_1 = /DEBUG
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_2 = $(__DEBUGRUNTIME_5)
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_2 =
!endif
!if "$(DEBUG_INFO)" == "0"
__DEBUGINFO_2 =
!endif
!if "$(DEBUG_INFO)" == "1"
__DEBUGINFO_2 = $(__DEBUGRUNTIME_5)
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default"
____DEBUGRUNTIME_3_p = /D_DEBUG
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default"
____DEBUGRUNTIME_3_p =
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "0"
____DEBUGRUNTIME_3_p =
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "1"
____DEBUGRUNTIME_3_p = /D_DEBUG
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default"
____DEBUGRUNTIME_3_p_1 = /d _DEBUG
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default"
____DEBUGRUNTIME_3_p_1 =
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "0"
____DEBUGRUNTIME_3_p_1 =
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "1"
____DEBUGRUNTIME_3_p_1 = /d _DEBUG
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default"
__DEBUGRUNTIME_4 = d
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default"
__DEBUGRUNTIME_4 =
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "0"
__DEBUGRUNTIME_4 =
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "1"
__DEBUGRUNTIME_4 = d
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default"
__DEBUGRUNTIME_5 =
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default"
__DEBUGRUNTIME_5 = /opt:ref /opt:icf
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "0"
__DEBUGRUNTIME_5 = /opt:ref /opt:icf
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "1"
__DEBUGRUNTIME_5 =
!endif
!if "$(BUILD)" == "debug"
__OPTIMIZEFLAG_6 = /Od
!endif
!if "$(BUILD)" == "release"
__OPTIMIZEFLAG_6 = /O2
!endif
!if "$(USE_THREADS)" == "0"
__THREADSFLAG_9 = L
!endif
!if "$(USE_THREADS)" == "1"
__THREADSFLAG_9 = T
!endif
!if "$(RUNTIME_LIBS)" == "dynamic"
__RUNTIME_LIBS_10 = D
!endif
!if "$(RUNTIME_LIBS)" == "static"
__RUNTIME_LIBS_10 = $(__THREADSFLAG_9)
!endif
!if "$(USE_RTTI)" == "0"
__RTTIFLAG_11 =
!endif
!if "$(USE_RTTI)" == "1"
__RTTIFLAG_11 = /GR
!endif
!if "$(USE_EXCEPTIONS)" == "0"
__EXCEPTIONSFLAG_12 =
!endif
!if "$(USE_EXCEPTIONS)" == "1"
__EXCEPTIONSFLAG_12 = /EHsc
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "0"
__NO_VC_CRTDBG_p = /D__NO_VC_CRTDBG__
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_FLAG)" == "1"
__NO_VC_CRTDBG_p = /D__NO_VC_CRTDBG__
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "0"
__NO_VC_CRTDBG_p_1 = /d __NO_VC_CRTDBG__
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_FLAG)" == "1"
__NO_VC_CRTDBG_p_1 = /d __NO_VC_CRTDBG__
!endif
!if "$(WXUNIV)" == "1"
__WXUNIV_DEFINE_p = /D__WXUNIVERSAL__
!endif
!if "$(WXUNIV)" == "1"
__WXUNIV_DEFINE_p_1 = /d __WXUNIVERSAL__
!endif
!if "$(DEBUG_FLAG)" == "0"
__DEBUG_DEFINE_p = /DwxDEBUG_LEVEL=0
!endif
!if "$(DEBUG_FLAG)" == "0"
__DEBUG_DEFINE_p_1 = /d wxDEBUG_LEVEL=0
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default"
__NDEBUG_DEFINE_p = /DNDEBUG
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "0"
__NDEBUG_DEFINE_p = /DNDEBUG
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default"
__NDEBUG_DEFINE_p_1 = /d NDEBUG
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "0"
__NDEBUG_DEFINE_p_1 = /d NDEBUG
!endif
!if "$(USE_EXCEPTIONS)" == "0"
__EXCEPTIONS_DEFINE_p = /DwxNO_EXCEPTIONS
!endif
!if "$(USE_EXCEPTIONS)" == "0"
__EXCEPTIONS_DEFINE_p_1 = /d wxNO_EXCEPTIONS
!endif
!if "$(USE_RTTI)" == "0"
__RTTI_DEFINE_p = /DwxNO_RTTI
!endif
!if "$(USE_RTTI)" == "0"
__RTTI_DEFINE_p_1 = /d wxNO_RTTI
!endif
!if "$(USE_THREADS)" == "0"
__THREAD_DEFINE_p = /DwxNO_THREADS
!endif
!if "$(USE_THREADS)" == "0"
__THREAD_DEFINE_p_1 = /d wxNO_THREADS
!endif
!if "$(UNICODE)" == "0"
__UNICODE_DEFINE_p = /DwxUSE_UNICODE=0
!endif
!if "$(UNICODE)" == "1"
__UNICODE_DEFINE_p = /D_UNICODE
!endif
!if "$(UNICODE)" == "0"
__UNICODE_DEFINE_p_1 = /d wxUSE_UNICODE=0
!endif
!if "$(UNICODE)" == "1"
__UNICODE_DEFINE_p_1 = /d _UNICODE
!endif
!if "$(USE_CAIRO)" == "1"
____CAIRO_INCLUDEDIR_FILENAMES_p = /I$(CAIRO_ROOT)\include\cairo
!endif
!if "$(USE_CAIRO)" == "1"
____CAIRO_INCLUDEDIR_FILENAMES_1_p = /i $(CAIRO_ROOT)\include\cairo
!endif
!if "$(SHARED)" == "1"
__DLLFLAG_p = /DWXUSINGDLL
!endif
!if "$(SHARED)" == "1"
__DLLFLAG_p_1 = /d WXUSINGDLL
!endif
!if "$(MONOLITHIC)" == "0"
__WXLIB_CORE_p = \
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib
!endif
!if "$(MONOLITHIC)" == "0"
__WXLIB_BASE_p = \
wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
!endif
!if "$(MONOLITHIC)" == "1"
__WXLIB_MONO_p = \
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
!endif
!if "$(MONOLITHIC)" == "1" && "$(USE_STC)" == "1"
__LIB_SCINTILLA_IF_MONO_p = wxscintilla$(WXDEBUGFLAG).lib
!endif
!if "$(USE_GUI)" == "1"
__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib
!endif
!if "$(USE_GUI)" == "1"
__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib
!endif
!if "$(USE_GUI)" == "1"
__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib
!endif
!if "$(USE_CAIRO)" == "1"
__CAIRO_LIB_p = cairo.lib
!endif
!if "$(USE_CAIRO)" == "1"
____CAIRO_LIBDIR_FILENAMES_p = /LIBPATH:$(CAIRO_ROOT)\lib
!endif
all: $(OBJS)
$(OBJS):
-if not exist $(OBJS) mkdir $(OBJS)
### Targets: ###
all: $(__pyramid___depname)
clean:
-if exist $(OBJS)\*.obj del $(OBJS)\*.obj
-if exist $(OBJS)\*.res del $(OBJS)\*.res
-if exist $(OBJS)\*.pch del $(OBJS)\*.pch
-if exist $(OBJS)\pyramid.exe del $(OBJS)\pyramid.exe
-if exist $(OBJS)\pyramid.ilk del $(OBJS)\pyramid.ilk
-if exist $(OBJS)\pyramid.pdb del $(OBJS)\pyramid.pdb
!if "$(USE_OPENGL)" == "1"
$(OBJS)\pyramid.exe: $(PYRAMID_OBJECTS) $(OBJS)\pyramid_sample.res
link /NOLOGO /OUT:$@ $(__DEBUGINFO_1) /pdb:"$(OBJS)\pyramid.pdb" $(__DEBUGINFO_2) $(LINK_TARGET_CPU) /LIBPATH:$(LIBDIRNAME) /SUBSYSTEM:WINDOWS $(____CAIRO_LIBDIR_FILENAMES_p) $(LDFLAGS) @<<
$(PYRAMID_OBJECTS) $(PYRAMID_RESOURCES) wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_gl.lib opengl32.lib glu32.lib $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_SCINTILLA_IF_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib
<<
!endif
$(OBJS)\pyramid_sample.res: .\..\..\..\samples\sample.rc
rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_3_p_1) /d _CRT_SECURE_NO_DEPRECATE=1 /d _CRT_NON_CONFORMING_SWPRINTFS=1 /d _SCL_SECURE_NO_WARNINGS=1 $(__NO_VC_CRTDBG_p_1) /d __WXMSW__ $(__WXUNIV_DEFINE_p_1) $(__DEBUG_DEFINE_p_1) $(__NDEBUG_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) $(__UNICODE_DEFINE_p_1) /i $(SETUPHDIR) /i .\..\..\..\include $(____CAIRO_INCLUDEDIR_FILENAMES_1_p) /i . $(__DLLFLAG_p_1) /d _WINDOWS /i .\..\..\..\samples /d NOPCH .\..\..\..\samples\sample.rc
$(OBJS)\pyramid_pyramid.obj: .\pyramid.cpp
$(CXX) /c /nologo /TP /Fo$@ $(PYRAMID_CXXFLAGS) .\pyramid.cpp
$(OBJS)\pyramid_oglstuff.obj: .\oglstuff.cpp
$(CXX) /c /nologo /TP /Fo$@ $(PYRAMID_CXXFLAGS) .\oglstuff.cpp
$(OBJS)\pyramid_mathstuff.obj: .\mathstuff.cpp
$(CXX) /c /nologo /TP /Fo$@ $(PYRAMID_CXXFLAGS) .\mathstuff.cpp
$(OBJS)\pyramid_oglpfuncs.obj: .\oglpfuncs.cpp
$(CXX) /c /nologo /TP /Fo$@ $(PYRAMID_CXXFLAGS) .\oglpfuncs.cpp

View File

@@ -0,0 +1,268 @@
/////////////////////////////////////////////////////////////////////////////
// Name: mathstuff.cpp
// Purpose: Some maths used for pyramid sample
// Author: Manuel Martin
// Created: 2015/01/31
// Copyright: (c) 2015 Manuel Martin
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include <cmath>
#include "mathstuff.h"
// Overload of "-" operator
myVec3 operator- (const myVec3& v1, const myVec3& v2)
{
return myVec3(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);
}
// Vector normalization
myVec3 MyNormalize(const myVec3& v)
{
double mo = sqrt(v.x * v.x + v.y * v.y + v.z * v.z);
if ( mo > 1E-20 )
return myVec3(v.x / mo, v.y / mo, v.z / mo);
else
return myVec3();
}
// Dot product
double MyDot(const myVec3& v1, const myVec3& v2)
{
return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z ;
}
// Cross product
myVec3 MyCross(const myVec3& v1, const myVec3& v2)
{
return myVec3( v1.y * v2.z - v2.y * v1.z,
v1.z * v2.x - v2.z * v1.x,
v1.x * v2.y - v2.x * v1.y );
}
// Distance between two points
double MyDistance(const myVec3& v1, const myVec3& v2)
{
double rx = v1.x -v2.x;
double ry = v1.y -v2.y;
double rz = v1.z -v2.z;
return sqrt(rx*rx + ry*ry + rz*rz);
}
// Angle between two normalized vectors, in radians
double AngleBetween(myVec3 v1, myVec3 v2)
{
double angle = MyDot(v1, v2);
// Prevent issues due to numerical precision
if (angle > 1.0)
angle = 1.0;
if (angle < -1.0)
angle = -1.0;
return acos(angle);
}
// Matrix 4x4 by 4x1 multiplication
// Attention: No bounds check!
myVec4 MyMatMul4x1(const float *m1, const myVec4& v)
{
myVec4 mmv;
mmv.x = (double) m1[0] * v.x + m1[4] * v.y + m1[8] * v.z + m1[12] * v.w ;
mmv.y = (double) m1[1] * v.x + m1[5] * v.y + m1[9] * v.z + m1[13] * v.w ;
mmv.z = (double) m1[2] * v.x + m1[6] * v.y + m1[10] * v.z + m1[14] * v.w ;
mmv.w = (double) m1[3] * v.x + m1[7] * v.y + m1[11] * v.z + m1[15] * v.w ;
return mmv;
}
// Matrix 4x4 multiplication
// Attention: No bounds check!
void MyMatMul4x4(const float *m1, const float *m2, float* mm)
{
mm[0] = (double) m1[0] * m2[0] + m1[4] * m2[1] + m1[8] * m2[2] + m1[12] * m2[3] ;
mm[1] = (double) m1[1] * m2[0] + m1[5] * m2[1] + m1[9] * m2[2] + m1[13] * m2[3] ;
mm[2] = (double) m1[2] * m2[0] + m1[6] * m2[1] + m1[10] * m2[2] + m1[14] * m2[3] ;
mm[3] = (double) m1[3] * m2[0] + m1[7] * m2[1] + m1[11] * m2[2] + m1[15] * m2[3] ;
mm[4] = (double) m1[0] * m2[4] + m1[4] * m2[5] + m1[8] * m2[6] + m1[12] * m2[7] ;
mm[5] = (double) m1[1] * m2[4] + m1[5] * m2[5] + m1[9] * m2[6] + m1[13] * m2[7] ;
mm[6] = (double) m1[2] * m2[4] + m1[6] * m2[5] + m1[10] * m2[6] + m1[14] * m2[7] ;
mm[7] = (double) m1[3] * m2[4] + m1[7] * m2[5] + m1[11] * m2[6] + m1[15] * m2[7] ;
mm[8] = (double) m1[0] * m2[8] + m1[4] * m2[9] + m1[8] * m2[10] + m1[12] * m2[11] ;
mm[9] = (double) m1[1] * m2[8] + m1[5] * m2[9] + m1[9] * m2[10] + m1[13] * m2[11] ;
mm[10] = (double) m1[2] * m2[8] + m1[6] * m2[9] + m1[10] * m2[10] + m1[14] * m2[11] ;
mm[11] = (double) m1[3] * m2[8] + m1[7] * m2[9] + m1[11] * m2[10] + m1[15] * m2[11] ;
mm[12] = (double) m1[0] * m2[12] + m1[4] * m2[13] + m1[8] * m2[14] + m1[12] * m2[15] ;
mm[13] = (double) m1[1] * m2[12] + m1[5] * m2[13] + m1[9] * m2[14] + m1[13] * m2[15] ;
mm[14] = (double) m1[2] * m2[12] + m1[6] * m2[13] + m1[10] * m2[14] + m1[14] * m2[15] ;
mm[15] = (double) m1[3] * m2[12] + m1[7] * m2[13] + m1[11] * m2[14] + m1[15] * m2[15] ;
}
// Matrix 4x4 inverse. Returns the determinant.
// Attention: No bounds check!
// Method used is "adjugate matrix" with "cofactors".
// A faster method, such as "LU decomposition", isn't much faster than this code.
double MyMatInverse(const float *m, float *minv)
{
double det;
double cof[16], sdt[19];
// The 2x2 determinants used for cofactors
sdt[0] = (double) m[10] * m[15] - m[14] * m[11] ;
sdt[1] = (double) m[9] * m[15] - m[13] * m[11] ;
sdt[2] = (double) m[9] * m[14] - m[13] * m[10] ;
sdt[3] = (double) m[8] * m[15] - m[12] * m[11] ;
sdt[4] = (double) m[8] * m[14] - m[12] * m[10] ;
sdt[5] = (double) m[8] * m[13] - m[12] * m[9] ;
sdt[6] = (double) m[6] * m[15] - m[14] * m[7] ;
sdt[7] = (double) m[5] * m[15] - m[13] * m[7] ;
sdt[8] = (double) m[5] * m[14] - m[13] * m[6] ;
sdt[9] = (double) m[4] * m[15] - m[12] * m[7] ;
sdt[10] = (double) m[4] * m[14] - m[12] * m[6] ;
sdt[11] = (double) m[5] * m[15] - m[13] * m[7] ;
sdt[12] = (double) m[4] * m[13] - m[12] * m[5] ;
sdt[13] = (double) m[6] * m[11] - m[10] * m[7] ;
sdt[14] = (double) m[5] * m[11] - m[9] * m[7] ;
sdt[15] = (double) m[5] * m[10] - m[9] * m[6] ;
sdt[16] = (double) m[4] * m[11] - m[8] * m[7] ;
sdt[17] = (double) m[4] * m[10] - m[8] * m[6] ;
sdt[18] = (double) m[4] * m[9] - m[8] * m[5] ;
// The cofactors, transposed
cof[0] = m[5] * sdt[0] - m[6] * sdt[1] + m[7] * sdt[2] ;
cof[1] = - m[1] * sdt[0] + m[2] * sdt[1] - m[3] * sdt[2] ;
cof[2] = m[1] * sdt[6] - m[2] * sdt[7] + m[3] * sdt[8] ;
cof[3] = - m[1] * sdt[13] + m[2] * sdt[14] - m[3] * sdt[15] ;
cof[4] = - m[4] * sdt[0] + m[6] * sdt[3] - m[7] * sdt[4] ;
cof[5] = m[0] * sdt[0] - m[2] * sdt[3] + m[3] * sdt[4] ;
cof[6] = - m[0] * sdt[6] + m[2] * sdt[9] - m[3] * sdt[10] ;
cof[7] = m[0] * sdt[13] - m[2] * sdt[16] + m[3] * sdt[17] ;
cof[8] = m[4] * sdt[1] - m[5] * sdt[3] + m[7] * sdt[5] ;
cof[9] = - m[0] * sdt[1] + m[1] * sdt[3] - m[3] * sdt[5] ;
cof[10] = m[0] * sdt[11] - m[1] * sdt[9] + m[3] * sdt[12] ;
cof[11] = - m[0] * sdt[14] + m[1] * sdt[16] - m[3] * sdt[18] ;
cof[12] = - m[4] * sdt[2] + m[5] * sdt[4] - m[6] * sdt[5] ;
cof[13] = m[0] * sdt[2] - m[1] * sdt[4] + m[2] * sdt[5] ;
cof[14] = - m[0] * sdt[8] + m[1] * sdt[10] - m[2] * sdt[12] ;
cof[15] = m[0] * sdt[15] - m[1] * sdt[17] + m[2] * sdt[18] ;
det = m[0] * cof[0] + m[1] * cof[4] + m[2] * cof[8] + m[3] * cof[12] ;
if ( fabs(det) > 10E-9 ) // Some precision value
{
double invdet = 1.0 / det;
for (int i = 0; i < 16; ++i)
minv[i] = cof[i] * invdet;
}
else
{
// Enable comparison with 0
det = 0.0;
}
return det;
}
// Matrix of rotation around an axis in the origin.
// angle is positive if follows axis (right-hand rule)
// Attention: No bounds check!
void MyRotate(const myVec3& axis, double angle, float *mrot)
{
double c = cos(angle);
double s = sin(angle);
double t = 1.0 - c;
// Normalize the axis vector
myVec3 uv = MyNormalize(axis);
// Store the matrix in column order
mrot[0] = t * uv.x * uv.x + c ;
mrot[1] = t * uv.x * uv.y + s * uv.z ;
mrot[2] = t * uv.x * uv.z - s * uv.y ;
mrot[3] = 0.0 ;
mrot[4] = t * uv.y * uv.x - s * uv.z ;
mrot[5] = t * uv.y * uv.y + c ;
mrot[6] = t * uv.y * uv.z + s * uv.x ;
mrot[7] = 0.0 ;
mrot[8] = t * uv.z * uv.x + s * uv.y ;
mrot[9] = t * uv.z * uv.y - s * uv.x ;
mrot[10] = t * uv.z * uv.z + c ;
mrot[11] = 0.0 ;
mrot[12] = mrot[13] = mrot[14] = 0.0 ;
mrot[15] = 1.0 ;
}
// Matrix for defining the viewing transformation
// Attention: No bounds check!
// Unchecked conditions:
// camPos != targ && camUp != {0,0,0}
// camUo can't be parallel to camPos - targ
void MyLookAt(const myVec3& camPos, const myVec3& camUp, const myVec3& targ, float *mt)
{
myVec3 tc = MyNormalize(targ - camPos);
myVec3 up = MyNormalize(camUp);
// Normalize tc x up for the case where up is not perpendicular to tc
myVec3 s = MyNormalize(MyCross(tc, up));
myVec3 u = MyNormalize(MyCross(s, tc)); //Normalize to improve accuracy
// Store the matrix in column order
mt[0] = s.x ;
mt[1] = u.x ;
mt[2] = - tc.x ;
mt[3] = 0.0 ;
mt[4] = s.y ;
mt[5] = u.y ;
mt[6] = - tc.y ;
mt[7] = 0.0 ;
mt[8] = s.z ;
mt[9] = u.z ;
mt[10] = - tc.z ;
mt[11] = 0.0 ;
mt[12] = - MyDot(s, camPos) ;
mt[13] = - MyDot(u, camPos) ;
mt[14] = MyDot(tc, camPos) ;
mt[15] = 1.0 ;
}
// Matrix for defining the perspective projection with symmetric frustum
// From camera coordinates to canonical (2x2x2 cube) coordinates.
// Attention: No bounds check!
// Unchecked conditions: fov > 0 && zNear > 0 && zFar > zNear && aspect > 0
void MyPerspective(double fov, double aspect, double zNear, double zFar, float *mp)
{
double f = 1.0 / tan(fov / 2.0);
// Store the matrix in column order
mp[0] = f / aspect ;
mp[1] = mp[2] = mp[3] = 0.0 ;
mp[4] = 0.0 ;
mp[5] = f ;
mp[6] = mp[7] = 0.0 ;
mp[8] = mp[9] = 0.0 ;
mp[10] = (zNear + zFar) / (zNear - zFar) ;
mp[11] = -1.0 ;
mp[12] = mp[13] = 0.0 ;
mp[14] = 2.0 * zNear * zFar / (zNear - zFar) ;
mp[15] = 0.0 ;
}
// Matrix for defining the orthogonal projection with symmetric frustum
// From camera coordinates to canonical (2x2x2 cube) coordinates.
// Attention: No bounds check!
// Unchecked conditions: left != right && bottom != top && zNear != zFar
void MyOrtho(double left, double right, double bottom, double top,
double zNear, double zFar, float *mo)
{
// Store the matrix in column order
mo[0] = 2.0 / (right - left) ;
mo[1] = mo[2] = mo[3] = mo[4] = 0.0 ;
mo[5] = 2.0 / (top - bottom) ;
mo[6] = mo[7] = mo[8] = mo[9] = 0.0 ;
mo[10] = 2.0 / (zNear - zFar) ;
mo[11] = 0.0 ;
mo[12] = -(right + left) / (right - left) ;
mo[13] = -(top + bottom) / (top - bottom) ;
mo[14] = (zNear + zFar) / (zNear - zFar) ;
mo[15] = 1.0 ;
}

View File

@@ -0,0 +1,83 @@
/////////////////////////////////////////////////////////////////////////////
// Name: mathstuff.h
// Purpose: Some maths used for pyramid sample
// Author: Manuel Martin
// Created: 2015/01/31
// Copyright: (c) 2015 Manuel Martin
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef MATHSTUFF_H
#define MATHSTUFF_H
//NOTE:
// glm library is great for handling matrices and vectors in a OpenGL style, see
// http://glm.g-truc.net/
// But it's too large for this simple sample. I coded on my own the maths needed.
// A vector with 3 components
class myVec3
{
public:
myVec3() { x = y = z = 0.0 ;}
myVec3(double xd, double yd, double zd) : x(xd), y(yd), z(zd) {}
~myVec3() {}
double x, y, z;
};
// A vector with 4 components
class myVec4
{
public:
myVec4() { x = y = z = w = 0.0 ;}
myVec4(double xd, double yd, double zd, double wd)
: x(xd), y(yd), z(zd), w(wd) {}
myVec4(const myVec3& v3, double wd = 0.0)
: x(v3.x), y(v3.y), z(v3.z), w(wd) {}
~myVec4() {}
double x, y, z, w;
};
// Overload of "-" operator
myVec3 operator- (const myVec3& v1, const myVec3& v2);
// Vector normalization
myVec3 MyNormalize(const myVec3& v);
// Dot product
double MyDot(const myVec3& v1, const myVec3& v2);
// Cross product
myVec3 MyCross(const myVec3& v1, const myVec3& v2);
// Distance between two points
double MyDistance(const myVec3& v1, const myVec3& v2);
// Angle between two normalized vectors, in radians
double AngleBetween(myVec3 v1, myVec3 v2);
// Matrix 4x4 by 4x1 multiplication
myVec4 MyMatMul4x1(const float *m1, const myVec4& v);
// Matrix 4x4 by 4x4 multiplication
void MyMatMul4x4(const float *m1, const float *m2, float* mm);
// Matrix inverse. Returns the determinant
double MyMatInverse(const float *m, float *minv);
// Matrix of rotation around an axis in the origin
void MyRotate(const myVec3& axis, double angle, float *mrot);
// Matrix for defining the viewing transformation
void MyLookAt(const myVec3& camPos, const myVec3& camUp, const myVec3& targ, float *mt);
// Matrix for defining the perspective projection with symmetric frustum
void MyPerspective(double fov, double aspect, double zNear, double zFar, float *mp);
// Matrix for defining the orthogonal projection
void MyOrtho(double left, double right, double bottom, double top,
double zNear, double zFar, float *mo);
#endif // MATHSTUFF_H

View File

@@ -0,0 +1,138 @@
/////////////////////////////////////////////////////////////////////////////
// Name: oglpfuncs.cpp
// Purpose: Pointers to OpenGL functions
// Author: Manuel Martin
// Created: 2015/11/16
// Copyright: (c) 2015 Manuel Martin
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "oglpfuncs.h"
// Apple defines everything on his own
#ifndef __APPLE__
#if defined(_WIN32) || defined(__WIN32__)
#ifndef WIN32_LEAN_AND_MEAN
// Reduce a bit header VC++ compilation time
#define WIN32_LEAN_AND_MEAN 1
#define LE_ME_ISDEF
#endif
#include <windows.h> //For wglGetProcAddress
#ifdef LE_ME_ISDEF
#undef WIN32_LEAN_AND_MEAN
#undef LE_ME_ISDEF
#endif
// Our macro
#define MyGetProcAddress(name) wglGetProcAddress((LPCSTR)name)
#else // Linux
// GLX_ARB_get_proc_address
// glXGetProcAddressARB is statically exported by all libGL implementations,
// while glXGetProcAddress may be not available.
#ifdef __cplusplus
extern "C" {
#endif
extern void (*glXGetProcAddressARB(const GLubyte *procName))();
#ifdef __cplusplus
}
#endif
#define MyGetProcAddress(name) (*glXGetProcAddressARB)((const GLubyte*)name)
#endif
// The function to get the pointers
void* MyGetGLFuncAddress(const char* fname)
{
void* pret = (void*) MyGetProcAddress(fname);
// Some drivers return -apart from 0-, -1, 1, 2 or 3
if ( pret == (void*)-1 || pret == (void*)1 || pret == (void*)2 || pret == (void*)3 )
pret = (void*)0;
return pret;
}
// Declare and initialize pointers
PFNGLACTIVETEXTUREPROC my_glActiveTexture = NULL;
PFNGLATTACHSHADERPROC my_glAttachShader = NULL;
PFNGLBINDATTRIBLOCATIONPROC my_glBindAttribLocation = NULL;
PFNGLBINDBUFFERPROC my_glBindBuffer = NULL;
PFNGLBINDVERTEXARRAYPROC my_glBindVertexArray = NULL;
PFNGLBUFFERDATAPROC my_glBufferData = NULL;
PFNGLBUFFERSUBDATAPROC my_glBufferSubData = NULL;
PFNGLCOMPILESHADERPROC my_glCompileShader = NULL;
PFNGLCREATEPROGRAMPROC my_glCreateProgram = NULL;
PFNGLCREATESHADERPROC my_glCreateShader = NULL;
PFNGLDELETEBUFFERSPROC my_glDeleteBuffers = NULL;
PFNGLDELETEPROGRAMPROC my_glDeleteProgram = NULL;
PFNGLDELETESHADERPROC my_glDeleteShader = NULL;
PFNGLDELETEVERTEXARRAYSPROC my_glDeleteVertexArrays = NULL;
PFNGLDETACHSHADERPROC my_glDetachShader = NULL;
PFNGLDISABLEVERTEXATTRIBARRAYPROC my_glDisableVertexAttribArray = NULL;
PFNGLENABLEVERTEXATTRIBARRAYPROC my_glEnableVertexAttribArray = NULL;
PFNGLGENBUFFERSPROC my_glGenBuffers = NULL;
PFNGLGENVERTEXARRAYSPROC my_glGenVertexArrays = NULL;
PFNGLGETPROGRAMINFOLOGPROC my_glGetProgramInfoLog = NULL;
PFNGLGETPROGRAMIVPROC my_glGetProgramiv = NULL;
PFNGLGETSHADERINFOLOGPROC my_glGetShaderInfoLog = NULL;
PFNGLGETSHADERIVPROC my_glGetShaderiv = NULL;
PFNGLGETUNIFORMLOCATIONPROC my_glGetUniformLocation = NULL;
PFNGLLINKPROGRAMPROC my_glLinkProgram = NULL;
PFNGLPROVOKINGVERTEXPROC my_glProvokingVertex = NULL;
PFNGLSHADERSOURCEPROC my_glShaderSource = NULL;
PFNGLUNIFORM1IPROC my_glUniform1i = NULL;
PFNGLUNIFORM3FVPROC my_glUniform3fv = NULL;
PFNGLUNIFORM4FVPROC my_glUniform4fv = NULL;
PFNGLUNIFORMMATRIX4FVPROC my_glUniformMatrix4fv = NULL;
PFNGLUSEPROGRAMPROC my_glUseProgram = NULL;
PFNGLVERTEXATTRIBPOINTERPROC my_glVertexAttribPointer = NULL;
#endif // __APPLE__
// Retrieve the pointers
#define GETANDTEST(type, name) \
my_ ## name = (type) MyGetGLFuncAddress(#name); \
if (name == 0) \
return false;
bool MyInitGLPointers()
{
#ifdef __APPLE__
return true;
#else
GETANDTEST(PFNGLACTIVETEXTUREPROC, glActiveTexture)
GETANDTEST(PFNGLATTACHSHADERPROC, glAttachShader)
GETANDTEST(PFNGLBINDATTRIBLOCATIONPROC, glBindAttribLocation)
GETANDTEST(PFNGLBINDBUFFERPROC, glBindBuffer)
GETANDTEST(PFNGLBINDVERTEXARRAYPROC, glBindVertexArray)
GETANDTEST(PFNGLBUFFERDATAPROC, glBufferData)
GETANDTEST(PFNGLBUFFERSUBDATAPROC, glBufferSubData)
GETANDTEST(PFNGLCOMPILESHADERPROC, glCompileShader)
GETANDTEST(PFNGLCREATEPROGRAMPROC, glCreateProgram)
GETANDTEST(PFNGLCREATESHADERPROC, glCreateShader)
GETANDTEST(PFNGLDELETEBUFFERSPROC, glDeleteBuffers)
GETANDTEST(PFNGLDELETEPROGRAMPROC, glDeleteProgram)
GETANDTEST(PFNGLDELETESHADERPROC, glDeleteShader)
GETANDTEST(PFNGLDELETEVERTEXARRAYSPROC, glDeleteVertexArrays)
GETANDTEST(PFNGLDETACHSHADERPROC, glDetachShader)
GETANDTEST(PFNGLDISABLEVERTEXATTRIBARRAYPROC, glDisableVertexAttribArray)
GETANDTEST(PFNGLENABLEVERTEXATTRIBARRAYPROC, glEnableVertexAttribArray)
GETANDTEST(PFNGLGENBUFFERSPROC, glGenBuffers)
GETANDTEST(PFNGLGENVERTEXARRAYSPROC, glGenVertexArrays)
GETANDTEST(PFNGLGETPROGRAMINFOLOGPROC, glGetProgramInfoLog)
GETANDTEST(PFNGLGETPROGRAMIVPROC, glGetProgramiv)
GETANDTEST(PFNGLGETSHADERINFOLOGPROC, glGetShaderInfoLog)
GETANDTEST(PFNGLGETSHADERIVPROC, glGetShaderiv)
GETANDTEST(PFNGLGETUNIFORMLOCATIONPROC, glGetUniformLocation)
GETANDTEST(PFNGLLINKPROGRAMPROC, glLinkProgram)
GETANDTEST(PFNGLPROVOKINGVERTEXPROC, glProvokingVertex)
GETANDTEST(PFNGLSHADERSOURCEPROC, glShaderSource)
GETANDTEST(PFNGLUNIFORM1IPROC, glUniform1i)
GETANDTEST(PFNGLUNIFORM3FVPROC, glUniform3fv)
GETANDTEST(PFNGLUNIFORM4FVPROC, glUniform4fv)
GETANDTEST(PFNGLUNIFORMMATRIX4FVPROC, glUniformMatrix4fv)
GETANDTEST(PFNGLUSEPROGRAMPROC, glUseProgram)
GETANDTEST(PFNGLVERTEXATTRIBPOINTERPROC, glVertexAttribPointer)
return true;
#endif
}

View File

@@ -0,0 +1,304 @@
/////////////////////////////////////////////////////////////////////////////
// Name: oglpfuncs.h
// Purpose: Types, constants, and pointers to OpenGL functions
// Author: Manuel Martin
// Created: 2015/11/16
// Copyright: (c) 2015 Manuel Martin
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef OGLPFUNCS_H
#define OGLPFUNCS_H
/* What is this file for?
You would expect the OS to provide constants and functions used in OpenGL.
That was so up to OGL version 1.1; you just needed to include 'gl.h'. But for
newer versions things are not so simple. Constants and function prototypes (well,
typedefs for their pointers) are included in 'glext.h', a file provided by the
OpenGL Registry, and 'glcorearb.h' (also from OGL, only Core Profile definitions).
The functions "live" in the graphics card driver, and they are used through their
pointers.
The reason of this file is to retrieve those pointers, and also to define the
types, constants, and functions used in this sample, so as to avoid the inclusion
of glext.h, which is a very big file.
In the OpenGL Registry we can find also glxext.h and wglext.h (MSW/UXs versions).
These files are used for "extensions", or functions provided by GPU vendors instead
of the OpenGL Consortium. This sample doesn't use them.
OK, there are some good libraries to do this job (GLEW, GL3W, etc). Why do we
reinvent the wheel? Just because for this sample we need a small subset, and not
all of thousands of lines of code that those libraries consist of.
*/
/*
** Copyright (c) 2013-2015 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
**
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Materials.
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/
#if defined(__gl_h_) || defined(__GL_H__) || defined(_GL_H) || defined(__X_GL_H)
#error gl.h included before oglpfuncs.h
#endif
// Apple defines everything on his own
#ifdef __APPLE__
// Suppress warnings when including gl3.h
#define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED
#include <OpenGL/gl3.h> // For Core Profile
#else
// The rest of the world needs the rest of this file
// Avoid gl.h definitions, may clash with our own definitions
#define __gl_h_
#define __GL_H__
#define _GL_H
#define __X_GL_H
// APIENTRY and GLAPI definitions
#if defined(_WIN32) || defined(__WIN32__)
// MS Windows needs APIENTRY.
#ifndef APIENTRY
#define APIENTRY __stdcall
#endif
#ifndef GLAPI
#if defined(_MSC_VER) //VC++
#define GLAPI __declspec(dllimport)
#else
#define GLAPI extern
#endif
#endif
#endif // _WIN32 / __WIN32__
// Other platforms are simpler
#ifndef APIENTRY
#define APIENTRY
#endif
#ifndef GLAPI
#define GLAPI extern
#endif
// For ptrdiff_t
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
// GL types
typedef void GLvoid;
typedef unsigned char GLubyte;
typedef char GLchar;
typedef unsigned char GLboolean;
typedef unsigned short GLushort;
typedef int GLint;
typedef int GLsizei;
typedef unsigned int GLenum;
typedef unsigned int GLuint;
typedef unsigned int GLbitfield;
typedef float GLfloat;
typedef ptrdiff_t GLsizeiptr;
typedef ptrdiff_t GLintptr;
// Constants
#define GL_ARRAY_BUFFER 0x8892
#define GL_BLEND 0x0BE2
#define GL_CLAMP_TO_EDGE 0x812F
#define GL_COLOR_BUFFER_BIT 0x00004000
#define GL_COMPILE_STATUS 0x8B81
#define GL_DEPTH_BUFFER_BIT 0x00000100
#define GL_DEPTH_TEST 0x0B71
#define GL_ELEMENT_ARRAY_BUFFER 0x8893
#define GL_FALSE 0
#define GL_FIRST_VERTEX_CONVENTION 0x8E4D
#define GL_FLOAT 0x1406
#define GL_FRAGMENT_SHADER 0x8B30
#define GL_INFO_LOG_LENGTH 0x8B84
#define GL_LEQUAL 0x0203
#define GL_LINK_STATUS 0x8B82
#define GL_LINEAR 0x2601
#define GL_NO_ERROR 0
#define GL_ONE_MINUS_SRC_ALPHA 0x0303
#define GL_RENDERER 0x1F01
#define GL_RGBA 0x1908
#define GL_SRC_ALPHA 0x0302
#define GL_STATIC_DRAW 0x88E4
#define GL_TEXTURE0 0x84C0
#define GL_TEXTURE_2D 0x0DE1
#define GL_TEXTURE_BASE_LEVEL 0x813C
#define GL_TEXTURE_MAX_LEVEL 0x813D
#define GL_TEXTURE_MAG_FILTER 0x2800
#define GL_TEXTURE_MIN_FILTER 0x2801
#define GL_TEXTURE_WRAP_S 0x2802
#define GL_TEXTURE_WRAP_T 0x2803
#define GL_TRIANGLE_STRIP 0x0005
#define GL_UNSIGNED_BYTE 0x1401
#define GL_UNSIGNED_SHORT 0x1403
#define GL_VENDOR 0x1F00
#define GL_VERSION 0x1F02
#define GL_VERTEX_SHADER 0x8B31
// This functions exist since OpenGL 1.1, and they don't need typedefs nor pointers.
// Trying to retrieve their pointers with wglGetProcAddress() will fail.
GLAPI void APIENTRY glBindTexture (GLenum target, GLuint texture);
GLAPI void APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
GLAPI void APIENTRY glClear (GLbitfield mask);
GLAPI void APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
GLAPI void APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures);
GLAPI void APIENTRY glDepthFunc (GLenum func);
GLAPI void APIENTRY glDisable (GLenum cap);
GLAPI void APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
GLAPI void APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices);
GLAPI void APIENTRY glEnable (GLenum cap);
GLAPI void APIENTRY glFinish (void);
GLAPI void APIENTRY glFlush (void);
GLAPI void APIENTRY glGenTextures (GLsizei n, GLuint *textures);
GLAPI GLenum APIENTRY glGetError (void);
GLAPI const GLubyte* APIENTRY glGetString (GLenum name);
GLAPI void APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
GLAPI void APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
GLAPI void APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
// Typedefs for functions for OpenGL > 1.1
typedef void (APIENTRY* PFNGLACTIVETEXTUREPROC) (GLenum texture);
typedef void (APIENTRY* PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
typedef void (APIENTRY* PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
typedef void (APIENTRY* PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
typedef void (APIENTRY* PFNGLBINDVERTEXARRAYPROC) (GLuint array);
typedef void (APIENTRY* PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
typedef void (APIENTRY* PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
typedef void (APIENTRY* PFNGLCOMPILESHADERPROC) (GLuint shader);
typedef GLuint (APIENTRY* PFNGLCREATEPROGRAMPROC) (void);
typedef GLuint (APIENTRY* PFNGLCREATESHADERPROC) (GLenum type);
typedef void (APIENTRY* PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
typedef void (APIENTRY* PFNGLDELETEPROGRAMPROC) (GLuint program);
typedef void (APIENTRY* PFNGLDELETESHADERPROC) (GLuint shader);
typedef void (APIENTRY* PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
typedef void (APIENTRY* PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
typedef void (APIENTRY* PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
typedef void (APIENTRY* PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
typedef void (APIENTRY* PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
typedef void (APIENTRY* PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
typedef void (APIENTRY* PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
typedef void (APIENTRY* PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
typedef void (APIENTRY* PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
typedef void (APIENTRY* PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
typedef GLint (APIENTRY* PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
typedef void (APIENTRY* PFNGLLINKPROGRAMPROC) (GLuint program);
typedef void (APIENTRY* PFNGLPROVOKINGVERTEXPROC) (GLenum mode);
typedef void (APIENTRY* PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
typedef void (APIENTRY* PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
typedef void (APIENTRY* PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
typedef void (APIENTRY* PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
typedef void (APIENTRY* PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void (APIENTRY* PFNGLUSEPROGRAMPROC) (GLuint program);
typedef void (APIENTRY* PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
// Pointers to functions
// NOTE:
// For each glFunction we use a pointer name which is not the name of the function.
// This is needed in some Linux [old] drivers, which define also these function
// names, leading to a crash because of function vs pointer use.
#define glActiveTexture my_glActiveTexture
#define glAttachShader my_glAttachShader
#define glBindAttribLocation my_glBindAttribLocation
#define glBindBuffer my_glBindBuffer
#define glBindVertexArray my_glBindVertexArray
#define glBufferData my_glBufferData
#define glBufferSubData my_glBufferSubData
#define glCompileShader my_glCompileShader
#define glCreateProgram my_glCreateProgram
#define glCreateShader my_glCreateShader
#define glDeleteBuffers my_glDeleteBuffers
#define glDeleteProgram my_glDeleteProgram
#define glDeleteShader my_glDeleteShader
#define glDeleteVertexArrays my_glDeleteVertexArrays
#define glDetachShader my_glDetachShader
#define glDisableVertexAttribArray my_glDisableVertexAttribArray
#define glEnableVertexAttribArray my_glEnableVertexAttribArray
#define glGenBuffers my_glGenBuffers
#define glGenVertexArrays my_glGenVertexArrays
#define glGetProgramInfoLog my_glGetProgramInfoLog
#define glGetProgramiv my_glGetProgramiv
#define glGetShaderInfoLog my_glGetShaderInfoLog
#define glGetShaderiv my_glGetShaderiv
#define glGetUniformLocation my_glGetUniformLocation
#define glLinkProgram my_glLinkProgram
#define glProvokingVertex my_glProvokingVertex
#define glShaderSource my_glShaderSource
#define glUniform1i my_glUniform1i
#define glUniform3fv my_glUniform3fv
#define glUniform4fv my_glUniform4fv
#define glUniformMatrix4fv my_glUniformMatrix4fv
#define glUseProgram my_glUseProgram
#define glVertexAttribPointer my_glVertexAttribPointer
// NOTE:
// Windows uses different pointers for different OGLcontexts.
// If multi-context was used, these pointers must be used inside some
// structure, something like activeOGLcontext->my_glTheFunction
extern PFNGLACTIVETEXTUREPROC my_glActiveTexture;
extern PFNGLATTACHSHADERPROC my_glAttachShader;
extern PFNGLBINDATTRIBLOCATIONPROC my_glBindAttribLocation;
extern PFNGLBINDBUFFERPROC my_glBindBuffer;
extern PFNGLBINDVERTEXARRAYPROC my_glBindVertexArray;
extern PFNGLBUFFERDATAPROC my_glBufferData;
extern PFNGLBUFFERSUBDATAPROC my_glBufferSubData;
extern PFNGLCOMPILESHADERPROC my_glCompileShader;
extern PFNGLCREATEPROGRAMPROC my_glCreateProgram;
extern PFNGLCREATESHADERPROC my_glCreateShader;
extern PFNGLDELETEBUFFERSPROC my_glDeleteBuffers;
extern PFNGLDELETEPROGRAMPROC my_glDeleteProgram;
extern PFNGLDELETESHADERPROC my_glDeleteShader;
extern PFNGLDELETEVERTEXARRAYSPROC my_glDeleteVertexArrays;
extern PFNGLDETACHSHADERPROC my_glDetachShader;
extern PFNGLDISABLEVERTEXATTRIBARRAYPROC my_glDisableVertexAttribArray;
extern PFNGLENABLEVERTEXATTRIBARRAYPROC my_glEnableVertexAttribArray;
extern PFNGLGENBUFFERSPROC my_glGenBuffers;
extern PFNGLGENVERTEXARRAYSPROC my_glGenVertexArrays;
extern PFNGLGETPROGRAMINFOLOGPROC my_glGetProgramInfoLog;
extern PFNGLGETPROGRAMIVPROC my_glGetProgramiv;
extern PFNGLGETSHADERINFOLOGPROC my_glGetShaderInfoLog;
extern PFNGLGETSHADERIVPROC my_glGetShaderiv;
extern PFNGLGETUNIFORMLOCATIONPROC my_glGetUniformLocation;
extern PFNGLLINKPROGRAMPROC my_glLinkProgram;
extern PFNGLPROVOKINGVERTEXPROC my_glProvokingVertex;
extern PFNGLSHADERSOURCEPROC my_glShaderSource;
extern PFNGLUNIFORM1IPROC my_glUniform1i;
extern PFNGLUNIFORM3FVPROC my_glUniform3fv;
extern PFNGLUNIFORM4FVPROC my_glUniform4fv;
extern PFNGLUNIFORMMATRIX4FVPROC my_glUniformMatrix4fv;
extern PFNGLUSEPROGRAMPROC my_glUseProgram;
extern PFNGLVERTEXATTRIBPOINTERPROC my_glVertexAttribPointer;
#ifdef __cplusplus
}
#endif
#endif // __APPLE__ and rest
// This is the function to use in oglstuff.cpp
bool MyInitGLPointers();
#endif // OGLPFUNCS_H

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,336 @@
/////////////////////////////////////////////////////////////////////////////
// Name: oglstuff.h
// Purpose: OpenGL manager for pyramid sample
// Author: Manuel Martin
// Created: 2015/01/31
// Copyright: (c) 2015 Manuel Martin
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef OGLSTUFF_H
#define OGLSTUFF_H
#include <string>
#include <vector>
#include "mathstuff.h"
// This file allows access to OpenGL functions used in this sample.
#include "oglpfuncs.h"
/*
************ NOTES *******************************************************
This is not an OGL tutorial, I mean, this is just a sample of how OGL stuff
may be arranged. I tried to keep it simple.
It's likely that the novice to OGL reads this sample, so here are some brief
notes:
* Starting with OpenGL >= 2.0 the user defines some special programs that are
going to be executed in the GPU, not in the CPU. These programs are called
"Shaders". Since OGL >= 3.2, and if a "Core Profile" context is set, the use
of shaders is the only way to make an OGL application.
* A program consists (at least) of a 'vertex shader' who operates on the
vertices that define the primitive (a triangle, a line, etc) and a 'fragment
shader' which deals with fragments (points) interpolated from the previously
processed vertices in the vertex shader.
* Shaders must be compiled and linked, both operations are done on the GPU.
* Shaders are written in the GLSL language, that looks like C, but it isn't C.
* Data (vertices, textures) are stored in GPU memory, so they don't need to be
loaded each time the scene must be redrawn.
* Rotations and translations are matrix operations that the GPU may do in the
[vertex]shaders. The user must define the needed matrices.
* A vertex shader defines special vars ("attributes") used for reading the
data from the GPU buffers. Other special vars ("uniforms") are used for
values that don't change with each vertex (i.e. the matrices).
* The relationship between a data buffer and the input attributes in a vertex
shader can be saved in a "Vertex Array Object" (VAO).
I use several classes for typical OGL jobs: Shaders, Data, Camera.
Because different GPU cards may behave on their own, I also use very often
an error-helper. It will inform of the point where something went wrong.
I decided to keep apart all of this from wxWidgets. You won't find anything
related to wxWidgets in the oglstuff[.h][.cpp] files.
That's why I use std::vector and std:string instead of those provided by wx.
*/
// Define our own GL errors
enum
{
myoglERR_CLEAR = 0,
myoglERR_JUSTLOG,
myoglERR_SHADERCREATE,
myoglERR_SHADERCOMPILE,
myoglERR_SHADERLINK,
myoglERR_SHADERLOCATION,
myoglERR_BUFFER,
myoglERR_TEXTIMAGE,
myoglERR_DRAWING_TRI,
myoglERR_DRAWING_STR
};
// Used to handle GL errors in other part of the app.
typedef void myOGLErrHandler(int err, int glerr, const GLchar* glMsg);
// For shader attributes
struct shaVars
{
GLuint loc; //The attribute "location", some kind of index in the shader
std::string name; //The name of the attribute
};
typedef std::vector<shaVars> shaVars_v;
// For shader code
struct shaShas
{
GLuint shaId;
GLenum typeSha; //The type of shader
const GLchar* scode; //The NULL terminated GLSL code
};
typedef std::vector<shaShas> shaShas_v;
//-----------------------------------------------------------------------------
// This object builds a GPU program by joining several shaders.
class myOGLShaders
{
public:
myOGLShaders();
~myOGLShaders();
void Init();
bool Use();
void StopUse();
void CleanUp();
void AddCode(const GLchar* shaString, GLenum shaType);
void AddAttrib(std::string name);
void AddUnif(std::string name);
GLuint GetAttribLoc(std::string name);
GLuint GetUnifLoc(std::string name);
// Disable generic vertex attribute array
void DisableGenericVAA();
private:
void SetAttribLocations();
bool AskUnifLocations();
bool Compile(GLuint shaId);
bool LinkProg(GLuint proId);
shaVars_v m_shaAttrib; // 'attributes' names and locations
shaVars_v m_shaUnif; // 'uniforms' names and locations
shaShas_v m_shaCode; // shaders code and their types
GLuint m_proId; // program Id
bool m_SHAinitializated;
};
//-----------------------------------------------------------------------------
// A "point light"
class myLight
{
public:
myLight() {}
~myLight() {}
void Set(const myVec3& position, GLfloat intensity,
GLfloat R, GLfloat G, GLfloat B);
// Return position and intensity
const GLfloat* GetFLightPos() const
{ return m_PosAndIntensisty; }
// Return colour
const GLfloat* GetFLightColour() const
{ return m_Colour; }
private:
// Light position and intensity
GLfloat m_PosAndIntensisty[4];
// Light colour
GLfloat m_Colour[3];
};
//-----------------------------------------------------------------------------
// An object for triangles
class myOGLTriangles
{
public:
myOGLTriangles();
~myOGLTriangles();
// Clean up
void Clear();
// Load data into the GPU
void SetBuffers(myOGLShaders* theShader, GLsizei nuPoints, GLsizei nuTriangs,
const GLfloat* vert, const GLfloat* colo,
const GLfloat* norm, const GLushort* indices);
//Draw the triangles
void Draw(const GLfloat* unifMvp, const GLfloat* unifToVw,
const myLight* theLight);
private:
GLsizei m_nuTriangs;
// Buffers ids
GLuint m_bufVertId;
GLuint m_bufColNorId;
GLuint m_bufIndexId;
// Vertex Arrays Object
GLuint m_triangVAO;
// GPU Program used to draw the triangles
myOGLShaders* m_triangShaders;
};
//-----------------------------------------------------------------------------
// An object for strings
class myOGLString
{
public:
myOGLString();
~myOGLString();
// Clean up
void Clear();
// Load data into the GPU
void SetStringWithVerts(myOGLShaders* theShader,
const unsigned char* tImage, int tWidth, int tHeigh,
const GLfloat* vert, const GLfloat* norm);
// Draw the string
void Draw(const GLfloat* unifMvp, const GLfloat* unifToVw,
const myLight* theLight);
private:
GLuint m_bufPosId; // Buffer id
GLuint m_stringVAO; // Vertex Arrays Object
GLuint m_textureUnit; // The context unit
GLuint m_textureId; // Texture name
// GPU Program used to draw the texture
myOGLShaders* m_stringShaders;
};
//-----------------------------------------------------------------------------
// An object for the immutable string
class myOGLImmutString : public myOGLString
{
public:
myOGLImmutString(){}
~myOGLImmutString(){}
// Load data into the GPU
void SetImmutString(myOGLShaders* theShader,
const unsigned char* tImage, int tWidth, int tHeigh);
// Update orthogonal projection matrix
void SetOrtho(int winWidth, int winHeight);
// The transformation matrix
const GLfloat* GetFloatMVP() { return m_fOrtho; }
private:
GLfloat m_fOrtho[16]; // The orthogonal projection matrix
};
//-----------------------------------------------------------------------------
// The "camera", or the point of view
class myOGLCamera
{
public:
myOGLCamera();
~myOGLCamera() {}
// Initial positions
void InitPositions();
// When the size of the window changes
void ViewSizeChanged(int newWidth, int newHeight);
// The whole transformation matrix
const GLfloat* GetFloatMVP();
// The 'To View Space' transformation matrix
const GLfloat* GetFloatToVw();
// The camera position
myVec3 GetPosition() {return m_camPosition;}
// Simulates a virtual trackball and rotates the 'world'
void MouseRotation(int fromX, int fromY, int toX, int toY);
double GetTrackballZ(double x, double y, double r);
// The used matrices
GLfloat m_fMode[16]; // The model matrix, rotation in this sample
GLfloat m_fView[16]; // The view matrix
GLfloat m_fProj[16]; // The projection matrix
GLfloat m_fMVP[16]; // The whole transform matrix
GLfloat m_fToVw[16]; // The 'to View' transform matrix
private:
bool m_needMVPUpdate;
void UpdateMatrices();
// Coordinates in model space
myVec3 m_centerOfWorld;
double m_radiusOfWorld;
myVec3 m_camPosition;
myVec3 m_camTarget;
myVec3 m_camUp;
// Window size in pixels
int m_winWidth;
int m_winHeight;
// Parameters for the projection
double m_fov;
double m_nearD;
double m_farD;
};
//-----------------------------------------------------------------------------
// General manager
class myOGLManager
{
public:
myOGLManager(myOGLErrHandler* extErrHnd = NULL);
~myOGLManager();
// Constants, prototypes and pointers to OGL functions
static bool Init();
// Strings describing the current GL connection
const GLubyte* GetGLVersion();
const GLubyte* GetGLVendor();
const GLubyte* GetGLRenderer();
// Load data into the GPU
void SetShadersAndTriangles();
// Load the texture for the string in the pyramid
void SetStringOnPyr(const unsigned char* strImage, int iWidth, int iHeigh);
// Load the texture for the immutable string
void SetImmutableString(const unsigned char* strImage, int iWidth, int iHeigh);
// For window size change
void SetViewport(int x, int y, int width, int height);
void Render(); // Total rendering
// Action events in OpenGL win coordinates (bottom is y=0)
void OnMouseButDown(int posX, int posY);
void OnMouseRotDragging(int posX, int posY);
private:
// Members
myOGLShaders m_TriangShaders;
myOGLShaders m_StringShaders;
myOGLShaders m_ImmutStringSha;
myLight m_Light;
myOGLCamera m_Camera;
myOGLTriangles m_Triangles;
myOGLString m_StringOnPyr;
myOGLImmutString m_ImmString;
// For mouse event
int m_mousePrevX;
int m_mousePrevY;
};
#endif //OGLSTUFF_H

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" ?>
<makefile>
<include file="../../../build/bakefiles/common_samples.bkl"/>
<if cond="OUT_OF_TREE_MAKEFILES=='1'">
<set var="USE_OPENGL">1</set>
</if>
<exe id="pyramid" template="wx_sample" template_append="wx_append" cond="USE_OPENGL=='1'">
<sources>
pyramid.cpp
oglstuff.cpp
mathstuff.cpp
oglpfuncs.cpp
</sources>
<headers>
pyramid.h
oglstuff.h
mathstuff.h
oglpfuncs.h
</headers>
<wx-lib>gl</wx-lib>
<wx-lib>core</wx-lib>
<wx-lib>base</wx-lib>
</exe>
</makefile>

View File

@@ -0,0 +1,599 @@
/////////////////////////////////////////////////////////////////////////////
// Name: pyramid.cpp
// Purpose: OpenGL version >= 3.2 sample
// Author: Manuel Martin
// Created: 2015/11/16
// Copyright: (c) 2015 Manuel Martin
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// ============================================================================
// declarations
// ============================================================================
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#if !wxUSE_GLCANVAS
#error "OpenGL required: set wxUSE_GLCANVAS to 1 and rebuild the library"
#endif
// Due to oglpfuncs.h needs to be included before gl.h (to avoid some declarations),
// we include glcanvas.h after oglstuff.h
#include "oglstuff.h"
#include "wx/glcanvas.h"
#include "pyramid.h"
// the application icon (under Windows and OS/2 it is in resources and even
// though we could still include the XPM here it would be unused)
#ifndef wxHAS_IMAGES_IN_RESOURCES
#include "../../sample.xpm"
#endif
wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(Pyramid_Quit, MyFrame::OnQuit)
EVT_MENU(Pyramid_About, MyFrame::OnAbout)
#if wxUSE_LOGWINDOW
EVT_MENU(Pyramid_LogW, MyFrame::OnLogWindow)
#endif // wxUSE_LOGWINDOW
wxEND_EVENT_TABLE()
wxIMPLEMENT_APP(MyApp);
// ============================================================================
// implementation
// ============================================================================
// ----------------------------------------------------------------------------
// the application class
// ----------------------------------------------------------------------------
// 'Main program' equivalent: the program execution "starts" here
bool MyApp::OnInit()
{
if ( !wxApp::OnInit() )
return false;
// create the main application window
MyFrame* frame = new MyFrame("wxWidgets OpenGL Pyramid Sample");
//Exit if the required visual attributes or OGL context couldn't be created
if ( ! frame->OGLAvailable() )
return false;
// As of October 2015 GTK+ needs the frame to be shown before we call SetCurrent()
frame->Show(true);
return true;
}
// ----------------------------------------------------------------------------
// main frame
// ----------------------------------------------------------------------------
// frame constructor
MyFrame::MyFrame(const wxString& title)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(500, 400))
{
// set the frame icon
SetIcon(wxICON(sample));
#if wxUSE_MENUS
// create a menu bar
wxMenu *fileMenu = new wxMenu;
// the "About" item should be in the help menu
wxMenu *helpMenu = new wxMenu;
helpMenu->Append(Pyramid_About, "&About\tF1", "Show about dialog");
#if wxUSE_LOGWINDOW
fileMenu->Append(Pyramid_LogW, "&Log window", "Open the log window");
fileMenu->AppendSeparator();
#endif // wxUSE_LOGWINDOW
fileMenu->Append(Pyramid_Quit, "E&xit\tAlt-X", "Quit this program");
// now append the freshly created menu to the menu bar...
wxMenuBar *menuBar = new wxMenuBar();
menuBar->Append(fileMenu, "&File");
menuBar->Append(helpMenu, "&Help");
// ... and attach this menu bar to the frame
SetMenuBar(menuBar);
#endif // wxUSE_MENUS
#if wxUSE_STATUSBAR
// create a status bar just for fun (by default with 1 pane only)
CreateStatusBar(2);
SetStatusText("Welcome to wxWidgets!");
#endif // wxUSE_STATUSBAR
#if wxUSE_LOGWINDOW
//Open a log window, don't show it though
m_LogWin = new wxLogWindow(NULL, "Pyramid log window", false, false);
wxLog::SetActiveTarget(m_LogWin);
#endif // wxUSE_LOGWINDOW
// The canvas
m_mycanvas = NULL;
wxGLAttributes vAttrs;
// Defaults should be accepted
vAttrs.PlatformDefaults().Defaults().EndList();
bool accepted = wxGLCanvas::IsDisplaySupported(vAttrs) ;
if ( accepted )
{
#if wxUSE_LOGWINDOW
wxLogMessage("The display supports required visual attributes.");
#endif // wxUSE_LOGWINDOW
}
else
{
#if wxUSE_LOGWINDOW
wxLogMessage("First try with OpenGL default visual attributes failed.");
#endif // wxUSE_LOGWINDOW
// Try again without sample buffers
vAttrs.Reset();
vAttrs.PlatformDefaults().RGBA().DoubleBuffer().Depth(16).EndList();
accepted = wxGLCanvas::IsDisplaySupported(vAttrs) ;
if ( !accepted )
{
wxMessageBox("Visual attributes for OpenGL are not accepted.\nThe app will exit now.",
"Error with OpenGL", wxOK | wxICON_ERROR);
}
else
{
#if wxUSE_LOGWINDOW
wxLogMessage("Second try with other visual attributes worked.");
#endif // wxUSE_LOGWINDOW
}
}
if ( accepted )
m_mycanvas = new MyGLCanvas(this, vAttrs);
SetMinSize(wxSize(250, 200));
}
// event handlers
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
// true is to force the frame to close
Close(true);
}
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
wxMessageBox(wxString::Format
(
"Welcome to %s!\n"
"\n"
"This is the wxWidgets OpenGL Pyramid sample.\n"
"%s\n",
wxVERSION_STRING,
m_OGLString
),
"About wxWidgets pyramid sample",
wxOK | wxICON_INFORMATION,
this);
}
#if wxUSE_LOGWINDOW
void MyFrame::OnLogWindow(wxCommandEvent& WXUNUSED(event))
{
if ( m_LogWin->GetFrame()->IsIconized() )
m_LogWin->GetFrame()->Restore();
if ( ! m_LogWin->GetFrame()->IsShown() )
m_LogWin->Show();
m_LogWin->GetFrame()->SetFocus();
}
#endif // wxUSE_LOGWINDOW
bool MyFrame::OGLAvailable()
{
//Test if visual attributes were accepted.
if ( ! m_mycanvas )
return false;
//Test if OGL context could be created.
return m_mycanvas->OglCtxAvailable();
}
// ----------------------------------------------------------------------------
// Function for receiving messages from OGLstuff and passing them to the log window
// ----------------------------------------------------------------------------
void fOGLErrHandler(int err, int glerr, const GLchar* glMsg)
{
#if wxUSE_LOGWINDOW
wxString msg;
switch (err)
{
case myoglERR_SHADERCREATE:
msg = _("Error in shader creation.");
break;
case myoglERR_SHADERCOMPILE:
msg = _("Error in shader compilation.");
break;
case myoglERR_SHADERLINK:
msg = _("Error in shader linkage.");
break;
case myoglERR_SHADERLOCATION:
msg = _("Error: Can't get uniforms locations.");
break;
case myoglERR_BUFFER:
msg = _("Error: Can't load buffer. Likely out of GPU memory.");
break;
case myoglERR_TEXTIMAGE:
msg = _("Error: Can't load texture. Likely out of GPU memory.");
break;
case myoglERR_DRAWING_TRI:
msg = _("Error: Can't draw the triangles.");
break;
case myoglERR_DRAWING_STR:
msg = _("Error: Can't draw the string.");
break;
case myoglERR_JUSTLOG:
msg = _("Log info: ");
break;
default:
msg = _("Not a GL message.");
}
if ( glerr != GL_NO_ERROR )
msg += wxString::Format(_(" GL error %d. "), glerr);
else if ( err == 0 )
msg = _("Information: ");
else if ( err != myoglERR_JUSTLOG )
msg += _(" GL reports: ");
if ( glMsg != NULL )
msg += wxString::FromUTF8( reinterpret_cast<const char *>(glMsg) );
wxLogMessage(msg);
#endif // wxUSE_LOGWINDOW
}
// ----------------------------------------------------------------------------
// These two functions allow us to convert a wxString into a RGBA pixels array
// ----------------------------------------------------------------------------
// Creates a 4-bytes-per-pixel, RGBA array from a wxImage.
// If the image has alpha channel, it's used. If not, pixels with 'cTrans' color
// get 'cAlpha' alpha; an the rest of pixels get alpha=255 (opaque).
//
// NOTE: The returned pointer must be deleted somewhere in the app.
unsigned char* MyImgToArray(const wxImage& img, const wxColour& cTrans, unsigned char cAlpha)
{
int w = img.GetWidth();
int h = img.GetHeight();
int siz = w * h;
unsigned char *resArr = new unsigned char [siz * 4];
unsigned char *res = resArr;
unsigned char *sdata = img.GetData();
unsigned char *alpha = NULL;
if ( img.HasAlpha() )
alpha = img.GetAlpha();
// Pixel by pixel
for ( int i = 0; i < siz; i++ )
{ //copy the colour
res[0] = sdata[0] ;
res[1] = sdata[1] ;
res[2] = sdata[2] ;
if ( alpha != NULL )
{ //copy alpha
res[3] = alpha[i] ;
}
else
{ // Colour cTrans gets cAlpha transparency
if ( res[0] == cTrans.Red() && res[1] == cTrans.Green() && res[2] == cTrans.Blue() )
res[3] = cAlpha;
else
res[3] = 255 ;
}
sdata += 3 ;
res += 4 ;
}
return resArr;
}
// Creates an array of bytes that defines the pixels of the string.
// The background color has cAlpha transparency. 0=transparent, 255=opaque
//
// NOTE: The returned pointer must be deleted somewhere in the app.
unsigned char* MyTextToPixels(const wxString& sText, // The string
const wxFont& sFont, // Font to use
const wxColour& sForeColo, // Foreground colour
const wxColour& sBackColo, // Background colour
unsigned char cAlpha, // Background transparency
int* width, int* height) // Image sizes
{
if ( sText.IsEmpty() )
return NULL;
// The dc where we temporally draw
wxMemoryDC mdc;
mdc.SetFont(sFont);
// Measure
mdc.GetMultiLineTextExtent(sText, width, height);
/* This code should be used for old graphics cards.
But this sample uses OGL Core Profile, so the card is not that old.
// Adjust sizes to power of two. Needed for old cards.
int sizP2 = 4;
while ( sizP2 < *width )
sizP2 *= 2;
*width = sizP2;
sizP2 = 4;
while ( sizP2 < *height )
sizP2 *= 2;
*height = sizP2;
*/
// Now we know dimensions, let's draw into a memory dc
wxBitmap bmp(*width, *height, 24);
mdc.SelectObject(bmp);
// If we have multiline string, perhaps not all of the bmp is used
wxBrush brush(sBackColo);
mdc.SetBackground(brush);
mdc.Clear(); // Make sure all of bmp is cleared
// Colours
mdc.SetBackgroundMode(wxPENSTYLE_SOLID);
mdc.SetTextBackground(sBackColo);
mdc.SetTextForeground(sForeColo);
// We draw the string and get it as an image.
// NOTE: OpenGL axis are bottom to up. Be aware when setting the texture coords.
mdc.DrawText(sText, 0, 0);
mdc.SelectObject(wxNullBitmap); // bmp must be detached from wxMemoryDC
// Bytes from the image. Background pixels become transparent with the
// cAlpha transparency value.
unsigned char *res = MyImgToArray(bmp.ConvertToImage(), sBackColo, cAlpha);
return res;
}
// ----------------------------------------------------------------------------
// The canvas inside the frame. Our OpenGL connection
// ----------------------------------------------------------------------------
wxBEGIN_EVENT_TABLE(MyGLCanvas, wxGLCanvas)
EVT_PAINT(MyGLCanvas::OnPaint)
EVT_SIZE(MyGLCanvas::OnSize)
EVT_MOUSE_EVENTS(MyGLCanvas::OnMouse)
wxEND_EVENT_TABLE()
//We create a wxGLContext in this constructor.
//We do OGL initialization at OnSize().
MyGLCanvas::MyGLCanvas(MyFrame* parent, const wxGLAttributes& canvasAttrs)
: wxGLCanvas(parent, canvasAttrs)
{
m_parent = parent;
m_oglManager = NULL;
m_winHeight = 0; // We have not been sized yet
// Explicitly create a new rendering context instance for this canvas.
wxGLContextAttrs ctxAttrs;
#ifndef __WXMAC__
// An impossible context, just to test IsOk()
ctxAttrs.PlatformDefaults().OGLVersion(99, 2).EndList();
m_oglContext = new wxGLContext(this, NULL, &ctxAttrs);
if ( !m_oglContext->IsOK() )
{
#if wxUSE_LOGWINDOW
wxLogMessage("Trying to set OpenGL 99.2 failed, as expected.");
#endif // wxUSE_LOGWINDOW
delete m_oglContext;
ctxAttrs.Reset();
#endif //__WXMAC__
ctxAttrs.PlatformDefaults().CoreProfile().OGLVersion(3, 2).EndList();
m_oglContext = new wxGLContext(this, NULL, &ctxAttrs);
#ifndef __WXMAC__
}
#endif //__WXMAC__
if ( !m_oglContext->IsOK() )
{
wxMessageBox("This sample needs an OpenGL 3.2 capable driver.\nThe app will end now.",
"OpenGL version error", wxOK | wxICON_INFORMATION, this);
delete m_oglContext;
m_oglContext = NULL;
}
else
{
#if wxUSE_LOGWINDOW
wxLogMessage("OpenGL Core Profile 3.2 successfully set.");
#endif // wxUSE_LOGWINDOW
}
}
MyGLCanvas::~MyGLCanvas()
{
if ( m_oglContext )
SetCurrent(*m_oglContext);
if ( m_oglManager )
{
delete m_oglManager;
m_oglManager = NULL;
}
if ( m_oglContext )
{
delete m_oglContext;
m_oglContext = NULL;
}
}
bool MyGLCanvas::oglInit()
{
if ( !m_oglContext )
return false;
// The current context must be set before we get OGL pointers
SetCurrent(*m_oglContext);
// Initialize our OGL pointers
if ( !myOGLManager::Init() )
{
wxMessageBox("Error: Some OpenGL pointer to function failed.",
"OpenGL initialization error", wxOK | wxICON_INFORMATION, this);
return false;
}
// Create our OGL manager, pass our OGL error handler
m_oglManager = new myOGLManager(&fOGLErrHandler);
// Get the GL version for the current OGL context
wxString sglVer = "\nUsing OpenGL version: ";
sglVer += wxString::FromUTF8(
reinterpret_cast<const char *>(m_oglManager->GetGLVersion()) );
// Also Vendor and Renderer
sglVer += "\nVendor: ";
sglVer += wxString::FromUTF8(
reinterpret_cast<const char *>(m_oglManager->GetGLVendor()) );
sglVer += "\nRenderer: ";
sglVer += wxString::FromUTF8(
reinterpret_cast<const char *>(m_oglManager->GetGLRenderer()) );
// For the menu "About" info
m_parent->SetOGLString(sglVer);
// Load some data into GPU
m_oglManager->SetShadersAndTriangles();
// This string will be placed on a face of the pyramid
int swi = 0, shi = 0; //Image sizes
wxString stg("wxWidgets");
// Set the font. Use a big pointsize so as to smoothing edges.
wxFont font(48, wxFONTFAMILY_MODERN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
if ( !font.IsOk() )
font = *wxSWISS_FONT;
wxColour bgrdColo(*wxBLACK);
wxColour foreColo(160, 0, 200); // Dark purple
// Build an array with the pixels. Background fully transparent
unsigned char* sPixels = MyTextToPixels(stg, font, foreColo, bgrdColo, 0,
&swi, &shi);
// Send it to GPU
m_oglManager->SetStringOnPyr(sPixels, swi, shi);
delete[] sPixels; // That memory was allocated at MyTextToPixels
// This string is placed at left bottom of the window. Its size doesn't
// change with window size.
stg = "Rotate the pyramid with\nthe left mouse button";
font.SetPointSize(14);
bgrdColo = wxColour(40, 40, 255);
foreColo = wxColour(*wxWHITE);
unsigned char* stPixels = MyTextToPixels(stg, font, foreColo, bgrdColo, 80,
&swi, &shi);
m_oglManager->SetImmutableString(stPixels, swi, shi);
delete[] stPixels;
return true;
}
void MyGLCanvas::OnPaint( wxPaintEvent& WXUNUSED(event) )
{
// This is a dummy, to avoid an endless succession of paint messages.
// OnPaint handlers must always create a wxPaintDC.
wxPaintDC dc(this);
// Avoid painting when we have not yet a size
if ( m_winHeight < 1 || !m_oglManager )
return;
// This should not be needed, while we have only one canvas
SetCurrent(*m_oglContext);
// Do the magic
m_oglManager->Render();
SwapBuffers();
}
//Note:
// You may wonder why OpenGL initialization was not done at wxGLCanvas ctor.
// The reason is due to GTK+/X11 working asynchronously, we can't call
// SetCurrent() before the window is shown on screen (GTK+ doc's say that the
// window must be realized first).
// In wxGTK, window creation and sizing requires several size-events. At least
// one of them happens after GTK+ has notified the realization. We use this
// circumstance and do initialization then.
void MyGLCanvas::OnSize(wxSizeEvent& event)
{
event.Skip();
// If this window is not fully initialized, dismiss this event
if ( !IsShownOnScreen() )
return;
if ( !m_oglManager )
{
//Now we have a context, retrieve pointers to OGL functions
if ( !oglInit() )
return;
//Some GPUs need an additional forced paint event
PostSizeEvent();
}
// This is normally only necessary if there is more than one wxGLCanvas
// or more than one wxGLContext in the application.
SetCurrent(*m_oglContext);
// It's up to the application code to update the OpenGL viewport settings.
m_winHeight = event.GetSize().y;
m_oglManager->SetViewport(0, 0, event.GetSize().x, m_winHeight);
// Generate paint event without erasing the background.
Refresh(false);
}
void MyGLCanvas::OnMouse(wxMouseEvent& event)
{
event.Skip();
// GL 0 Y-coordinate is at bottom of the window
int oglwinY = m_winHeight - event.GetY();
if ( event.LeftIsDown() )
{
if ( ! event.Dragging() )
{
// Store positions
m_oglManager->OnMouseButDown(event.GetX(), oglwinY);
}
else
{
// Rotation
m_oglManager->OnMouseRotDragging( event.GetX(), oglwinY );
// Generate paint event without erasing the background.
Refresh(false);
}
}
}

View File

@@ -0,0 +1,88 @@
/////////////////////////////////////////////////////////////////////////////
// Name: pyramid.h
// Purpose: OpenGL version >= 3.2 sample
// Author: Manuel Martin
// Created: 2015/11/05
// Copyright: (c) 2015 Manuel Martin
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef PYRSAMLE_H
#define PYRSAMLE_H
// Define a new application
class MyApp: public wxApp
{
public:
MyApp(){};
bool OnInit() wxOVERRIDE;
};
class MyGLCanvas;
// The main frame class
class MyFrame : public wxFrame
{
public:
MyFrame(const wxString& title);
void OnAbout(wxCommandEvent& event);
void OnQuit(wxCommandEvent& event);
#if wxUSE_LOGWINDOW
void OnLogWindow(wxCommandEvent& event);
#endif // wxUSE_LOGWINDOW
void SetOGLString(const wxString& ogls)
{ m_OGLString = ogls; }
bool OGLAvailable();
private:
#if wxUSE_LOGWINDOW
wxLogWindow* m_LogWin;
#endif // wxUSE_LOGWINDOW
wxString m_OGLString;
MyGLCanvas* m_mycanvas;
wxDECLARE_EVENT_TABLE();
};
// The canvas window
class MyGLCanvas : public wxGLCanvas
{
public:
MyGLCanvas(MyFrame* parent, const wxGLAttributes& canvasAttrs);
~MyGLCanvas();
//Used just to know if we must end now because OGL 3.2 isn't available
bool OglCtxAvailable()
{return m_oglContext != NULL;}
//Init the OpenGL stuff
bool oglInit();
void OnPaint(wxPaintEvent& event);
void OnSize(wxSizeEvent& event);
void OnMouse(wxMouseEvent& event);
private:
// Members
MyFrame* m_parent;
wxGLContext* m_oglContext;
myOGLManager* m_oglManager;
int m_winHeight; // We use this var to know if we have been sized
wxDECLARE_EVENT_TABLE();
};
// IDs for the controls and the menu commands
enum
{
Pyramid_Quit = wxID_EXIT,
Pyramid_About = wxID_ABOUT,
Pyramid_LogW = wxID_HIGHEST + 10
};
#endif // PYRSAMLE_H

View File

@@ -0,0 +1,329 @@
<?xml version="1.0" encoding="Windows-1252"?>
<!--
This project was generated by
Bakefile 0.2.9 (http://www.bakefile.org)
Do not modify, all changes will be overwritten!
-->
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="pyramid"
ProjectGUID="{8B2CDA36-D871-5C92-9CC4-EA6AD9968233}">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="vc_mswud"
IntermediateDirectory="vc_mswud\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="1">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswud;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_DEBUG;__WXMSW__;_UNICODE;_WINDOWS;NOPCH"
MinimalRebuild="TRUE"
ExceptionHandling="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
BufferSecurityCheck="TRUE"
RuntimeTypeInfo="TRUE"
ObjectFile="vc_mswud\pyramid\"
ProgramDataBaseFileName="vc_mswud\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="TRUE"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31ud_gl.lib opengl32.lib glu32.lib wxmsw31ud_core.lib wxbase31ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswud\pyramid.exe"
LinkIncremental="2"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="vc_mswud\pyramid.pdb"
SubSystem="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_DEBUG;__WXMSW__;_UNICODE;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswud;.\..\..\..\include;.;.\..\..\..\samples"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;__WXMSW__;_UNICODE;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswud;.\..\..\..\include;.;.\..\..\..\samples"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="vc_mswu"
IntermediateDirectory="vc_mswu\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="1">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswu;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;__WXMSW__;NDEBUG;_UNICODE;_WINDOWS;NOPCH"
ExceptionHandling="TRUE"
RuntimeLibrary="2"
RuntimeTypeInfo="TRUE"
ObjectFile="vc_mswu\pyramid\"
ProgramDataBaseFileName="vc_mswu\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="TRUE"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31u_gl.lib opengl32.lib glu32.lib wxmsw31u_core.lib wxbase31u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswu\pyramid.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="vc_mswu\pyramid.pdb"
SubSystem="2"
TargetMachine="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;__WXMSW__;NDEBUG;_UNICODE;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswu;.\..\..\..\include;.;.\..\..\..\samples"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="__WXMSW__;NDEBUG;_UNICODE;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswu;.\..\..\..\include;.;.\..\..\..\samples"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="DLL Debug|Win32"
OutputDirectory="vc_mswuddll"
IntermediateDirectory="vc_mswuddll\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="1">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswud;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_DEBUG;__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
MinimalRebuild="TRUE"
ExceptionHandling="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
BufferSecurityCheck="TRUE"
RuntimeTypeInfo="TRUE"
ObjectFile="vc_mswuddll\pyramid\"
ProgramDataBaseFileName="vc_mswuddll\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="TRUE"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31ud_gl.lib opengl32.lib glu32.lib wxmsw31ud_core.lib wxbase31ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswuddll\pyramid.exe"
LinkIncremental="2"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_dll"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="vc_mswuddll\pyramid.pdb"
SubSystem="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_DEBUG;__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswud;.\..\..\..\include;.;.\..\..\..\samples"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswud;.\..\..\..\include;.;.\..\..\..\samples"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="DLL Release|Win32"
OutputDirectory="vc_mswudll"
IntermediateDirectory="vc_mswudll\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
CharacterSet="1">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswu;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;__WXMSW__;NDEBUG;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
ExceptionHandling="TRUE"
RuntimeLibrary="2"
RuntimeTypeInfo="TRUE"
ObjectFile="vc_mswudll\pyramid\"
ProgramDataBaseFileName="vc_mswudll\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="TRUE"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31u_gl.lib opengl32.lib glu32.lib wxmsw31u_core.lib wxbase31u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswudll\pyramid.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_dll"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="vc_mswudll\pyramid.pdb"
SubSystem="2"
TargetMachine="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;__WXMSW__;NDEBUG;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswu;.\..\..\..\include;.;.\..\..\..\samples"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="__WXMSW__;NDEBUG;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswu;.\..\..\..\include;.;.\..\..\..\samples"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
<File
RelativePath=".\mathstuff.cpp">
</File>
<File
RelativePath=".\oglpfuncs.cpp">
</File>
<File
RelativePath=".\oglstuff.cpp">
</File>
<File
RelativePath=".\pyramid.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
<File
RelativePath=".\mathstuff.h">
</File>
<File
RelativePath=".\oglpfuncs.h">
</File>
<File
RelativePath=".\oglstuff.h">
</File>
<File
RelativePath=".\pyramid.h">
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
<File
RelativePath="..\..\..\samples\sample.rc">
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,863 @@
<?xml version="1.0" encoding="Windows-1252"?>
<!--
This project was generated by
Bakefile 0.2.9 (http://www.bakefile.org)
Do not modify, all changes will be overwritten!
-->
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="pyramid"
ProjectGUID="{395ED3E8-EDBD-58BD-831D-BC6005B26500}"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="vc_mswud"
IntermediateDirectory="vc_mswud\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswud;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswud;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;_WINDOWS;NOPCH"
MinimalRebuild="true"
ExceptionHandling="1"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
BufferSecurityCheck="true"
RuntimeTypeInfo="true"
ObjectFile="vc_mswud\pyramid\"
ProgramDataBaseFileName="vc_mswud\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswud;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31ud_gl.lib opengl32.lib glu32.lib wxmsw31ud_core.lib wxbase31ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswud\pyramid.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_lib"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswud\pyramid.pdb"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswud\pyramid_vc8.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="vc_mswu"
IntermediateDirectory="vc_mswu\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswu;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswu;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;_WINDOWS;NOPCH"
ExceptionHandling="1"
RuntimeLibrary="2"
RuntimeTypeInfo="true"
ObjectFile="vc_mswu\pyramid\"
ProgramDataBaseFileName="vc_mswu\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswu;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31u_gl.lib opengl32.lib glu32.lib wxmsw31u_core.lib wxbase31u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswu\pyramid.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_lib"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswu\pyramid.pdb"
SubSystem="2"
TargetMachine="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswu\pyramid_vc8.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DLL Debug|Win32"
OutputDirectory="vc_mswuddll"
IntermediateDirectory="vc_mswuddll\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswud;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswud;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
MinimalRebuild="true"
ExceptionHandling="1"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
BufferSecurityCheck="true"
RuntimeTypeInfo="true"
ObjectFile="vc_mswuddll\pyramid\"
ProgramDataBaseFileName="vc_mswuddll\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswud;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31ud_gl.lib opengl32.lib glu32.lib wxmsw31ud_core.lib wxbase31ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswuddll\pyramid.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_dll"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswuddll\pyramid.pdb"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswuddll\pyramid_vc8.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DLL Release|Win32"
OutputDirectory="vc_mswudll"
IntermediateDirectory="vc_mswudll\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswu;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswu;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
ExceptionHandling="1"
RuntimeLibrary="2"
RuntimeTypeInfo="true"
ObjectFile="vc_mswudll\pyramid\"
ProgramDataBaseFileName="vc_mswudll\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswu;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31u_gl.lib opengl32.lib glu32.lib wxmsw31u_core.lib wxbase31u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswudll\pyramid.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_dll"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswudll\pyramid.pdb"
SubSystem="2"
TargetMachine="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswudll\pyramid_vc8.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="vc_mswud_x64"
IntermediateDirectory="vc_mswud_x64\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_lib\mswud;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_lib\mswud;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;_WINDOWS;NOPCH"
MinimalRebuild="true"
ExceptionHandling="1"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
BufferSecurityCheck="true"
RuntimeTypeInfo="true"
ObjectFile="vc_mswud_x64\pyramid\"
ProgramDataBaseFileName="vc_mswud_x64\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_lib\mswud;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31ud_gl.lib opengl32.lib glu32.lib wxmsw31ud_core.lib wxbase31ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswud_x64\pyramid.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_x64_lib"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswud_x64\pyramid.pdb"
SubSystem="2"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswud_x64\pyramid_vc8.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="vc_mswu_x64"
IntermediateDirectory="vc_mswu_x64\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_lib\mswu;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_lib\mswu;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;_WINDOWS;NOPCH"
ExceptionHandling="1"
RuntimeLibrary="2"
RuntimeTypeInfo="true"
ObjectFile="vc_mswu_x64\pyramid\"
ProgramDataBaseFileName="vc_mswu_x64\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_lib\mswu;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31u_gl.lib opengl32.lib glu32.lib wxmsw31u_core.lib wxbase31u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswu_x64\pyramid.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_x64_lib"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswu_x64\pyramid.pdb"
SubSystem="2"
TargetMachine="17"
OptimizeReferences="2"
EnableCOMDATFolding="2"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswu_x64\pyramid_vc8.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DLL Debug|x64"
OutputDirectory="vc_mswuddll_x64"
IntermediateDirectory="vc_mswuddll_x64\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_dll\mswud;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_dll\mswud;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
MinimalRebuild="true"
ExceptionHandling="1"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
BufferSecurityCheck="true"
RuntimeTypeInfo="true"
ObjectFile="vc_mswuddll_x64\pyramid\"
ProgramDataBaseFileName="vc_mswuddll_x64\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_dll\mswud;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31ud_gl.lib opengl32.lib glu32.lib wxmsw31ud_core.lib wxbase31ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswuddll_x64\pyramid.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_x64_dll"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswuddll_x64\pyramid.pdb"
SubSystem="2"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswuddll_x64\pyramid_vc8.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DLL Release|x64"
OutputDirectory="vc_mswudll_x64"
IntermediateDirectory="vc_mswudll_x64\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_dll\mswu;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_dll\mswu;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
ExceptionHandling="1"
RuntimeLibrary="2"
RuntimeTypeInfo="true"
ObjectFile="vc_mswudll_x64\pyramid\"
ProgramDataBaseFileName="vc_mswudll_x64\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_dll\mswu;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31u_gl.lib opengl32.lib glu32.lib wxmsw31u_core.lib wxbase31u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswudll_x64\pyramid.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_x64_dll"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswudll_x64\pyramid.pdb"
SubSystem="2"
TargetMachine="17"
OptimizeReferences="2"
EnableCOMDATFolding="2"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswudll_x64\pyramid_vc8.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\mathstuff.cpp"
>
</File>
<File
RelativePath=".\oglpfuncs.cpp"
>
</File>
<File
RelativePath=".\oglstuff.cpp"
>
</File>
<File
RelativePath=".\pyramid.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\mathstuff.h"
>
</File>
<File
RelativePath=".\oglpfuncs.h"
>
</File>
<File
RelativePath=".\oglstuff.h"
>
</File>
<File
RelativePath=".\pyramid.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
<File
RelativePath="..\..\..\samples\sample.rc"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,835 @@
<?xml version="1.0" encoding="Windows-1252"?>
<!--
This project was generated by
Bakefile 0.2.9 (http://www.bakefile.org)
Do not modify, all changes will be overwritten!
-->
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="pyramid"
ProjectGUID="{A37DC15B-4138-5DA9-863C-4A8016D3E1CD}"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="vc_mswud"
IntermediateDirectory="vc_mswud\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswud;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="0"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswud;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;_WINDOWS;NOPCH"
ExceptionHandling="1"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
BufferSecurityCheck="true"
RuntimeTypeInfo="true"
ObjectFile="vc_mswud\pyramid\"
ProgramDataBaseFileName="vc_mswud\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswud;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31ud_gl.lib opengl32.lib glu32.lib wxmsw31ud_core.lib wxbase31ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswud\pyramid.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_lib"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswud\pyramid.pdb"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswud\pyramid_vc9.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="vc_mswu"
IntermediateDirectory="vc_mswu\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswu;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="2"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswu;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;_WINDOWS;NOPCH"
ExceptionHandling="1"
RuntimeLibrary="2"
RuntimeTypeInfo="true"
ObjectFile="vc_mswu\pyramid\"
ProgramDataBaseFileName="vc_mswu\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswu;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31u_gl.lib opengl32.lib glu32.lib wxmsw31u_core.lib wxbase31u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswu\pyramid.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_lib"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswu\pyramid.pdb"
SubSystem="2"
TargetMachine="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswu\pyramid_vc9.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DLL Debug|Win32"
OutputDirectory="vc_mswuddll"
IntermediateDirectory="vc_mswuddll\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswud;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="0"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswud;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
ExceptionHandling="1"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
BufferSecurityCheck="true"
RuntimeTypeInfo="true"
ObjectFile="vc_mswuddll\pyramid\"
ProgramDataBaseFileName="vc_mswuddll\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswud;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31ud_gl.lib opengl32.lib glu32.lib wxmsw31ud_core.lib wxbase31ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswuddll\pyramid.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_dll"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswuddll\pyramid.pdb"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswuddll\pyramid_vc9.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DLL Release|Win32"
OutputDirectory="vc_mswudll"
IntermediateDirectory="vc_mswudll\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswu;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="2"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswu;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
ExceptionHandling="1"
RuntimeLibrary="2"
RuntimeTypeInfo="true"
ObjectFile="vc_mswudll\pyramid\"
ProgramDataBaseFileName="vc_mswudll\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswu;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31u_gl.lib opengl32.lib glu32.lib wxmsw31u_core.lib wxbase31u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswudll\pyramid.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_dll"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswudll\pyramid.pdb"
SubSystem="2"
TargetMachine="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswudll\pyramid_vc9.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="vc_mswud_x64"
IntermediateDirectory="vc_mswud_x64\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_lib\mswud;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="0"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_lib\mswud;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;_WINDOWS;NOPCH"
ExceptionHandling="1"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
BufferSecurityCheck="true"
RuntimeTypeInfo="true"
ObjectFile="vc_mswud_x64\pyramid\"
ProgramDataBaseFileName="vc_mswud_x64\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_lib\mswud;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31ud_gl.lib opengl32.lib glu32.lib wxmsw31ud_core.lib wxbase31ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswud_x64\pyramid.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_x64_lib"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswud_x64\pyramid.pdb"
SubSystem="2"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswud_x64\pyramid_vc9.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="vc_mswu_x64"
IntermediateDirectory="vc_mswu_x64\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_lib\mswu;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="2"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_lib\mswu;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;_WINDOWS;NOPCH"
ExceptionHandling="1"
RuntimeLibrary="2"
RuntimeTypeInfo="true"
ObjectFile="vc_mswu_x64\pyramid\"
ProgramDataBaseFileName="vc_mswu_x64\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_lib\mswu;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31u_gl.lib opengl32.lib glu32.lib wxmsw31u_core.lib wxbase31u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswu_x64\pyramid.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_x64_lib"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswu_x64\pyramid.pdb"
SubSystem="2"
TargetMachine="17"
OptimizeReferences="2"
EnableCOMDATFolding="2"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswu_x64\pyramid_vc9.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DLL Debug|x64"
OutputDirectory="vc_mswuddll_x64"
IntermediateDirectory="vc_mswuddll_x64\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_dll\mswud;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="0"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_dll\mswud;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
ExceptionHandling="1"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
BufferSecurityCheck="true"
RuntimeTypeInfo="true"
ObjectFile="vc_mswuddll_x64\pyramid\"
ProgramDataBaseFileName="vc_mswuddll_x64\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_dll\mswud;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31ud_gl.lib opengl32.lib glu32.lib wxmsw31ud_core.lib wxbase31ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswuddll_x64\pyramid.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_x64_dll"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswuddll_x64\pyramid.pdb"
SubSystem="2"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswuddll_x64\pyramid_vc9.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DLL Release|x64"
OutputDirectory="vc_mswudll_x64"
IntermediateDirectory="vc_mswudll_x64\pyramid"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_dll\mswu;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="2"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_dll\mswu;.\..\..\..\include;.;.\..\..\..\samples"
PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
ExceptionHandling="1"
RuntimeLibrary="2"
RuntimeTypeInfo="true"
ObjectFile="vc_mswudll_x64\pyramid\"
ProgramDataBaseFileName="vc_mswudll_x64\pyramid.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_x64_dll\mswu;.\..\..\..\include;.;.\..\..\..\samples"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=""
AdditionalDependencies="wxmsw31u_gl.lib opengl32.lib glu32.lib wxmsw31u_core.lib wxbase31u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib"
OutputFile="vc_mswudll_x64\pyramid.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_x64_dll"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswudll_x64\pyramid.pdb"
SubSystem="2"
TargetMachine="17"
OptimizeReferences="2"
EnableCOMDATFolding="2"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswudll_x64\pyramid_vc9.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\mathstuff.cpp"
>
</File>
<File
RelativePath=".\oglpfuncs.cpp"
>
</File>
<File
RelativePath=".\oglstuff.cpp"
>
</File>
<File
RelativePath=".\pyramid.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\mathstuff.h"
>
</File>
<File
RelativePath=".\oglpfuncs.h"
>
</File>
<File
RelativePath=".\oglstuff.h"
>
</File>
<File
RelativePath=".\pyramid.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
<File
RelativePath="..\..\..\samples\sample.rc"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>