mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 11:09:42 +02:00
* gtkglext from mischi. examples part
This commit is contained in:
parent
7cfddf2446
commit
6b536368f0
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Don't edit, this file is generated by FPCMake Version 1.9.8 [2005/02/09]
|
||||
# Don't edit, this file is generated by FPCMake Version 1.9.8 [2005/02/28]
|
||||
#
|
||||
default: all
|
||||
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-emx i386-watcom i386-netwlibc m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd arm-linux
|
||||
@ -231,103 +231,103 @@ UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
|
||||
endif
|
||||
PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
|
||||
ifeq ($(FULL_TARGET),i386-linux)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-go32v2)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-win32)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-os2)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-freebsd)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-beos)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netbsd)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-solaris)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-qnx)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netware)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-openbsd)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-wdosx)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-emx)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-watcom)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netwlibc)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-linux)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-freebsd)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-netbsd)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-amiga)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-atari)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-openbsd)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-palmos)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-linux)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-netbsd)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-macos)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-darwin)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-morphos)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-linux)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-netbsd)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-solaris)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-linux)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-freebsd)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-linux)
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
override TARGET_DIRS+=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
endif
|
||||
override INSTALL_FPCPACKAGE=y
|
||||
ifdef REQUIRE_UNITSDIR
|
||||
@ -1078,7 +1078,7 @@ export UPXPROG
|
||||
ZIPOPT=-9
|
||||
ZIPEXT=.zip
|
||||
ifeq ($(USETAR),bz2)
|
||||
TAROPT=vI
|
||||
TAROPT=vj
|
||||
TAREXT=.tar.bz2
|
||||
else
|
||||
TAROPT=vz
|
||||
@ -1529,6 +1529,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-go32v2)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1537,6 +1538,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-win32)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1545,6 +1547,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-os2)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1553,6 +1556,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-freebsd)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1561,6 +1565,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-beos)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1569,6 +1574,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netbsd)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1577,6 +1583,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-solaris)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1585,6 +1592,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-qnx)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1593,6 +1601,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netware)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1601,6 +1610,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-openbsd)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1609,6 +1619,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-wdosx)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1617,6 +1628,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-emx)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1625,6 +1637,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-watcom)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1633,6 +1646,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netwlibc)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1641,6 +1655,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-linux)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1649,6 +1664,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-freebsd)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1657,6 +1673,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-netbsd)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1665,6 +1682,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-amiga)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1673,6 +1691,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-atari)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1681,6 +1700,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-openbsd)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1689,6 +1709,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-palmos)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1697,6 +1718,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-linux)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1705,6 +1727,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-netbsd)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1713,6 +1736,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-macos)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1721,6 +1745,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-darwin)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1729,6 +1754,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-morphos)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1737,6 +1763,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-linux)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1745,6 +1772,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-netbsd)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1753,6 +1781,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-solaris)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1761,6 +1790,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-linux)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1769,6 +1799,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-freebsd)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1777,6 +1808,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-linux)
|
||||
TARGET_DIRS_HELLOWORLD=1
|
||||
@ -1785,6 +1817,7 @@ TARGET_DIRS_GTK_DEMO=1
|
||||
TARGET_DIRS_GETTINGSTARTED=1
|
||||
TARGET_DIRS_PLUGINS=1
|
||||
TARGET_DIRS_SCRIBBLE_SIMPLE=1
|
||||
TARGET_DIRS_GTKGLEXT=1
|
||||
endif
|
||||
ifdef TARGET_DIRS_HELLOWORLD
|
||||
helloworld_all:
|
||||
@ -2056,6 +2089,51 @@ scribble_simple:
|
||||
$(MAKE) -C scribble_simple all
|
||||
.PHONY: scribble_simple_all scribble_simple_debug scribble_simple_smart scribble_simple_release scribble_simple_units scribble_simple_examples scribble_simple_shared scribble_simple_install scribble_simple_sourceinstall scribble_simple_exampleinstall scribble_simple_distinstall scribble_simple_zipinstall scribble_simple_zipsourceinstall scribble_simple_zipexampleinstall scribble_simple_zipdistinstall scribble_simple_clean scribble_simple_distclean scribble_simple_cleanall scribble_simple_info scribble_simple_makefiles scribble_simple
|
||||
endif
|
||||
ifdef TARGET_DIRS_GTKGLEXT
|
||||
gtkglext_all:
|
||||
$(MAKE) -C gtkglext all
|
||||
gtkglext_debug:
|
||||
$(MAKE) -C gtkglext debug
|
||||
gtkglext_smart:
|
||||
$(MAKE) -C gtkglext smart
|
||||
gtkglext_release:
|
||||
$(MAKE) -C gtkglext release
|
||||
gtkglext_units:
|
||||
$(MAKE) -C gtkglext units
|
||||
gtkglext_examples:
|
||||
$(MAKE) -C gtkglext examples
|
||||
gtkglext_shared:
|
||||
$(MAKE) -C gtkglext shared
|
||||
gtkglext_install:
|
||||
$(MAKE) -C gtkglext install
|
||||
gtkglext_sourceinstall:
|
||||
$(MAKE) -C gtkglext sourceinstall
|
||||
gtkglext_exampleinstall:
|
||||
$(MAKE) -C gtkglext exampleinstall
|
||||
gtkglext_distinstall:
|
||||
$(MAKE) -C gtkglext distinstall
|
||||
gtkglext_zipinstall:
|
||||
$(MAKE) -C gtkglext zipinstall
|
||||
gtkglext_zipsourceinstall:
|
||||
$(MAKE) -C gtkglext zipsourceinstall
|
||||
gtkglext_zipexampleinstall:
|
||||
$(MAKE) -C gtkglext zipexampleinstall
|
||||
gtkglext_zipdistinstall:
|
||||
$(MAKE) -C gtkglext zipdistinstall
|
||||
gtkglext_clean:
|
||||
$(MAKE) -C gtkglext clean
|
||||
gtkglext_distclean:
|
||||
$(MAKE) -C gtkglext distclean
|
||||
gtkglext_cleanall:
|
||||
$(MAKE) -C gtkglext cleanall
|
||||
gtkglext_info:
|
||||
$(MAKE) -C gtkglext info
|
||||
gtkglext_makefiles:
|
||||
$(MAKE) -C gtkglext makefiles
|
||||
gtkglext:
|
||||
$(MAKE) -C gtkglext all
|
||||
.PHONY: gtkglext_all gtkglext_debug gtkglext_smart gtkglext_release gtkglext_units gtkglext_examples gtkglext_shared gtkglext_install gtkglext_sourceinstall gtkglext_exampleinstall gtkglext_distinstall gtkglext_zipinstall gtkglext_zipsourceinstall gtkglext_zipexampleinstall gtkglext_zipdistinstall gtkglext_clean gtkglext_distclean gtkglext_cleanall gtkglext_info gtkglext_makefiles gtkglext
|
||||
endif
|
||||
all: $(addsuffix _all,$(TARGET_DIRS))
|
||||
debug: $(addsuffix _debug,$(TARGET_DIRS))
|
||||
smart: $(addsuffix _smart,$(TARGET_DIRS))
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
|
||||
[target]
|
||||
dirs=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple
|
||||
dirs=helloworld helloworld2 gtk_demo gettingstarted plugins scribble_simple gtkglext
|
||||
#filechooser - doesn't work yet
|
||||
|
||||
[require]
|
||||
|
1836
packages/extra/gtk2/examples/gtkglext/Makefile
Normal file
1836
packages/extra/gtk2/examples/gtkglext/Makefile
Normal file
File diff suppressed because it is too large
Load Diff
15
packages/extra/gtk2/examples/gtkglext/Makefile.fpc
Normal file
15
packages/extra/gtk2/examples/gtkglext/Makefile.fpc
Normal file
@ -0,0 +1,15 @@
|
||||
#
|
||||
# Makefile.fpc for Free Pascal GTK 2.x.y Examples
|
||||
#
|
||||
|
||||
[target]
|
||||
programs=gears
|
||||
|
||||
[require]
|
||||
packages=gtk2 opengl
|
||||
|
||||
[install]
|
||||
fpcpackage=y
|
||||
|
||||
[default]
|
||||
fpcdir=../../../../..
|
558
packages/extra/gtk2/examples/gtkglext/gears.pas
Normal file
558
packages/extra/gtk2/examples/gtkglext/gears.pas
Normal file
@ -0,0 +1,558 @@
|
||||
{ 3-D gear wheels. This program is in the public domain.
|
||||
Brian Paul
|
||||
Conversion to GLUT by Mark J. Kilgard
|
||||
Conversion to GtkGLExt by Naofumi Yasufuku
|
||||
Conversion to Pascal binding of GtkGLExt by Michalis Kamburelis
|
||||
}
|
||||
|
||||
{$mode delphi}
|
||||
|
||||
uses Glib2, Gtk2, Gdk2, GdkGLExt, GtkGLExt, gl;
|
||||
|
||||
{*
|
||||
* Draw a gear wheel. You'll probably want to call this function when
|
||||
* building a display list since we do a lot of trig here.
|
||||
*
|
||||
* Input: inner_radius - radius of hole at center
|
||||
* outer_radius - radius at center of teeth
|
||||
* width - width of gear
|
||||
* teeth - number of teeth
|
||||
* tooth_depth - depth of tooth
|
||||
*}
|
||||
|
||||
procedure gear(
|
||||
inner_radius, outer_radius, width: GLfloat;
|
||||
teeth: GLint;
|
||||
tooth_depth: GLfloat);
|
||||
var
|
||||
i: GLint;
|
||||
r0, r1, r2: GLfloat;
|
||||
angle, da: GLfloat;
|
||||
u, v, len: GLfloat;
|
||||
begin
|
||||
r0 := inner_radius;
|
||||
r1 := outer_radius - tooth_depth / 2.0;
|
||||
r2 := outer_radius + tooth_depth / 2.0;
|
||||
|
||||
da := 2.0 * Pi / teeth / 4.0;
|
||||
|
||||
glShadeModel(GL_FLAT);
|
||||
|
||||
glNormal3f(0.0, 0.0, 1.0);
|
||||
|
||||
{* draw front face *}
|
||||
glBegin(GL_QUAD_STRIP);
|
||||
for i := 0 to teeth do
|
||||
begin
|
||||
angle := i * 2.0 * Pi / teeth;
|
||||
glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
|
||||
glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
|
||||
if i < teeth then
|
||||
begin
|
||||
glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
|
||||
glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5);
|
||||
end;
|
||||
end;
|
||||
glEnd();
|
||||
|
||||
{* draw front sides of teeth *}
|
||||
glBegin(GL_QUADS);
|
||||
da := 2.0 * Pi / teeth / 4.0;
|
||||
for i := 0 to teeth - 1 do
|
||||
begin
|
||||
angle := i * 2.0 * Pi / teeth;
|
||||
|
||||
glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
|
||||
glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5);
|
||||
glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5);
|
||||
glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5);
|
||||
end;
|
||||
glEnd();
|
||||
|
||||
glNormal3f(0.0, 0.0, -1.0);
|
||||
|
||||
{* draw back face *}
|
||||
glBegin(GL_QUAD_STRIP);
|
||||
for i := 0 to teeth do
|
||||
begin
|
||||
angle := i * 2.0 * Pi / teeth;
|
||||
glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
|
||||
glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
|
||||
if i < teeth then
|
||||
begin
|
||||
glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5);
|
||||
glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
|
||||
end;
|
||||
end;
|
||||
glEnd();
|
||||
|
||||
{* draw back sides of teeth *}
|
||||
glBegin(GL_QUADS);
|
||||
da := 2.0 * Pi / teeth / 4.0;
|
||||
for i := 0 to teeth - 1 do
|
||||
begin
|
||||
angle := i * 2.0 * Pi / teeth;
|
||||
|
||||
glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5);
|
||||
glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5);
|
||||
glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5);
|
||||
glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
|
||||
end;
|
||||
glEnd();
|
||||
|
||||
{* draw outward faces of teeth *}
|
||||
glBegin(GL_QUAD_STRIP);
|
||||
for i := 0 to teeth - 1 do
|
||||
begin
|
||||
angle := i * 2.0 * Pi / teeth;
|
||||
|
||||
glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
|
||||
glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
|
||||
u := r2 * cos(angle + da) - r1 * cos(angle);
|
||||
v := r2 * sin(angle + da) - r1 * sin(angle);
|
||||
len := sqrt(u * u + v * v);
|
||||
u := u / len;
|
||||
v := v / len;
|
||||
glNormal3f(v, -u, 0.0);
|
||||
glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5);
|
||||
glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5);
|
||||
glNormal3f(cos(angle), sin(angle), 0.0);
|
||||
glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5);
|
||||
glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5);
|
||||
u := r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da);
|
||||
v := r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da);
|
||||
glNormal3f(v, -u, 0.0);
|
||||
glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5);
|
||||
glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5);
|
||||
glNormal3f(cos(angle), sin(angle), 0.0);
|
||||
end;
|
||||
|
||||
glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5);
|
||||
glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5);
|
||||
|
||||
glEnd();
|
||||
|
||||
glShadeModel(GL_SMOOTH);
|
||||
|
||||
{* draw inside radius cylinder *}
|
||||
glBegin(GL_QUAD_STRIP);
|
||||
for i := 0 to teeth do
|
||||
begin
|
||||
angle := i * 2.0 * Pi / teeth;
|
||||
glNormal3f(-cos(angle), -sin(angle), 0.0);
|
||||
glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
|
||||
glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
|
||||
end;
|
||||
glEnd();
|
||||
|
||||
end;
|
||||
|
||||
var
|
||||
view_rotx: GLfloat = 20.0;
|
||||
view_roty: GLfloat = 30.0;
|
||||
view_rotz: GLfloat = 0.0;
|
||||
gear1, gear2, gear3: GLint;
|
||||
angle: GLfloat = 0.0;
|
||||
|
||||
timer: PGTimer = nil;
|
||||
frames: gint = 0;
|
||||
|
||||
is_sync: boolean = true;
|
||||
|
||||
function draw(
|
||||
widget: PGtkWidget;
|
||||
event: PGdkEventExpose;
|
||||
data: gpointer): gboolean; cdecl;
|
||||
var
|
||||
seconds: gdouble;
|
||||
fps: gdouble;
|
||||
glcontext: PGdkGLContext;
|
||||
gldrawable: PGdkGLDrawable;
|
||||
begin
|
||||
glcontext := gtk_widget_get_gl_context (widget);
|
||||
gldrawable := gtk_widget_get_gl_drawable (widget);
|
||||
|
||||
{*** OpenGL BEGIN ***}
|
||||
if not gdk_gl_drawable_gl_begin (gldrawable, glcontext) then
|
||||
Exit(false);
|
||||
|
||||
glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
glPushMatrix ();
|
||||
glRotatef (view_rotx, 1.0, 0.0, 0.0);
|
||||
glRotatef (view_roty, 0.0, 1.0, 0.0);
|
||||
glRotatef (view_rotz, 0.0, 0.0, 1.0);
|
||||
|
||||
glPushMatrix ();
|
||||
glTranslatef (-3.0, -2.0, 0.0);
|
||||
glRotatef (angle, 0.0, 0.0, 1.0);
|
||||
glCallList (gear1);
|
||||
glPopMatrix ();
|
||||
|
||||
glPushMatrix ();
|
||||
glTranslatef (3.1, -2.0, 0.0);
|
||||
glRotatef (-2.0 * angle - 9.0, 0.0, 0.0, 1.0);
|
||||
glCallList (gear2);
|
||||
glPopMatrix ();
|
||||
|
||||
glPushMatrix ();
|
||||
glTranslatef (-3.1, 4.2, 0.0);
|
||||
glRotatef (-2.0 * angle - 25.0, 0.0, 0.0, 1.0);
|
||||
glCallList (gear3);
|
||||
glPopMatrix ();
|
||||
|
||||
glPopMatrix ();
|
||||
|
||||
if gdk_gl_drawable_is_double_buffered (gldrawable) then
|
||||
gdk_gl_drawable_swap_buffers (gldrawable) else
|
||||
glFlush ();
|
||||
|
||||
gdk_gl_drawable_gl_end (gldrawable);
|
||||
{*** OpenGL END ***}
|
||||
|
||||
Inc(frames);
|
||||
|
||||
seconds := g_timer_elapsed (timer, NULL);
|
||||
if seconds >= 5.0 then
|
||||
begin
|
||||
fps := frames / seconds;
|
||||
g_print ('%d frames in %6.3f seconds = %6.3f FPS' + LineEnding, [frames, seconds, fps]);
|
||||
g_timer_reset (timer);
|
||||
frames := 0;
|
||||
end;
|
||||
|
||||
Result := true;
|
||||
end;
|
||||
|
||||
{* new window size or exposure *}
|
||||
function reshape (
|
||||
widget: PGtkWidget;
|
||||
event: PGdkEventConfigure;
|
||||
data: gpointer): gboolean; cdecl;
|
||||
var
|
||||
glcontext: PGdkGLContext;
|
||||
gldrawable: PGdkGLDrawable;
|
||||
h: GLfloat;
|
||||
begin
|
||||
glcontext := gtk_widget_get_gl_context (widget);
|
||||
gldrawable := gtk_widget_get_gl_drawable (widget);
|
||||
|
||||
h := widget.allocation.height / widget.allocation.width;
|
||||
|
||||
{*** OpenGL BEGIN ***}
|
||||
if not gdk_gl_drawable_gl_begin (gldrawable, glcontext) then
|
||||
Exit(false);
|
||||
|
||||
glViewport (0, 0, widget.allocation.width, widget.allocation.height);
|
||||
glMatrixMode (GL_PROJECTION);
|
||||
glLoadIdentity ();
|
||||
glFrustum (-1.0, 1.0, -h, h, 5.0, 60.0);
|
||||
glMatrixMode (GL_MODELVIEW);
|
||||
glLoadIdentity ();
|
||||
glTranslatef (0.0, 0.0, -40.0);
|
||||
|
||||
gdk_gl_drawable_gl_end (gldrawable);
|
||||
{*** OpenGL END ***}
|
||||
|
||||
Result := true;
|
||||
end;
|
||||
|
||||
procedure init(
|
||||
widget: PGtkWidget;
|
||||
data: gpointer); cdecl;
|
||||
const
|
||||
pos: array[0..3] of GLfloat = (5.0, 5.0, 10.0, 0.0);
|
||||
red: array[0..3] of GLfloat = (0.8, 0.1, 0.0, 1.0);
|
||||
green: array[0..3] of GLfloat = (0.0, 0.8, 0.2, 1.0);
|
||||
blue: array[0..3] of GLfloat = (0.2, 0.2, 1.0, 1.0);
|
||||
var
|
||||
glcontext: PGdkGLContext;
|
||||
gldrawable: PGdkGLDrawable;
|
||||
begin
|
||||
glcontext := gtk_widget_get_gl_context (widget);
|
||||
gldrawable := gtk_widget_get_gl_drawable (widget);
|
||||
|
||||
{*** OpenGL BEGIN ***}
|
||||
if not gdk_gl_drawable_gl_begin (gldrawable, glcontext) then
|
||||
Exit;
|
||||
|
||||
glLightfv (GL_LIGHT0, GL_POSITION, pos);
|
||||
glEnable (GL_CULL_FACE);
|
||||
glEnable (GL_LIGHTING);
|
||||
glEnable (GL_LIGHT0);
|
||||
glEnable (GL_DEPTH_TEST);
|
||||
|
||||
{* make the gears *}
|
||||
gear1 := glGenLists (1);
|
||||
glNewList (gear1, GL_COMPILE);
|
||||
glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red);
|
||||
gear (1.0, 4.0, 1.0, 20, 0.7);
|
||||
glEndList ();
|
||||
|
||||
gear2 := glGenLists (1);
|
||||
glNewList (gear2, GL_COMPILE);
|
||||
glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green);
|
||||
gear (0.5, 2.0, 2.0, 10, 0.7);
|
||||
glEndList ();
|
||||
|
||||
gear3 := glGenLists (1);
|
||||
glNewList (gear3, GL_COMPILE);
|
||||
glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue);
|
||||
gear (1.3, 2.0, 0.5, 10, 0.7);
|
||||
glEndList ();
|
||||
|
||||
glEnable (GL_NORMALIZE);
|
||||
|
||||
g_print (LineEnding);
|
||||
g_print ('GL_RENDERER = %s' + LineEnding, [glGetString (GL_RENDERER)]);
|
||||
g_print ('GL_VERSION = %s' + LineEnding, [glGetString (GL_VERSION)]);
|
||||
g_print ('GL_VENDOR = %s' + LineEnding, [glGetString (GL_VENDOR)]);
|
||||
g_print ('GL_EXTENSIONS = %s' + LineEnding, [glGetString (GL_EXTENSIONS)]);
|
||||
g_print (LineEnding);
|
||||
|
||||
gdk_gl_drawable_gl_end (gldrawable);
|
||||
{*** OpenGL END ***}
|
||||
|
||||
{* create timer *}
|
||||
if timer = nil then
|
||||
timer := g_timer_new ();
|
||||
|
||||
g_timer_start (timer);
|
||||
end;
|
||||
|
||||
function idle (widget: PGtkWidget): gboolean; cdecl;
|
||||
begin
|
||||
angle := angle + 2.0;
|
||||
|
||||
{* Invalidate the whole window. *}
|
||||
gdk_window_invalidate_rect (widget.window, @widget.allocation, false);
|
||||
|
||||
{* Update synchronously (fast). *}
|
||||
if is_sync then
|
||||
gdk_window_process_updates (widget.window, false);
|
||||
|
||||
Result := true;
|
||||
end;
|
||||
|
||||
var
|
||||
idle_id: guint = 0;
|
||||
|
||||
procedure idle_add (widget: PGtkWidget); cdecl;
|
||||
begin
|
||||
if idle_id = 0 then
|
||||
begin
|
||||
idle_id := g_idle_add_full (GDK_PRIORITY_REDRAW,
|
||||
TGSourceFunc(@idle),
|
||||
widget,
|
||||
NULL);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure idle_remove (widget: PGtkWidget); cdecl;
|
||||
begin
|
||||
if idle_id <> 0 then
|
||||
begin
|
||||
g_source_remove (idle_id);
|
||||
idle_id := 0;
|
||||
end;
|
||||
end;
|
||||
|
||||
function map (
|
||||
widget: PGtkWidget;
|
||||
event: PGdkEventAny;
|
||||
data: gpointer): gboolean; cdecl;
|
||||
begin
|
||||
idle_add (widget);
|
||||
|
||||
Result := true;
|
||||
end;
|
||||
|
||||
function unmap (
|
||||
widget: PGtkWidget;
|
||||
event: PGdkEventAny;
|
||||
data: gpointer): gboolean; cdecl;
|
||||
begin
|
||||
idle_remove (widget);
|
||||
|
||||
Result := true;
|
||||
end;
|
||||
|
||||
function visible (
|
||||
widget: PGtkWidget;
|
||||
event: PGdkEventVisibility;
|
||||
data: gpointer): gboolean; cdecl;
|
||||
begin
|
||||
if event.state = GDK_VISIBILITY_FULLY_OBSCURED then
|
||||
idle_remove (widget) else
|
||||
idle_add (widget);
|
||||
|
||||
Result := true;
|
||||
end;
|
||||
|
||||
{* change view angle, exit upon ESC *}
|
||||
function key (
|
||||
widget: PGtkWidget;
|
||||
event: PGdkEventKey;
|
||||
data: gpointer): gboolean; cdecl;
|
||||
begin
|
||||
case event.keyval of
|
||||
GDK_KEY_z : view_rotz := view_rotz + 5.0;
|
||||
GDK_KEY_Capital_Z : view_rotz := view_rotz - 5.0;
|
||||
GDK_KEY_Up : view_roty := view_roty + 5.0;
|
||||
GDK_KEY_Down : view_roty := view_roty - 5.0;
|
||||
GDK_KEY_Left : view_rotx := view_rotx + 5.0;
|
||||
GDK_KEY_Right : view_rotx := view_rotx - 5.0;
|
||||
GDK_KEY_Escape : gtk_main_quit ();
|
||||
else Exit(false);
|
||||
end;
|
||||
|
||||
gdk_window_invalidate_rect (widget.window, @widget.allocation, FALSE);
|
||||
|
||||
Result := true;
|
||||
end;
|
||||
|
||||
var
|
||||
glconfig: PGdkGLConfig;
|
||||
window: PGtkWidget;
|
||||
vbox: PGtkWidget;
|
||||
drawing_area: PGtkWidget;
|
||||
button: PGtkWidget;
|
||||
i: Integer;
|
||||
begin
|
||||
|
||||
{*
|
||||
* Init GTK.
|
||||
*}
|
||||
|
||||
gtk_init (@argc, @argv);
|
||||
|
||||
{*
|
||||
* Init GtkGLExt.
|
||||
*}
|
||||
|
||||
gtk_gl_init (@argc, @argv);
|
||||
|
||||
{*
|
||||
* Command line options.
|
||||
*}
|
||||
|
||||
for i := 1 to ParamCount do
|
||||
if ParamStr(i) = '--async' then
|
||||
is_sync := FALSE;
|
||||
|
||||
{*
|
||||
* Configure OpenGL-capable visual.
|
||||
*}
|
||||
|
||||
{* Try double-buffered visual *}
|
||||
glconfig := gdk_gl_config_new_by_mode (GDK_GL_MODE_RGB or
|
||||
GDK_GL_MODE_DEPTH or
|
||||
GDK_GL_MODE_DOUBLE);
|
||||
if glconfig = nil then
|
||||
begin
|
||||
g_print ('*** Cannot find the double-buffered visual.' +LineEnding);
|
||||
g_print ('*** Trying single-buffered visual.' +LineEnding);
|
||||
|
||||
{* Try single-buffered visual *}
|
||||
glconfig := gdk_gl_config_new_by_mode (GDK_GL_MODE_RGB or
|
||||
GDK_GL_MODE_DEPTH);
|
||||
if glconfig = nil then
|
||||
begin
|
||||
g_print ('*** No appropriate OpenGL-capable visual found.' +LineEnding);
|
||||
Halt(1);
|
||||
end;
|
||||
end;
|
||||
|
||||
{*
|
||||
* Top-level window.
|
||||
*}
|
||||
|
||||
window := gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title (GTK_WINDOW (window), 'gears');
|
||||
|
||||
{* Get automatically redrawn if any of their children changed allocation. *}
|
||||
gtk_container_set_reallocate_redraws (GTK_CONTAINER (window), TRUE);
|
||||
|
||||
g_signal_connect (G_OBJECT (window), 'delete_event',
|
||||
G_CALLBACK (@gtk_main_quit), NULL);
|
||||
|
||||
{*
|
||||
* VBox.
|
||||
*}
|
||||
|
||||
vbox := gtk_vbox_new (FALSE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
gtk_widget_show (vbox);
|
||||
|
||||
{*
|
||||
* Drawing area for drawing OpenGL scene.
|
||||
*}
|
||||
|
||||
drawing_area := gtk_drawing_area_new ();
|
||||
gtk_widget_set_size_request (drawing_area, 300, 300);
|
||||
|
||||
{* Set OpenGL-capability to the widget. *}
|
||||
gtk_widget_set_gl_capability (drawing_area,
|
||||
glconfig,
|
||||
NULL,
|
||||
TRUE,
|
||||
GDK_GL_RGBA_TYPE);
|
||||
|
||||
gtk_widget_add_events (drawing_area,
|
||||
GDK_VISIBILITY_NOTIFY_MASK);
|
||||
|
||||
g_signal_connect_after (G_OBJECT (drawing_area), 'realize',
|
||||
G_CALLBACK (@init), NULL);
|
||||
g_signal_connect (G_OBJECT (drawing_area), 'configure_event',
|
||||
G_CALLBACK (@reshape), NULL);
|
||||
g_signal_connect (G_OBJECT (drawing_area), 'expose_event',
|
||||
G_CALLBACK (@draw), NULL);
|
||||
g_signal_connect (G_OBJECT (drawing_area), 'map_event',
|
||||
G_CALLBACK (@map), NULL);
|
||||
g_signal_connect (G_OBJECT (drawing_area), 'unmap_event',
|
||||
G_CALLBACK (@unmap), NULL);
|
||||
g_signal_connect (G_OBJECT (drawing_area), 'visibility_notify_event',
|
||||
G_CALLBACK (@visible), NULL);
|
||||
|
||||
g_signal_connect_swapped (G_OBJECT (window), 'key_press_event',
|
||||
G_CALLBACK (@key), drawing_area);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox), drawing_area, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show (drawing_area);
|
||||
|
||||
{*
|
||||
* Simple quit button.
|
||||
*}
|
||||
|
||||
button := gtk_button_new_with_label ('Quit');
|
||||
|
||||
g_signal_connect (G_OBJECT (button), 'clicked',
|
||||
G_CALLBACK (@gtk_main_quit), NULL);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
|
||||
|
||||
gtk_widget_show (button);
|
||||
|
||||
{*
|
||||
* Show window.
|
||||
*}
|
||||
|
||||
gtk_widget_show (window);
|
||||
|
||||
{*
|
||||
* Main loop.
|
||||
*}
|
||||
|
||||
gtk_main ();
|
||||
|
||||
end.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.1 2005-03-01 08:10:30 marco
|
||||
* gtkglext from mischi. examples part
|
||||
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user