Compare commits
292 Commits
mesa_4_1
...
mesa_3_2_1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e1aaeb5a45 | ||
|
|
1ec0bef98e | ||
|
|
4105daf0b1 | ||
|
|
92986be121 | ||
|
|
086f5701a4 | ||
|
|
f9a0ea5415 | ||
|
|
91e07e6b27 | ||
|
|
abfd41b673 | ||
|
|
37d37e8c38 | ||
|
|
46a064e6d3 | ||
|
|
b0c18181e5 | ||
|
|
19f87266b1 | ||
|
|
463b3c5665 | ||
|
|
b3215842b2 | ||
|
|
4403f5cd30 | ||
|
|
83456f39d6 | ||
|
|
12c1fef737 | ||
|
|
c01feb8653 | ||
|
|
1b8d0fdcde | ||
|
|
761c5b23bb | ||
|
|
7b0ee9f64b | ||
|
|
865b03207c | ||
|
|
39be967b6d | ||
|
|
d51009ad5d | ||
|
|
422b2c887c | ||
|
|
9d5b7e2b71 | ||
|
|
7f43532d4c | ||
|
|
e99fda30fb | ||
|
|
6ac752afc5 | ||
|
|
314bd32cf3 | ||
|
|
87492f9c67 | ||
|
|
3e78a0e555 | ||
|
|
674509fe95 | ||
|
|
4020d5b7fc | ||
|
|
b276a01a3c | ||
|
|
a1a1b9bf8b | ||
|
|
675835139a | ||
|
|
14652699f3 | ||
|
|
170d246324 | ||
|
|
55b536ab30 | ||
|
|
73d7a8a9a3 | ||
|
|
6e85dacc57 | ||
|
|
b8fc81d266 | ||
|
|
821312402c | ||
|
|
9c1629bd17 | ||
|
|
83670c38ca | ||
|
|
3222cd1397 | ||
|
|
0c7d87ac2e | ||
|
|
86eb38b4a0 | ||
|
|
5aa48b622d | ||
|
|
2e156a37aa | ||
|
|
777ee76f86 | ||
|
|
179d2702d3 | ||
|
|
c274b95769 | ||
|
|
53a3d5fc8b | ||
|
|
66f13cefec | ||
|
|
9a20b54fb2 | ||
|
|
5537322607 | ||
|
|
8b41f43e5c | ||
|
|
83d028f92a | ||
|
|
9a51d84f55 | ||
|
|
96719f0999 | ||
|
|
477299afb1 | ||
|
|
a23141fd75 | ||
|
|
1b4731700a | ||
|
|
2ec3d124ec | ||
|
|
c91b2ad8fc | ||
|
|
0da42c0c21 | ||
|
|
f5f3e5d752 | ||
|
|
b0148e2f5d | ||
|
|
b3811b9f4d | ||
|
|
5b7fc632ad | ||
|
|
5febd0ce8b | ||
|
|
3d2264b2ce | ||
|
|
486565f88a | ||
|
|
0931339ea8 | ||
|
|
7fbad8f406 | ||
|
|
3382e6e359 | ||
|
|
96cefd6d02 | ||
|
|
8033ed691e | ||
|
|
59aa79ea5e | ||
|
|
5478ccec45 | ||
|
|
ba31a93ae5 | ||
|
|
3c5265bf69 | ||
|
|
9c7494fc0c | ||
|
|
9e077508f9 | ||
|
|
95b0d3528a | ||
|
|
dcd4ea4746 | ||
|
|
e01205dd9e | ||
|
|
198ed1fe93 | ||
|
|
5c2f9bc2de | ||
|
|
e4fb0285f2 | ||
|
|
573ab9c964 | ||
|
|
37f4e1fe40 | ||
|
|
4f4a6b4a4f | ||
|
|
884aa6efd8 | ||
|
|
ceb817650f | ||
|
|
19ac63ce20 | ||
|
|
1b4c728f77 | ||
|
|
140809c588 | ||
|
|
e6df48f9a6 | ||
|
|
31bcf75ce1 | ||
|
|
9818daae60 | ||
|
|
5ade8ed0b4 | ||
|
|
1b539ed613 | ||
|
|
905ad56487 | ||
|
|
a16ebe76c9 | ||
|
|
96563ae75f | ||
|
|
11769b9737 | ||
|
|
474363af47 | ||
|
|
99189ad4fb | ||
|
|
361fc66e36 | ||
|
|
0b616332f7 | ||
|
|
4f030d12ad | ||
|
|
792837dafd | ||
|
|
8c77d45b06 | ||
|
|
660f6dec37 | ||
|
|
14e7ab2c4f | ||
|
|
089f713f0d | ||
|
|
53f81339a4 | ||
|
|
2cf228e93d | ||
|
|
4e8ee6840a | ||
|
|
5144d47c54 | ||
|
|
3eaed2527a | ||
|
|
353bd24876 | ||
|
|
473d64f9cc | ||
|
|
c21598fb0d | ||
|
|
287abc7aa0 | ||
|
|
e6e732c64d | ||
|
|
61cca3827f | ||
|
|
88406455f5 | ||
|
|
fb67681366 | ||
|
|
ead75d4894 | ||
|
|
bd4ba2b85d | ||
|
|
998839109e | ||
|
|
a23d3cc054 | ||
|
|
803d5a12ab | ||
|
|
462144c0f0 | ||
|
|
a780e6f228 | ||
|
|
7feab37f8a | ||
|
|
091834064c | ||
|
|
9275c62963 | ||
|
|
7166ff0412 | ||
|
|
bf69170dff | ||
|
|
3c6dd8791c | ||
|
|
69bc4e01b8 | ||
|
|
b2d3b2dbe0 | ||
|
|
c508641aec | ||
|
|
f008070ad5 | ||
|
|
c562884268 | ||
|
|
992795f4c9 | ||
|
|
d21f13cb05 | ||
|
|
f1b26953e8 | ||
|
|
216244bed8 | ||
|
|
b85c3afc01 | ||
|
|
e4ee3cc9d1 | ||
|
|
03d7215604 | ||
|
|
82e6fe5e36 | ||
|
|
dde5788a44 | ||
|
|
8038f3747d | ||
|
|
0df95816c5 | ||
|
|
3692626805 | ||
|
|
b31d01d4a7 | ||
|
|
ba8ef5917e | ||
|
|
f5d0252282 | ||
|
|
83386c0f7b | ||
|
|
5e8aa8e5d9 | ||
|
|
f008ed46d1 | ||
|
|
7b5a65ce28 | ||
|
|
4f4b93d8ae | ||
|
|
81f97580cc | ||
|
|
8de719530c | ||
|
|
f0040ae8f5 | ||
|
|
ec2425c3b6 | ||
|
|
aedc01c850 | ||
|
|
93c528a6d5 | ||
|
|
443d666b9a | ||
|
|
d794378dbc | ||
|
|
76dad53903 | ||
|
|
e5f8d98410 | ||
|
|
7f8fed5711 | ||
|
|
5ed6197b0a | ||
|
|
609524894a | ||
|
|
553adbb0c2 | ||
|
|
361afca6a4 | ||
|
|
4c6a2f6a33 | ||
|
|
717ec19e30 | ||
|
|
411fb983f7 | ||
|
|
5dbe3d9c98 | ||
|
|
fea067dce8 | ||
|
|
1cfc846bf3 | ||
|
|
dfa45b9f26 | ||
|
|
6f602ed44d | ||
|
|
34bf1dd293 | ||
|
|
9a7584b062 | ||
|
|
d6dfb94059 | ||
|
|
b9ee2850cf | ||
|
|
4183bf524d | ||
|
|
1721f447c6 | ||
|
|
46ef216f7f | ||
|
|
a171741d65 | ||
|
|
320c2cdb0f | ||
|
|
9ed70db8ea | ||
|
|
acbb8cb9dd | ||
|
|
7889a93ff7 | ||
|
|
970a551795 | ||
|
|
d7eae31275 | ||
|
|
b0294cbbfe | ||
|
|
e2ff9be0b6 | ||
|
|
16283fea40 | ||
|
|
82ba9449e1 | ||
|
|
2377ea9c66 | ||
|
|
ac3593ada5 | ||
|
|
d6dd996e56 | ||
|
|
cee556daea | ||
|
|
313f225a2e | ||
|
|
95d565b64c | ||
|
|
32ea1fdc7e | ||
|
|
8d52ee9ae1 | ||
|
|
9a07202f5e | ||
|
|
0f953d69e5 | ||
|
|
b3a1034c05 | ||
|
|
8956d5131d | ||
|
|
428cf99956 | ||
|
|
1e5dab20fd | ||
|
|
aa5251d170 | ||
|
|
607add71d9 | ||
|
|
074710629d | ||
|
|
7f0b5dd69c | ||
|
|
09b83c889b | ||
|
|
9c416c235b | ||
|
|
6ce3f22ae9 | ||
|
|
32093ccc86 | ||
|
|
d5ff1d782b | ||
|
|
2ed8894aca | ||
|
|
33cd8a5490 | ||
|
|
dd25e9852a | ||
|
|
05df9bb6e0 | ||
|
|
a335bf404f | ||
|
|
783a67260a | ||
|
|
e99e126479 | ||
|
|
98fce32683 | ||
|
|
9493e540f9 | ||
|
|
7138d38cc1 | ||
|
|
9e7f0e1f7c | ||
|
|
52345bfa1e | ||
|
|
93070bceca | ||
|
|
5b90676fc7 | ||
|
|
92ad030cb7 | ||
|
|
9afe0e4278 | ||
|
|
3e63be01d1 | ||
|
|
c73eedbe96 | ||
|
|
8c54c4d9f7 | ||
|
|
33817940c4 | ||
|
|
7ec2e161ac | ||
|
|
fc2e8cd0d0 | ||
|
|
a3ea9edfda | ||
|
|
7fa9891de2 | ||
|
|
ddd9410a67 | ||
|
|
532dde3e99 | ||
|
|
2a6f393fa7 | ||
|
|
2d1b9e0402 | ||
|
|
19c878467f | ||
|
|
1041d573ff | ||
|
|
fda834160b | ||
|
|
7d35435bb6 | ||
|
|
5c191a62bc | ||
|
|
eca3b6e47e | ||
|
|
aa0a8624fb | ||
|
|
f16a627115 | ||
|
|
1d39975c4e | ||
|
|
62d5f4c73e | ||
|
|
d42cd99c66 | ||
|
|
03ef882735 | ||
|
|
19d0fcafb3 | ||
|
|
cc6e92ff49 | ||
|
|
463c2b6b77 | ||
|
|
09c133e16f | ||
|
|
bb1d3c1ad1 | ||
|
|
cabb6a91cd | ||
|
|
c76ac6b644 | ||
|
|
6842075a09 | ||
|
|
b1da189fe5 | ||
|
|
9b635315be | ||
|
|
702baf4cd3 | ||
|
|
b27ee886e4 | ||
|
|
276465cec6 | ||
|
|
5428538d65 | ||
|
|
ab5d4d6233 | ||
|
|
2450ce124b | ||
|
|
cf22eb77a7 | ||
|
|
569802cdb1 |
1070
Make-config
1070
Make-config
File diff suppressed because it is too large
Load Diff
735
Makefile.X11
735
Makefile.X11
@@ -1,9 +1,9 @@
|
|||||||
# $Id: Makefile.X11,v 1.65 2002/10/15 15:40:57 brianp Exp $
|
# $Id: Makefile.X11,v 1.12.2.14 2000/07/18 14:32:08 brianp Exp $
|
||||||
|
|
||||||
# Mesa 3-D graphics library
|
# Mesa 3-D graphics library
|
||||||
# Version: 4.1
|
# Version: 3.2.1
|
||||||
#
|
#
|
||||||
# Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
|
# Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
# copy of this software and associated documentation files (the "Software"),
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
@@ -42,7 +42,6 @@ default:
|
|||||||
@echo " make bsdos4 for BSD/OS 4.x, dynamic libraries"
|
@echo " make bsdos4 for BSD/OS 4.x, dynamic libraries"
|
||||||
@echo " make cygnus for Win95/NT using Cygnus-Win32"
|
@echo " make cygnus for Win95/NT using Cygnus-Win32"
|
||||||
@echo " make cygnus-linux for Win95/NT using Cygnus-Win32 under Linux"
|
@echo " make cygnus-linux for Win95/NT using Cygnus-Win32 under Linux"
|
||||||
@echo " make darwin for Darwin - Mac OS X"
|
|
||||||
@echo " make dgux for Data General"
|
@echo " make dgux for Data General"
|
||||||
@echo " make freebsd for FreeBSD systems with GCC"
|
@echo " make freebsd for FreeBSD systems with GCC"
|
||||||
@echo " make freebsd-386 for FreeBSD systems with GCC, w/ Intel assembly"
|
@echo " make freebsd-386 for FreeBSD systems with GCC, w/ Intel assembly"
|
||||||
@@ -67,27 +66,28 @@ default:
|
|||||||
@echo " make irix6-64 for SGI systems with IRIX 6.x, make 64-bit libs"
|
@echo " make irix6-64 for SGI systems with IRIX 6.x, make 64-bit libs"
|
||||||
@echo " make irix6-64-dso for SGI systems with IRIX 6.x, make 64-bit DSOs"
|
@echo " make irix6-64-dso for SGI systems with IRIX 6.x, make 64-bit DSOs"
|
||||||
|
|
||||||
@echo " make linux for Linux systems, make shared .so libs"
|
@echo " make linux for Linux systems, make static .a libs"
|
||||||
@echo " make linux-static for Linux systems, make static .a libs"
|
@echo " make linux-elf for Linux systems, make ELF shared libs"
|
||||||
@echo " make linux-trace for Linux systems, with API trace extension"
|
@echo " make linux-386 for Linux w/ Intel assembly"
|
||||||
@echo " make linux-x86 for Linux on Intel, make shared .so libs"
|
@echo " make linux-386-elf for Linux w/ Intel assembly, make ELF shared libs"
|
||||||
@echo " make linux-x86-static for Linux on Intel, make static .a libs"
|
|
||||||
@echo " make linux-ggi for Linux systems with libggi"
|
@echo " make linux-ggi for Linux systems with libggi"
|
||||||
@echo " make linux-386-ggi for Linux systems with libggi w/ Intel assembly"
|
@echo " make linux-386-ggi for Linux systems with libggi w/ Intel assembly"
|
||||||
|
@echo " make linux-alpha for Linux on Alpha systems"
|
||||||
|
@echo " make linux-alpha-elf for Linux on Alpha systems, make ELF shared libs"
|
||||||
|
@echo " make linux-ppc for Linux on PowerPC systems"
|
||||||
|
@echo " make linux-ppc-so for Linux on PowerPC systems, make shared libs"
|
||||||
@echo " make linux-glide for Linux w/ 3Dfx Glide driver"
|
@echo " make linux-glide for Linux w/ 3Dfx Glide driver"
|
||||||
@echo " make linux-386-glide for Linux w/ 3Dfx Glide driver, Intel assembly"
|
@echo " make linux-386-glide for Linux w/ 3Dfx Glide driver, Intel assembly"
|
||||||
@echo " make linux-386-opt-glide for Linux with 3Dfx Voodoo1 for GLQuake"
|
@echo " make linux-386-opt-glide for Linux with 3Dfx Voodoo1 for GLQuake"
|
||||||
@echo " make linux-x86-glide for Linux w/ all x86 asm for Glide"
|
@echo " make linux-386-opt-V2-glide for Linux with 3Dfx Voodoo2 for GLQuake"
|
||||||
@echo " make linux-alpha for Linux on Alpha systems"
|
@echo " make linux-3dnow for Linux on AMD w/ 3DNow!"
|
||||||
@echo " make linux-alpha-static for Linux on Alpha systems, static libs"
|
@echo " make linux-3dnow-glide for Linux on AMD w/ 3DNow! for Glide"
|
||||||
@echo " make linux-ppc for Linux on PowerPC systems"
|
@echo " make linux-386-pthread for Linux w/ Intel assembly and linuxthreads"
|
||||||
@echo " make linux-ppc-static for Linux on PowerPC systems, static libs"
|
@echo " make linux-386-pthread-shared for Linux w/ Intel assembly and linuxthreads"
|
||||||
|
@echo " make linux-386-pthread-shared-glide for Linux w/ Intel assembly, linuxthreads, and 3Dfx Glide driver"
|
||||||
@echo " make linux-sparc for Linux on Sparc systems"
|
@echo " make linux-sparc for Linux on Sparc systems"
|
||||||
@echo " make linux-sparc5-elf for Sparc5 systems, make ELF shared libs"
|
@echo " make linux-sparc5-elf for Sparc5 systems, make ELF shared libs"
|
||||||
@echo " make linux-sparc-ultra for UltraSparc systems, make ELF shared libs"
|
@echo " make linux-sparc-ultra for UltraSparc systems, make ELF shared libs"
|
||||||
@echo " make linux-osmesa16 for 16-bit/channel OSMesa"
|
|
||||||
@echo " make linux-osmesa32 for 32-bit/channel OSMesa"
|
|
||||||
@echo " make linux-icc for Linux with the Intel C/C++ compiler"
|
|
||||||
@echo " make lynxos for LynxOS systems with GCC"
|
@echo " make lynxos for LynxOS systems with GCC"
|
||||||
@echo " make macintosh for Macintosh"
|
@echo " make macintosh for Macintosh"
|
||||||
@echo " make machten-2.2 for Macs w/ MachTen 2.2 (68k w/ FPU)"
|
@echo " make machten-2.2 for Macs w/ MachTen 2.2 (68k w/ FPU)"
|
||||||
@@ -136,19 +136,18 @@ default:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
# XXX we may have to split up this group of targets into those that
|
aix aix-sl amix bsdos bsdos4 dgux freebsd freebsd-386 gcc \
|
||||||
# have a C++ compiler and those that don't for the SI-GLU library.
|
|
||||||
|
|
||||||
aix aix-sl amix bsdos bsdos4 darwin dgux freebsd freebsd-386 gcc \
|
|
||||||
hpux9 hpux9-sl hpux9-gcc hpux9-gcc-sl \
|
hpux9 hpux9-sl hpux9-gcc hpux9-gcc-sl \
|
||||||
hpux10 hpux10-sl hpux10-gcc hpux10-gcc-sl \
|
hpux10 hpux10-sl hpux10-gcc hpux10-gcc-sl \
|
||||||
irix4 irix5 irix5-gcc irix5-dso \
|
irix4 irix5 irix5-gcc irix5-dso irix6-o32 irix6-o32-dso \
|
||||||
linux linux-static linux-debug linux-static-debug linux-prof \
|
linux linux-debug linux-prof linux-elf linux-elf-debug linux-glide-debug \
|
||||||
linux-x86 linux-icc linux-x86-static linux-x86-debug \
|
|
||||||
linux-glide linux-386-glide linux-386-opt-glide \
|
linux-glide linux-386-glide linux-386-opt-glide \
|
||||||
linux-x86-glide linux-glide-debug linux-glide-prof \
|
linux-386-opt-V2-glide \
|
||||||
linux-alpha-static linux-alpha \
|
linux-386 linux-386-elf \
|
||||||
linux-ppc-static linux-ppc \
|
linux-3dnow linux-3dnow-glide \
|
||||||
|
linux-alpha linux-alpha-elf \
|
||||||
|
linux-ppc linux-ppc-so \
|
||||||
|
linux-386-pthread linux-386-pthread-shared linux-386-pthread-shared-glide \
|
||||||
linux-sparc \
|
linux-sparc \
|
||||||
linux-sparc5-elf \
|
linux-sparc5-elf \
|
||||||
linux-sparc-ultra \
|
linux-sparc-ultra \
|
||||||
@@ -160,32 +159,33 @@ sunos5 sunos5-sl sunos5-ultra sunos5-ultra-sl sunos5-gcc sunos5-gcc-sl \
|
|||||||
sunos5-thread sunos5-pthread sunos5-gcc-thread sunos5-gcc-pthread \
|
sunos5-thread sunos5-pthread sunos5-gcc-thread sunos5-gcc-pthread \
|
||||||
sunos5-x11r6-gcc-sl ultrix-gcc unicos unixware uwin vistra:
|
sunos5-x11r6-gcc-sl ultrix-gcc unicos unixware uwin vistra:
|
||||||
-mkdir lib
|
-mkdir lib
|
||||||
if [ -d src ] ; then touch src/depend ; fi
|
touch src/depend
|
||||||
if [ -d si-glu ] ; then touch si-glu/depend ; fi
|
touch src-glu/depend
|
||||||
|
touch widgets-sgi/depend
|
||||||
if [ -d src-glut ] ; then touch src-glut/depend ; fi
|
if [ -d src-glut ] ; then touch src-glut/depend ; fi
|
||||||
if [ -d widgets-sgi ] ; then touch widgets-sgi/depend ; fi
|
cd src ; $(MAKE) -f Makefile.X11 $@
|
||||||
if [ -d src ] ; then cd src ; $(MAKE) -f Makefile.X11 $@ ; fi
|
cd src-glu ; $(MAKE) -f Makefile.X11 $@
|
||||||
if [ -d si-glu ] ; then cd si-glu ; $(MAKE) -f Makefile.X11 $@ ; fi
|
|
||||||
if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d demos ] ; then cd demos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d demos ] ; then cd demos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d xdemos ] ; then cd xdemos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d xdemos ] ; then cd xdemos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d samples ] ; then cd samples ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d samples ] ; then cd samples ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d book ] ; then cd book ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d book ] ; then cd book ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
|
|
||||||
irix6-o32 irix6-o32-dso irix6-n32 irix6-n32-dso irix6-gcc-n32-sl irix-debug:
|
|
||||||
|
irix6-n32 irix6-n32-dso irix6-gcc-n32-sl irix-debug:
|
||||||
-mkdir lib32
|
-mkdir lib32
|
||||||
if [ -d src ] ; then touch src/depend ; fi
|
touch src/depend
|
||||||
if [ -d src-glu ] ; then touch src-glu/depend ; fi
|
touch src-glu/depend
|
||||||
|
touch widgets-sgi/depend
|
||||||
if [ -d src-glut ] ; then touch src-glut/depend ; fi
|
if [ -d src-glut ] ; then touch src-glut/depend ; fi
|
||||||
if [ -d widgets-sgi ] ; then touch widgets-sgi/depend ; fi
|
cd src ; $(MAKE) -f Makefile.X11 $@
|
||||||
if [ -d src ] ; then cd src ; $(MAKE) -f Makefile.X11 $@ ; fi
|
cd src-glu ; $(MAKE) -f Makefile.X11 $@
|
||||||
if [ -d src-glu ] ; then cd src-glu ; $(MAKE) -f Makefile.X11 $@ ; fi
|
|
||||||
if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d demos ] ; then cd demos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d demos ] ; then cd demos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d xdemos ] ; then cd xdemos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d xdemos ] ; then cd xdemos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d samples ] ; then cd samples ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d samples ] ; then cd samples ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d book ] ; then cd book ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d book ] ; then cd book ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
|
|
||||||
|
|
||||||
@@ -193,15 +193,15 @@ irix6-64 irix6-64-dso:
|
|||||||
-mkdir lib64
|
-mkdir lib64
|
||||||
touch src/depend
|
touch src/depend
|
||||||
touch src-glu/depend
|
touch src-glu/depend
|
||||||
|
touch widgets-sgi/depend
|
||||||
if [ -d src-glut ] ; then touch src-glut/depend ; fi
|
if [ -d src-glut ] ; then touch src-glut/depend ; fi
|
||||||
if [ -d widgets-sgi ] ; then touch widgets-sgi/depend ; fi
|
cd src ; $(MAKE) -f Makefile.X11 $@
|
||||||
if [ -d src ] ; then cd src ; $(MAKE) -f Makefile.X11 $@ ; fi
|
cd src-glu ; $(MAKE) -f Makefile.X11 $@
|
||||||
if [ -d src-glu ] ; then cd src-glu ; $(MAKE) -f Makefile.X11 $@ ; fi
|
|
||||||
if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d demos ] ; then cd demos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d demos ] ; then cd demos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d xdemos ] ; then cd xdemos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d xdemos ] ; then cd xdemos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d samples ] ; then cd samples ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d samples ] ; then cd samples ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d book ] ; then cd book ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d book ] ; then cd book ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
|
|
||||||
|
|
||||||
@@ -215,26 +215,26 @@ beos-r4:
|
|||||||
touch src/depend
|
touch src/depend
|
||||||
-rm src-glu/depend
|
-rm src-glu/depend
|
||||||
touch src-glu/depend
|
touch src-glu/depend
|
||||||
if [ -d src ] ; then cd src ; $(MAKE) -f Makefile.BeOS-R4 $@ ; fi
|
cd src ; $(MAKE) -f Makefile.BeOS-R4 $@
|
||||||
if [ -d src-glu ] ; then cd src-glu ; $(MAKE) -f Makefile.BeOS-R4 $@ ; fi
|
cd src-glu ; $(MAKE) -f Makefile.BeOS-R4 $@
|
||||||
if [ -d BeOS ] ; then cd BeOS ; $(MAKE) ; fi
|
if [ -d BeOS ] ; then cd BeOS ; $(MAKE) ; fi
|
||||||
if [ -d src-glut.beos ] ; then cd src-glut.beos ; $(MAKE) ; fi
|
if [ -d src-glut.beos ] ; then cd src-glut.beos ; $(MAKE) ; fi
|
||||||
if [ -d src-glut.beos ] ; then cp src-glut.beos/obj*/libglut.so lib ; fi
|
if [ -d src-glut.beos ] ; then cp src-glut.beos/obj*/libglut.so lib ; fi
|
||||||
if [ -d demos ] ; then cd demos ; $(MAKE) -f Makefile.BeOS-R4 $@ ; fi
|
if [ -d demos ] ; then cd demos ; $(MAKE) -f Makefile.BeOS-R4 $@ ; fi
|
||||||
if [ -d samples ] ; then cd samples ; $(MAKE) -f Makefile.BeOS-R4 $@ ; fi
|
if [ -d samples ] ; then cd samples ; $(MAKE) -f Makefile.BeOS-R4 $@ ; fi
|
||||||
if [ -d book ] ; then cd book ; $(MAKE) -f Makefile.BeOS-R4 $@ ; fi
|
if [ -d book ] ; then cd book ; $(MAKE) -f Makefile.BeOS-R4 $@ ; fi
|
||||||
|
|
||||||
pgi-cygnus pgi-mingw32 \
|
pgi-cygnus pgi-mingw32 \
|
||||||
cygnus cygnus-linux:
|
cygnus cygnus-linux:
|
||||||
-mkdir lib
|
-mkdir lib
|
||||||
touch src/depend
|
touch src/depend
|
||||||
touch src-glu/depend
|
touch src-glu/depend
|
||||||
if [ -d widgets-sgi ] ; then touch widgets-sgi/depend ; fi
|
touch widgets-sgi/depend
|
||||||
if [ -d src ] ; then cd src ; $(MAKE) -f Makefile.X11 $@ ; fi
|
cd src ; $(MAKE) -f Makefile.X11 $@
|
||||||
if [ -d src-glu ] ; then cd src-glu ; $(MAKE) -f Makefile.X11 $@ ; fi
|
cd src-glu ; $(MAKE) -f Makefile.X11 $@
|
||||||
if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d demos ] ; then cd demos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d demos ] ; then cd demos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d xdemos ] ; then cd xdemos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d xdemos ] ; then cd xdemos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
|
|
||||||
macintosh:
|
macintosh:
|
||||||
@@ -266,17 +266,17 @@ os2-x11:
|
|||||||
linux-ggi linux-386-ggi:
|
linux-ggi linux-386-ggi:
|
||||||
-mkdir lib
|
-mkdir lib
|
||||||
touch src/depend
|
touch src/depend
|
||||||
touch si-glu/depend
|
touch src-glu/depend
|
||||||
if [ -d src-glut ] ; then touch src-glut/depend ; fi
|
touch widgets-sgi/depend
|
||||||
if [ -d widgets-sgi ] ; then touch widgets-sgi/depend ; fi
|
if [ -d src-glut ] ; then touch src-glut/depend ; fi
|
||||||
if [ -d ggi ] ; then touch ggi/depend ; fi
|
if [ -d ggi ] ; then touch ggi/depend ; fi
|
||||||
if [ -d src ] ; then cd src ; $(MAKE) -f Makefile.X11 $@ ; fi
|
cd src ; $(MAKE) -f Makefile.X11 $@
|
||||||
if [ -d src/GGI/default ] ; then cd src/GGI/default ; $(MAKE) ; fi
|
cd src/GGI/default ; $(MAKE)
|
||||||
if [ -d src/GGI/display ] ; then cd src/GGI/display ; $(MAKE) ; fi
|
cd src/GGI/display ; $(MAKE)
|
||||||
if [ -d si-glu ] ; then cd si-glu ; $(MAKE) -f Makefile.X11 $@ ; fi
|
cd src-glu ; $(MAKE) -f Makefile.X11 $@
|
||||||
# if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi
|
# if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d ggi ] ; then cd ggi ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d ggi ] ; then cd ggi ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d ggi ] ; then cd ggi/demos; $(MAKE) ; fi
|
if [ -d ggi ] ; then cd ggi/demos; $(MAKE) ; fi
|
||||||
if [ -d demos ] ; then cd demos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d demos ] ; then cd demos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d xdemos ] ; then cd xdemos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d xdemos ] ; then cd xdemos ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d samples ] ; then cd samples ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d samples ] ; then cd samples ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
@@ -296,12 +296,6 @@ linux-ggi-install linux-386-ggi-install:
|
|||||||
# echo ".include $(DESTDIR)/etc/ggi/ggimesa.conf" >> $(DESTDIR)/etc/ggi/libggi.conf ; \
|
# echo ".include $(DESTDIR)/etc/ggi/ggimesa.conf" >> $(DESTDIR)/etc/ggi/libggi.conf ; \
|
||||||
# fi
|
# fi
|
||||||
|
|
||||||
linux-osmesa16 linux-osmesa32:
|
|
||||||
-mkdir lib
|
|
||||||
if [ -d src ] ; then touch src/depend ; fi
|
|
||||||
if [ -d src ] ; then cd src ; $(MAKE) -f Makefile.OSMesa16 $@ ; fi
|
|
||||||
|
|
||||||
|
|
||||||
# Remove .o files, emacs backup files, etc.
|
# Remove .o files, emacs backup files, etc.
|
||||||
clean:
|
clean:
|
||||||
-rm -f ggi/*~ *.o
|
-rm -f ggi/*~ *.o
|
||||||
@@ -311,7 +305,6 @@ clean:
|
|||||||
-rm -f include/GL/*~
|
-rm -f include/GL/*~
|
||||||
-rm -f src/*.o src/*~ src/*.a src/*/*.o src/*/*~
|
-rm -f src/*.o src/*~ src/*.a src/*/*.o src/*/*~
|
||||||
-rm -f src-glu/*.o src-glu/*~ src-glu/*.a
|
-rm -f src-glu/*.o src-glu/*~ src-glu/*.a
|
||||||
-rm -f si-glu/*/*.o si-glu/*/*/*.o
|
|
||||||
-rm -f src-glut/*.o
|
-rm -f src-glut/*.o
|
||||||
-rm -f demos/*.o
|
-rm -f demos/*.o
|
||||||
-rm -f book/*.o book/*~
|
-rm -f book/*.o book/*~
|
||||||
@@ -323,428 +316,274 @@ clean:
|
|||||||
|
|
||||||
# Remove everything that can be remade
|
# Remove everything that can be remade
|
||||||
realclean: clean
|
realclean: clean
|
||||||
-rm -fr lib lib32 lib64
|
-rm -f lib/*
|
||||||
cd demos && $(MAKE) -f Makefile.X11 realclean || true
|
cd demos && $(MAKE) -f Makefile.X11 realclean || true
|
||||||
cd xdemos && $(MAKE) -f Makefile.X11 realclean || true
|
cd xdemos && $(MAKE) -f Makefile.X11 realclean || true
|
||||||
cd book && $(MAKE) -f Makefile.X11 realclean || true
|
cd book && $(MAKE) -f Makefile.X11 realclean || true
|
||||||
cd samples && $(MAKE) -f Makefile.X11 realclean || true
|
cd samples && $(MAKE) -f Makefile.X11 realclean || true
|
||||||
|
cd ggi/demos && $(MAKE) -f Makefile.X11 realclean || true
|
||||||
|
cd src/GGI/default && $(MAKE) -f Makefile.X11 realclean || true
|
||||||
|
|
||||||
|
|
||||||
DIRECTORY = Mesa-4.1
|
|
||||||
LIB_NAME = MesaLib-4.1
|
DIRECTORY = Mesa-3.2.1
|
||||||
DEMO_NAME = MesaDemos-4.1
|
LIB_NAME = MesaLib-3.2.1
|
||||||
GLU_NAME = MesaGLU-4.1
|
DEMO_NAME = MesaDemos-3.2.1
|
||||||
GLUT_NAME = GLUT-3.7
|
|
||||||
|
|
||||||
|
|
||||||
LIB_FILES = \
|
LIB_FILES = \
|
||||||
$(DIRECTORY)/Makefile* \
|
$(DIRECTORY)/Makefile* \
|
||||||
$(DIRECTORY)/Make-config \
|
$(DIRECTORY)/Make-config \
|
||||||
$(DIRECTORY)/acconfig.h \
|
$(DIRECTORY)/acconfig.h \
|
||||||
$(DIRECTORY)/acinclude.m4 \
|
$(DIRECTORY)/acinclude.m4 \
|
||||||
$(DIRECTORY)/aclocal.m4 \
|
$(DIRECTORY)/aclocal.m4 \
|
||||||
$(DIRECTORY)/common_rules.make \
|
$(DIRECTORY)/conf.h.in \
|
||||||
$(DIRECTORY)/conf.h.in \
|
$(DIRECTORY)/config.guess \
|
||||||
$(DIRECTORY)/config.guess \
|
$(DIRECTORY)/config.sub \
|
||||||
$(DIRECTORY)/config.sub \
|
$(DIRECTORY)/configure \
|
||||||
$(DIRECTORY)/configure \
|
$(DIRECTORY)/configure.in \
|
||||||
$(DIRECTORY)/configure.in \
|
$(DIRECTORY)/install-sh \
|
||||||
$(DIRECTORY)/install-sh \
|
$(DIRECTORY)/ltconfig \
|
||||||
$(DIRECTORY)/ltmain.sh \
|
$(DIRECTORY)/ltmain.sh \
|
||||||
$(DIRECTORY)/missing \
|
$(DIRECTORY)/missing \
|
||||||
$(DIRECTORY)/mkinstalldirs \
|
$(DIRECTORY)/mkinstalldirs \
|
||||||
$(DIRECTORY)/stamp-h.in \
|
$(DIRECTORY)/stamp-h.in \
|
||||||
$(DIRECTORY)/docs/CONFIG \
|
$(DIRECTORY)/docs/CONFIG \
|
||||||
$(DIRECTORY)/docs/CONFORM \
|
$(DIRECTORY)/docs/CONFORM \
|
||||||
$(DIRECTORY)/docs/COPYING \
|
$(DIRECTORY)/docs/COPYING \
|
||||||
$(DIRECTORY)/docs/COPYRIGHT \
|
$(DIRECTORY)/docs/COPYRIGHT \
|
||||||
$(DIRECTORY)/docs/DEVINFO \
|
$(DIRECTORY)/docs/DEVINFO \
|
||||||
$(DIRECTORY)/docs/IAFA-PACKAGE \
|
$(DIRECTORY)/docs/IAFA-PACKAGE \
|
||||||
$(DIRECTORY)/docs/INSTALL \
|
$(DIRECTORY)/docs/INSTALL \
|
||||||
$(DIRECTORY)/docs/INSTALL.GNU \
|
$(DIRECTORY)/docs/INSTALL.GNU \
|
||||||
$(DIRECTORY)/docs/README \
|
$(DIRECTORY)/docs/README \
|
||||||
$(DIRECTORY)/docs/README.* \
|
$(DIRECTORY)/docs/README.* \
|
||||||
$(DIRECTORY)/docs/RELNOTES* \
|
$(DIRECTORY)/docs/RELNOTES* \
|
||||||
$(DIRECTORY)/docs/VERSIONS \
|
$(DIRECTORY)/docs/VERSIONS \
|
||||||
$(DIRECTORY)/docs/*.spec \
|
$(DIRECTORY)/docs/*.spec \
|
||||||
$(DIRECTORY)/bin/README \
|
$(DIRECTORY)/bin/README \
|
||||||
$(DIRECTORY)/bin/mklib* \
|
$(DIRECTORY)/bin/mklib* \
|
||||||
$(DIRECTORY)/descrip.mms \
|
$(DIRECTORY)/*.BAT \
|
||||||
$(DIRECTORY)/mms-config \
|
$(DIRECTORY)/*.bat \
|
||||||
$(DIRECTORY)/m4/*.m4 \
|
$(DIRECTORY)/descrip.mms \
|
||||||
$(DIRECTORY)/xlib.opt \
|
$(DIRECTORY)/mms-config \
|
||||||
$(DIRECTORY)/mesawin32.mak \
|
$(DIRECTORY)/xlib.opt \
|
||||||
$(DIRECTORY)/include/GL/internal/glcore.h \
|
$(DIRECTORY)/STARTUP.MK \
|
||||||
$(DIRECTORY)/include/GL/Makefile.in \
|
$(DIRECTORY)/mesawin32.mak \
|
||||||
$(DIRECTORY)/include/GL/Makefile.am \
|
$(DIRECTORY)/Names.win \
|
||||||
$(DIRECTORY)/include/GL/dmesa.h \
|
$(DIRECTORY)/win32-openstep.sh \
|
||||||
$(DIRECTORY)/include/GL/amesa.h \
|
$(DIRECTORY)/common.dja \
|
||||||
$(DIRECTORY)/include/GL/fxmesa.h \
|
$(DIRECTORY)/include/GL/Makefile.in \
|
||||||
$(DIRECTORY)/include/GL/ggimesa.h \
|
$(DIRECTORY)/include/GL/Makefile.am \
|
||||||
$(DIRECTORY)/include/GL/gl.h \
|
$(DIRECTORY)/include/GL/amesa.h \
|
||||||
$(DIRECTORY)/include/GL/glext.h \
|
$(DIRECTORY)/include/GL/dosmesa.h \
|
||||||
$(DIRECTORY)/include/GL/gl_mangle.h \
|
$(DIRECTORY)/include/GL/foomesa.h \
|
||||||
$(DIRECTORY)/include/GL/glu.h \
|
$(DIRECTORY)/include/GL/fxmesa.h \
|
||||||
$(DIRECTORY)/include/GL/glu_mangle.h \
|
$(DIRECTORY)/include/GL/ggimesa.h \
|
||||||
$(DIRECTORY)/include/GL/glx.h \
|
$(DIRECTORY)/include/GL/gl.h \
|
||||||
$(DIRECTORY)/include/GL/glxext.h \
|
$(DIRECTORY)/include/GL/gl_mangle.h \
|
||||||
$(DIRECTORY)/include/GL/glx_mangle.h \
|
$(DIRECTORY)/include/GL/glu.h \
|
||||||
$(DIRECTORY)/include/GL/mesa_wgl.h \
|
$(DIRECTORY)/include/GL/glu_mangle.h \
|
||||||
$(DIRECTORY)/include/GL/mglmesa.h \
|
$(DIRECTORY)/include/GL/glx.h \
|
||||||
$(DIRECTORY)/include/GL/osmesa.h \
|
$(DIRECTORY)/include/GL/glx_mangle.h \
|
||||||
$(DIRECTORY)/include/GL/svgamesa.h \
|
$(DIRECTORY)/include/GL/mesa_wgl.h \
|
||||||
$(DIRECTORY)/include/GL/ugl*.h \
|
$(DIRECTORY)/include/GL/mglmesa.h \
|
||||||
$(DIRECTORY)/include/GL/vms_x_fix.h \
|
$(DIRECTORY)/include/GL/osmesa.h \
|
||||||
$(DIRECTORY)/include/GL/wmesa.h \
|
$(DIRECTORY)/include/GL/svgamesa.h \
|
||||||
$(DIRECTORY)/include/GL/xmesa.h \
|
$(DIRECTORY)/include/GL/wmesa.h \
|
||||||
$(DIRECTORY)/include/GL/xmesa_x.h \
|
$(DIRECTORY)/include/GL/xmesa.h \
|
||||||
$(DIRECTORY)/include/GL/xmesa_xf86.h \
|
$(DIRECTORY)/include/GL/xmesa_x.h \
|
||||||
$(DIRECTORY)/include/GLView.h \
|
$(DIRECTORY)/include/GL/xmesa_xf86.h \
|
||||||
$(DIRECTORY)/include/dmesadxe.h \
|
$(DIRECTORY)/include/GLView.h \
|
||||||
$(DIRECTORY)/include/Makefile.in \
|
$(DIRECTORY)/include/Makefile.in \
|
||||||
$(DIRECTORY)/include/Makefile.am \
|
$(DIRECTORY)/include/Makefile.am \
|
||||||
$(DIRECTORY)/src/Makefile* \
|
$(DIRECTORY)/src/Makefile* \
|
||||||
$(DIRECTORY)/src/libGL_la_SOURCES \
|
$(DIRECTORY)/src/descrip.mms \
|
||||||
$(DIRECTORY)/src/descrip.mms \
|
$(DIRECTORY)/src/mms_depend \
|
||||||
$(DIRECTORY)/src/mesa.conf \
|
$(DIRECTORY)/src/mesa.conf \
|
||||||
$(DIRECTORY)/src/*.def \
|
$(DIRECTORY)/src/*.def \
|
||||||
$(DIRECTORY)/src/depend \
|
$(DIRECTORY)/src/depend \
|
||||||
$(DIRECTORY)/src/*.[chS] \
|
$(DIRECTORY)/src/*.[chS] \
|
||||||
$(DIRECTORY)/src/array_cache/*.[ch] \
|
$(DIRECTORY)/src/Allegro/*.[ch] \
|
||||||
$(DIRECTORY)/src/array_cache/Makefile* \
|
$(DIRECTORY)/src/BeOS/*.cpp \
|
||||||
$(DIRECTORY)/src/array_cache/libMesaAC_la_SOURCES \
|
$(DIRECTORY)/src/D3D/*.cpp \
|
||||||
$(DIRECTORY)/src/math/*.[ch] \
|
$(DIRECTORY)/src/D3D/*.CPP \
|
||||||
$(DIRECTORY)/src/math/Makefile* \
|
$(DIRECTORY)/src/D3D/*.h \
|
||||||
$(DIRECTORY)/src/swrast/*.[ch] \
|
$(DIRECTORY)/src/D3D/*.H \
|
||||||
$(DIRECTORY)/src/swrast/Makefile* \
|
$(DIRECTORY)/src/D3D/*.c \
|
||||||
$(DIRECTORY)/src/swrast/libMesaSwrast_la_SOURCES \
|
$(DIRECTORY)/src/D3D/*.C \
|
||||||
$(DIRECTORY)/src/swrast_setup/*.[ch] \
|
$(DIRECTORY)/src/D3D/MAKEFILE \
|
||||||
$(DIRECTORY)/src/swrast_setup/Makefile* \
|
$(DIRECTORY)/src/D3D/*bat \
|
||||||
$(DIRECTORY)/src/tnl/*.[ch] \
|
$(DIRECTORY)/src/D3D/*DEF \
|
||||||
$(DIRECTORY)/src/tnl/Makefile* \
|
$(DIRECTORY)/src/DOS/DEPEND.DOS \
|
||||||
$(DIRECTORY)/src/tnl/libMesaTnl_la_SOURCES \
|
$(DIRECTORY)/src/DOS/*.c \
|
||||||
$(DIRECTORY)/src/tnl_dd/*.[ch] \
|
$(DIRECTORY)/src/FX/Makefile.am \
|
||||||
$(DIRECTORY)/src/tnl_dd/imm/*.[ch] \
|
$(DIRECTORY)/src/FX/Makefile.in \
|
||||||
$(DIRECTORY)/src/tnl_dd/imm/NOTES.imm \
|
$(DIRECTORY)/src/FX/*.[ch] \
|
||||||
$(DIRECTORY)/src/windml/*.[ch] \
|
$(DIRECTORY)/src/FX/*.def \
|
||||||
$(DIRECTORY)/src/windml/tornado/*.c \
|
$(DIRECTORY)/src/FX/X86/Makefile.am \
|
||||||
$(DIRECTORY)/src/windml/tornado/*.cdf \
|
$(DIRECTORY)/src/FX/X86/Makefile.in \
|
||||||
$(DIRECTORY)/src/windml/man3/*.3 \
|
$(DIRECTORY)/src/FX/X86/*.[Shc] \
|
||||||
$(DIRECTORY)/src/windml/man3/*.html \
|
$(DIRECTORY)/src/GGI/Makefile.am \
|
||||||
$(DIRECTORY)/src/DOS/*.[chS] \
|
$(DIRECTORY)/src/GGI/Makefile.in \
|
||||||
$(DIRECTORY)/src/DOS/vesa/*.[ch] \
|
$(DIRECTORY)/src/GGI/*.[ch] \
|
||||||
$(DIRECTORY)/src/BeOS/*.cpp \
|
$(DIRECTORY)/src/GGI/ggimesa.conf.in \
|
||||||
$(DIRECTORY)/src/FX/Makefile.am \
|
$(DIRECTORY)/src/GGI/default/*.c \
|
||||||
$(DIRECTORY)/src/FX/Makefile.in \
|
$(DIRECTORY)/src/GGI/default/Makefile.am \
|
||||||
$(DIRECTORY)/src/FX/libMesaFX_la_SOURCES \
|
$(DIRECTORY)/src/GGI/default/Makefile.in \
|
||||||
$(DIRECTORY)/src/FX/*.[ch] \
|
$(DIRECTORY)/src/GGI/default/genkgi.conf.in \
|
||||||
$(DIRECTORY)/src/FX/*.def \
|
$(DIRECTORY)/src/GGI/display/*.c \
|
||||||
$(DIRECTORY)/src/FX/X86/Makefile.am \
|
$(DIRECTORY)/src/GGI/display/Makefile.am \
|
||||||
$(DIRECTORY)/src/FX/X86/Makefile.in \
|
$(DIRECTORY)/src/GGI/display/Makefile.in \
|
||||||
$(DIRECTORY)/src/FX/X86/*.[Shc] \
|
$(DIRECTORY)/src/GGI/display/fbdev.conf.in \
|
||||||
$(DIRECTORY)/src/GGI/Makefile.am \
|
$(DIRECTORY)/src/GGI/include/Makefile.am \
|
||||||
$(DIRECTORY)/src/GGI/Makefile.in \
|
$(DIRECTORY)/src/GGI/include/Makefile.in \
|
||||||
$(DIRECTORY)/src/GGI/*.[ch] \
|
$(DIRECTORY)/src/GGI/include/ggi/Makefile.am \
|
||||||
$(DIRECTORY)/src/GGI/ggimesa.conf.in \
|
$(DIRECTORY)/src/GGI/include/ggi/Makefile.in \
|
||||||
$(DIRECTORY)/src/GGI/default/*.c \
|
$(DIRECTORY)/src/GGI/include/ggi/mesa/Makefile.am \
|
||||||
$(DIRECTORY)/src/GGI/default/Makefile.am \
|
$(DIRECTORY)/src/GGI/include/ggi/mesa/Makefile.in \
|
||||||
$(DIRECTORY)/src/GGI/default/Makefile.in \
|
$(DIRECTORY)/src/GGI/include/ggi/mesa/*.h \
|
||||||
$(DIRECTORY)/src/GGI/default/genkgi.conf.in \
|
$(DIRECTORY)/src/KNOWN_BUGS \
|
||||||
$(DIRECTORY)/src/GGI/display/*.c \
|
$(DIRECTORY)/src/MGL/*.[ch] \
|
||||||
$(DIRECTORY)/src/GGI/display/Makefile.am \
|
$(DIRECTORY)/src/MGL/*.txt \
|
||||||
$(DIRECTORY)/src/GGI/display/Makefile.in \
|
$(DIRECTORY)/src/OSmesa/Makefile.am \
|
||||||
$(DIRECTORY)/src/GGI/display/fbdev.conf.in \
|
$(DIRECTORY)/src/OSmesa/Makefile.in \
|
||||||
$(DIRECTORY)/src/GGI/include/Makefile.am \
|
$(DIRECTORY)/src/OSmesa/*.[ch] \
|
||||||
$(DIRECTORY)/src/GGI/include/Makefile.in \
|
$(DIRECTORY)/src/S3/*.[ch] \
|
||||||
$(DIRECTORY)/src/GGI/include/ggi/Makefile.am \
|
$(DIRECTORY)/src/S3/*.def \
|
||||||
$(DIRECTORY)/src/GGI/include/ggi/Makefile.in \
|
$(DIRECTORY)/src/S3/*.mak \
|
||||||
$(DIRECTORY)/src/GGI/include/ggi/mesa/Makefile.am \
|
$(DIRECTORY)/src/S3/*.rc \
|
||||||
$(DIRECTORY)/src/GGI/include/ggi/mesa/Makefile.in \
|
$(DIRECTORY)/src/SVGA/Makefile.am \
|
||||||
$(DIRECTORY)/src/GGI/include/ggi/mesa/*.h \
|
$(DIRECTORY)/src/SVGA/Makefile.in \
|
||||||
$(DIRECTORY)/src/KNOWN_BUGS \
|
$(DIRECTORY)/src/SVGA/*.[ch] \
|
||||||
$(DIRECTORY)/src/OSmesa/Makefile.am \
|
$(DIRECTORY)/src/Windows/*.[ch] \
|
||||||
$(DIRECTORY)/src/OSmesa/Makefile.in \
|
$(DIRECTORY)/src/Windows/*.def \
|
||||||
$(DIRECTORY)/src/OSmesa/Makefile.win \
|
$(DIRECTORY)/src/X/Makefile.am \
|
||||||
$(DIRECTORY)/src/OSmesa/osmesa.def \
|
$(DIRECTORY)/src/X/Makefile.in \
|
||||||
$(DIRECTORY)/src/OSmesa/*.[ch] \
|
$(DIRECTORY)/src/X/*.[ch] \
|
||||||
$(DIRECTORY)/src/SPARC/*.[chS] \
|
$(DIRECTORY)/src/X86/*.[ch] \
|
||||||
$(DIRECTORY)/src/SPARC/Makefile.am \
|
$(DIRECTORY)/src/X86/Makefile.am \
|
||||||
$(DIRECTORY)/src/SPARC/Makefile.in \
|
$(DIRECTORY)/src/X86/Makefile.in \
|
||||||
$(DIRECTORY)/src/SVGA/Makefile.am \
|
$(DIRECTORY)/src/X86/*.m4 \
|
||||||
$(DIRECTORY)/src/SVGA/Makefile.in \
|
$(DIRECTORY)/src/X86/*.S \
|
||||||
$(DIRECTORY)/src/SVGA/*.[ch] \
|
$(DIRECTORY)/src-glu/README[12] \
|
||||||
$(DIRECTORY)/src/Trace/*.[ch] \
|
$(DIRECTORY)/src-glu/Makefile* \
|
||||||
$(DIRECTORY)/src/Trace/Makefile.am \
|
$(DIRECTORY)/src-glu/descrip.mms \
|
||||||
$(DIRECTORY)/src/Trace/Makefile.in \
|
$(DIRECTORY)/src-glu/mms_depend \
|
||||||
$(DIRECTORY)/src/Windows/*.[ch] \
|
$(DIRECTORY)/src-glu/*.def \
|
||||||
$(DIRECTORY)/src/Windows/*.def \
|
$(DIRECTORY)/src-glu/depend \
|
||||||
$(DIRECTORY)/src/X/Makefile.am \
|
$(DIRECTORY)/src-glu/*.[ch] \
|
||||||
$(DIRECTORY)/src/X/Makefile.in \
|
$(DIRECTORY)/widgets-mesa/ChangeLog \
|
||||||
$(DIRECTORY)/src/X/*.[ch] \
|
$(DIRECTORY)/widgets-mesa/INSTALL \
|
||||||
$(DIRECTORY)/src/X86/*.[ch] \
|
$(DIRECTORY)/widgets-mesa/README \
|
||||||
$(DIRECTORY)/src/X86/Makefile.am \
|
$(DIRECTORY)/widgets-mesa/TODO \
|
||||||
$(DIRECTORY)/src/X86/Makefile.in \
|
$(DIRECTORY)/widgets-mesa/configure \
|
||||||
$(DIRECTORY)/src/X86/*.S \
|
$(DIRECTORY)/widgets-mesa/demos/ChangeLog \
|
||||||
$(DIRECTORY)/si-glu/Makefile.am \
|
$(DIRECTORY)/widgets-mesa/demos/Cube \
|
||||||
$(DIRECTORY)/si-glu/Makefile.in \
|
$(DIRECTORY)/widgets-mesa/demos/Ed \
|
||||||
$(DIRECTORY)/si-glu/Makefile.X11 \
|
$(DIRECTORY)/widgets-mesa/demos/Makefile.in \
|
||||||
$(DIRECTORY)/si-glu/Makefile.win \
|
$(DIRECTORY)/widgets-mesa/demos/Mcube \
|
||||||
$(DIRECTORY)/si-glu/glu.def \
|
$(DIRECTORY)/widgets-mesa/demos/Tea \
|
||||||
$(DIRECTORY)/si-glu/dummy.cc \
|
$(DIRECTORY)/widgets-mesa/demos/*.[ch] \
|
||||||
$(DIRECTORY)/si-glu/descrip.mms \
|
$(DIRECTORY)/widgets-mesa/demos/events \
|
||||||
$(DIRECTORY)/si-glu/mesaglu.opt \
|
$(DIRECTORY)/widgets-mesa/include/GL/ChangeLog \
|
||||||
$(DIRECTORY)/si-glu/include/gluos.h \
|
$(DIRECTORY)/widgets-mesa/include/GL/*.h \
|
||||||
$(DIRECTORY)/si-glu/include/Makefile.am \
|
$(DIRECTORY)/widgets-mesa/include/GL/Makefile.in \
|
||||||
$(DIRECTORY)/si-glu/include/Makefile.in \
|
$(DIRECTORY)/widgets-mesa/man/ChangeLog \
|
||||||
$(DIRECTORY)/si-glu/libnurbs/Makefile.am \
|
$(DIRECTORY)/widgets-mesa/man/GL* \
|
||||||
$(DIRECTORY)/si-glu/libnurbs/Makefile.in \
|
$(DIRECTORY)/widgets-mesa/man/Makefile.in \
|
||||||
$(DIRECTORY)/si-glu/libnurbs/interface/*.h \
|
$(DIRECTORY)/widgets-mesa/man/Mesa* \
|
||||||
$(DIRECTORY)/si-glu/libnurbs/interface/*.cc \
|
$(DIRECTORY)/widgets-mesa/src/ChangeLog \
|
||||||
$(DIRECTORY)/si-glu/libnurbs/interface/libNIFac_la_SOURCES \
|
$(DIRECTORY)/widgets-sgi/*.[ch] \
|
||||||
$(DIRECTORY)/si-glu/libnurbs/interface/Makefile.am \
|
$(DIRECTORY)/widgets-sgi/Makefile* \
|
||||||
$(DIRECTORY)/si-glu/libnurbs/interface/Makefile.in \
|
$(DIRECTORY)/widgets-sgi/README \
|
||||||
$(DIRECTORY)/si-glu/libnurbs/internals/*.h \
|
$(DIRECTORY)/util/README \
|
||||||
$(DIRECTORY)/si-glu/libnurbs/internals/*.cc \
|
$(DIRECTORY)/util/Makefile.am \
|
||||||
$(DIRECTORY)/si-glu/libnurbs/internals/libNInt_la_SOURCES \
|
$(DIRECTORY)/util/Makefile.in \
|
||||||
$(DIRECTORY)/si-glu/libnurbs/internals/Makefile.am \
|
$(DIRECTORY)/util/*.[ch] \
|
||||||
$(DIRECTORY)/si-glu/libnurbs/internals/Makefile.in \
|
$(DIRECTORY)/util/sampleMakefile \
|
||||||
$(DIRECTORY)/si-glu/libnurbs/nurbtess/*.h \
|
$(DIRECTORY)/vms/analyze_map.com \
|
||||||
$(DIRECTORY)/si-glu/libnurbs/nurbtess/*.cc \
|
$(DIRECTORY)/vms/xlib.opt \
|
||||||
$(DIRECTORY)/si-glu/libnurbs/nurbtess/libNTess_la_SOURCES \
|
$(DIRECTORY)/vms/xlib_share.opt \
|
||||||
$(DIRECTORY)/si-glu/libnurbs/nurbtess/Makefile.am \
|
$(DIRECTORY)/BeOS/Makefile \
|
||||||
$(DIRECTORY)/si-glu/libnurbs/nurbtess/Makefile.in \
|
$(DIRECTORY)/BeOS/*.cpp \
|
||||||
$(DIRECTORY)/si-glu/libtess/README \
|
$(DIRECTORY)/WIN32/NMAKE.MAK \
|
||||||
$(DIRECTORY)/si-glu/libtess/alg-outline \
|
$(DIRECTORY)/WIN32/NMAKE.MIF \
|
||||||
$(DIRECTORY)/si-glu/libtess/*.[ch] \
|
$(DIRECTORY)/WIN32/RES/*rc \
|
||||||
$(DIRECTORY)/si-glu/libtess/libtess_la_SOURCES \
|
$(DIRECTORY)/WIN32/RES/*def \
|
||||||
$(DIRECTORY)/si-glu/libtess/Makefile.am \
|
$(DIRECTORY)/WIN32/RULES/lib.* \
|
||||||
$(DIRECTORY)/si-glu/libtess/Makefile.in \
|
$(DIRECTORY)/WIN32/RULES/progs.* \
|
||||||
$(DIRECTORY)/si-glu/libutil/*.[ch] \
|
$(DIRECTORY)/macos/README \
|
||||||
$(DIRECTORY)/si-glu/libutil/libutil_la_SOURCES \
|
$(DIRECTORY)/macos/gli_api/*.h \
|
||||||
$(DIRECTORY)/si-glu/libutil/Makefile.am \
|
$(DIRECTORY)/macos/include-mac/*.h \
|
||||||
$(DIRECTORY)/si-glu/libutil/Makefile.in \
|
$(DIRECTORY)/macos/libraries/*.stub \
|
||||||
$(DIRECTORY)/src-glu/README[12] \
|
$(DIRECTORY)/macos/libraries/*Stub \
|
||||||
$(DIRECTORY)/src-glu/Makefile* \
|
$(DIRECTORY)/macos/projects/*.mcp \
|
||||||
$(DIRECTORY)/src-glu/descrip.mms \
|
$(DIRECTORY)/macos/projects/*.exp \
|
||||||
$(DIRECTORY)/src-glu/mms_depend \
|
$(DIRECTORY)/macos/projects/*.h \
|
||||||
$(DIRECTORY)/src-glu/*.def \
|
$(DIRECTORY)/macos/resources/*.c \
|
||||||
$(DIRECTORY)/src-glu/depend \
|
$(DIRECTORY)/macos/resources/*.r \
|
||||||
$(DIRECTORY)/src-glu/*.[ch] \
|
$(DIRECTORY)/macos/resources/*.rsrc \
|
||||||
$(DIRECTORY)/widgets-mesa/ChangeLog \
|
$(DIRECTORY)/macos/src-agl/*.exp \
|
||||||
$(DIRECTORY)/widgets-mesa/INSTALL \
|
$(DIRECTORY)/macos/src-agl/*.[ch] \
|
||||||
$(DIRECTORY)/widgets-mesa/Makefile.in \
|
$(DIRECTORY)/macos/src-gli/*.[ch] \
|
||||||
$(DIRECTORY)/widgets-mesa/README \
|
$(DIRECTORY)/OpenStep \
|
||||||
$(DIRECTORY)/widgets-mesa/TODO \
|
|
||||||
$(DIRECTORY)/widgets-mesa/configure \
|
|
||||||
$(DIRECTORY)/widgets-mesa/configure.in \
|
|
||||||
$(DIRECTORY)/widgets-mesa/demos/ChangeLog \
|
|
||||||
$(DIRECTORY)/widgets-mesa/demos/Cube \
|
|
||||||
$(DIRECTORY)/widgets-mesa/demos/Ed \
|
|
||||||
$(DIRECTORY)/widgets-mesa/demos/Makefile.in \
|
|
||||||
$(DIRECTORY)/widgets-mesa/demos/Mcube \
|
|
||||||
$(DIRECTORY)/widgets-mesa/demos/Tea \
|
|
||||||
$(DIRECTORY)/widgets-mesa/demos/*.[ch] \
|
|
||||||
$(DIRECTORY)/widgets-mesa/demos/events \
|
|
||||||
$(DIRECTORY)/widgets-mesa/include/GL/ChangeLog \
|
|
||||||
$(DIRECTORY)/widgets-mesa/include/GL/*.h \
|
|
||||||
$(DIRECTORY)/widgets-mesa/include/GL/Makefile.in \
|
|
||||||
$(DIRECTORY)/widgets-mesa/man/ChangeLog \
|
|
||||||
$(DIRECTORY)/widgets-mesa/man/GL* \
|
|
||||||
$(DIRECTORY)/widgets-mesa/man/Makefile.in \
|
|
||||||
$(DIRECTORY)/widgets-mesa/man/Mesa* \
|
|
||||||
$(DIRECTORY)/widgets-mesa/src/ChangeLog \
|
|
||||||
$(DIRECTORY)/widgets-mesa/src/*.c \
|
|
||||||
$(DIRECTORY)/widgets-mesa/src/Makefile.in \
|
|
||||||
$(DIRECTORY)/widgets-sgi/*.[ch] \
|
|
||||||
$(DIRECTORY)/widgets-sgi/Makefile* \
|
|
||||||
$(DIRECTORY)/widgets-sgi/README \
|
|
||||||
$(DIRECTORY)/util/README \
|
|
||||||
$(DIRECTORY)/util/Makefile.am \
|
|
||||||
$(DIRECTORY)/util/Makefile.in \
|
|
||||||
$(DIRECTORY)/util/*.[ch] \
|
|
||||||
$(DIRECTORY)/util/sampleMakefile \
|
|
||||||
$(DIRECTORY)/vms/analyze_map.com \
|
|
||||||
$(DIRECTORY)/vms/xlib.opt \
|
|
||||||
$(DIRECTORY)/vms/xlib_share.opt \
|
|
||||||
$(DIRECTORY)/BeOS/Makefile \
|
|
||||||
$(DIRECTORY)/BeOS/*.cpp
|
|
||||||
|
|
||||||
OBSOLETE_LIB_FILES = \
|
|
||||||
$(DIRECTORY)/src/Allegro/*.[ch] \
|
|
||||||
$(DIRECTORY)/src/D3D/*.cpp \
|
|
||||||
$(DIRECTORY)/src/D3D/*.CPP \
|
|
||||||
$(DIRECTORY)/src/D3D/*.h \
|
|
||||||
$(DIRECTORY)/src/D3D/*.H \
|
|
||||||
$(DIRECTORY)/src/D3D/*.c \
|
|
||||||
$(DIRECTORY)/src/D3D/*.C \
|
|
||||||
$(DIRECTORY)/src/D3D/MAKEFILE \
|
|
||||||
$(DIRECTORY)/src/D3D/*bat \
|
|
||||||
$(DIRECTORY)/src/D3D/*DEF \
|
|
||||||
$(DIRECTORY)/src/DOS/DEPEND.DOS \
|
|
||||||
$(DIRECTORY)/src/S3/*.[ch] \
|
|
||||||
$(DIRECTORY)/src/S3/*.def \
|
|
||||||
$(DIRECTORY)/src/S3/*.mak \
|
|
||||||
$(DIRECTORY)/src/S3/*.rc \
|
|
||||||
$(DIRECTORY)/macos/README \
|
|
||||||
$(DIRECTORY)/macos/gli_api/*.h \
|
|
||||||
$(DIRECTORY)/macos/cglpane/CGLPane.* \
|
|
||||||
$(DIRECTORY)/macos/include-mac/*.h \
|
|
||||||
$(DIRECTORY)/macos/libraries/*.stub \
|
|
||||||
$(DIRECTORY)/macos/libraries/*Stub \
|
|
||||||
$(DIRECTORY)/macos/projects/*.mcp \
|
|
||||||
$(DIRECTORY)/macos/projects/*.exp \
|
|
||||||
$(DIRECTORY)/macos/projects/*.h \
|
|
||||||
$(DIRECTORY)/macos/resources/*.c \
|
|
||||||
$(DIRECTORY)/macos/resources/*.r \
|
|
||||||
$(DIRECTORY)/macos/resources/*.rsrc \
|
|
||||||
$(DIRECTORY)/macos/src-agl/*.exp \
|
|
||||||
$(DIRECTORY)/macos/src-agl/*.[ch] \
|
|
||||||
$(DIRECTORY)/macos/src-gli/*.[ch] \
|
|
||||||
$(DIRECTORY)/OpenStep
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DEMO_FILES = \
|
DEMO_FILES = \
|
||||||
$(DIRECTORY)/include/GL/glut.h \
|
$(DIRECTORY)/include/GL/glut.h \
|
||||||
$(DIRECTORY)/include/GL/glutf90.h \
|
$(DIRECTORY)/include/GL/glutf90.h \
|
||||||
|
$(DIRECTORY)/include/GL/glut_h.dja \
|
||||||
$(DIRECTORY)/src-glut/Makefile* \
|
$(DIRECTORY)/src-glut/Makefile* \
|
||||||
$(DIRECTORY)/src-glut/depend \
|
$(DIRECTORY)/src-glut/depend \
|
||||||
$(DIRECTORY)/src-glut/*def \
|
$(DIRECTORY)/src-glut/*def \
|
||||||
$(DIRECTORY)/src-glut/descrip.mms \
|
$(DIRECTORY)/src-glut/descrip.mms \
|
||||||
$(DIRECTORY)/src-glut/mms_depend \
|
$(DIRECTORY)/src-glut/mms_depend \
|
||||||
$(DIRECTORY)/src-glut/*.[ch] \
|
$(DIRECTORY)/src-glut/*.[ch] \
|
||||||
$(DIRECTORY)/src-glut.dos/*.[ch] \
|
$(DIRECTORY)/src-glut.dja/* \
|
||||||
$(DIRECTORY)/src-glut.dos/Makefile.DJ \
|
$(DIRECTORY)/src-glut.beos/Makefile \
|
||||||
$(DIRECTORY)/src-glut.dos/PC_HW/*.[chS] \
|
$(DIRECTORY)/src-glut.beos/*.cpp \
|
||||||
|
$(DIRECTORY)/src-glut.beos/*.h \
|
||||||
$(DIRECTORY)/images/* \
|
$(DIRECTORY)/images/* \
|
||||||
$(DIRECTORY)/demos/Makefile* \
|
$(DIRECTORY)/demos/Makefile* \
|
||||||
$(DIRECTORY)/demos/descrip.mms \
|
$(DIRECTORY)/demos/descrip.mms \
|
||||||
$(DIRECTORY)/demos/*.[ch] \
|
$(DIRECTORY)/demos/*.[ch] \
|
||||||
$(DIRECTORY)/demos/*.cxx \
|
|
||||||
$(DIRECTORY)/demos/*.dat \
|
$(DIRECTORY)/demos/*.dat \
|
||||||
$(DIRECTORY)/demos/README \
|
|
||||||
$(DIRECTORY)/xdemos/Makefile* \
|
$(DIRECTORY)/xdemos/Makefile* \
|
||||||
$(DIRECTORY)/xdemos/descrip.mms \
|
$(DIRECTORY)/xdemos/descrip.mms \
|
||||||
$(DIRECTORY)/xdemos/*.[chf] \
|
$(DIRECTORY)/xdemos/*.[cf] \
|
||||||
$(DIRECTORY)/book/Makefile* \
|
$(DIRECTORY)/book/Makefile* \
|
||||||
$(DIRECTORY)/book/README \
|
$(DIRECTORY)/book/README \
|
||||||
$(DIRECTORY)/book/*.[ch] \
|
$(DIRECTORY)/book/*.[ch] \
|
||||||
$(DIRECTORY)/samples/Makefile* \
|
$(DIRECTORY)/samples/Makefile* \
|
||||||
$(DIRECTORY)/samples/README \
|
$(DIRECTORY)/samples/README \
|
||||||
$(DIRECTORY)/samples/*.c \
|
$(DIRECTORY)/samples/*.c \
|
||||||
|
$(DIRECTORY)/3Dfx \
|
||||||
$(DIRECTORY)/mtdemos \
|
$(DIRECTORY)/mtdemos \
|
||||||
$(DIRECTORY)/windmldemos/Makefile.ugl \
|
|
||||||
$(DIRECTORY)/windmldemos/*.c \
|
|
||||||
$(DIRECTORY)/windmldemos/*.bmp \
|
|
||||||
$(DIRECTORY)/ggi
|
$(DIRECTORY)/ggi
|
||||||
|
|
||||||
OBSOLETE_DEMO_FILES = \
|
|
||||||
$(DIRECTORY)/include/GL/glut_h.dja \
|
|
||||||
$(DIRECTORY)/src-glut.dja/* \
|
|
||||||
$(DIRECTORY)/src-glut.beos/Makefile \
|
|
||||||
$(DIRECTORY)/src-glut.beos/*.cpp \
|
|
||||||
$(DIRECTORY)/src-glut.beos/*.h \
|
|
||||||
|
|
||||||
|
|
||||||
SI_GLU_FILES = \
|
|
||||||
$(DIRECTORY)/Makefile* \
|
|
||||||
$(DIRECTORY)/Make-config \
|
|
||||||
$(DIRECTORY)/bin/mklib* \
|
|
||||||
$(DIRECTORY)/include/GL/glu.h \
|
|
||||||
$(DIRECTORY)/si-glu/Makefile.X11 \
|
|
||||||
$(DIRECTORY)/si-glu/include/gluos.h \
|
|
||||||
$(DIRECTORY)/si-glu/libnurbs/interface/*.h \
|
|
||||||
$(DIRECTORY)/si-glu/libnurbs/interface/*.cc \
|
|
||||||
$(DIRECTORY)/si-glu/libnurbs/internals/*.h \
|
|
||||||
$(DIRECTORY)/si-glu/libnurbs/internals/*.cc \
|
|
||||||
$(DIRECTORY)/si-glu/libnurbs/nurbstess/*.h \
|
|
||||||
$(DIRECTORY)/si-glu/libnurbs/nurbstess/*.cc \
|
|
||||||
$(DIRECTORY)/si-glu/libtess/README \
|
|
||||||
$(DIRECTORY)/si-glu/libtess/alg-outline \
|
|
||||||
$(DIRECTORY)/si-glu/libtess/*.[ch] \
|
|
||||||
$(DIRECTORY)/si-glu/libutil/*.[ch]
|
|
||||||
|
|
||||||
GLU_FILES = \
|
|
||||||
$(DIRECTORY)/Makefile* \
|
|
||||||
$(DIRECTORY)/Make-config \
|
|
||||||
$(DIRECTORY)/bin/mklib* \
|
|
||||||
$(DIRECTORY)/include/GL/gl.h \
|
|
||||||
$(DIRECTORY)/include/GL/gl_mangle.h \
|
|
||||||
$(DIRECTORY)/include/GL/glext.h \
|
|
||||||
$(DIRECTORY)/include/GL/glu.h \
|
|
||||||
$(DIRECTORY)/include/GL/glu_mangle.h \
|
|
||||||
$(DIRECTORY)/src-glu/README[12] \
|
|
||||||
$(DIRECTORY)/src-glu/Makefile* \
|
|
||||||
$(DIRECTORY)/src-glu/descrip.mms \
|
|
||||||
$(DIRECTORY)/src-glu/mms_depend \
|
|
||||||
$(DIRECTORY)/src-glu/*.def \
|
|
||||||
$(DIRECTORY)/src-glu/depend \
|
|
||||||
$(DIRECTORY)/src-glu/*.[ch]
|
|
||||||
|
|
||||||
GLUT_FILES = \
|
|
||||||
$(DIRECTORY)/Makefile* \
|
|
||||||
$(DIRECTORY)/Make-config \
|
|
||||||
$(DIRECTORY)/bin/mklib* \
|
|
||||||
$(DIRECTORY)/include/GL/gl.h \
|
|
||||||
$(DIRECTORY)/include/GL/gl_mangle.h \
|
|
||||||
$(DIRECTORY)/include/GL/glext.h \
|
|
||||||
$(DIRECTORY)/include/GL/glu.h \
|
|
||||||
$(DIRECTORY)/include/GL/glu_mangle.h \
|
|
||||||
$(DIRECTORY)/include/GL/glut.h \
|
|
||||||
$(DIRECTORY)/include/GL/glutf90.h \
|
|
||||||
$(DIRECTORY)/src-glut/Makefile* \
|
|
||||||
$(DIRECTORY)/src-glut/depend \
|
|
||||||
$(DIRECTORY)/src-glut/*def \
|
|
||||||
$(DIRECTORY)/src-glut/descrip.mms \
|
|
||||||
$(DIRECTORY)/src-glut/mms_depend \
|
|
||||||
$(DIRECTORY)/src-glut/*.[ch]
|
|
||||||
|
|
||||||
|
|
||||||
OBSOLETE_GLUT_FILES = \
|
|
||||||
$(DIRECTORY)/include/GL/glut_h.dja \
|
|
||||||
$(DIRECTORY)/src-glut.dja/* \
|
|
||||||
$(DIRECTORY)/src-glut.beos/Makefile \
|
|
||||||
$(DIRECTORY)/src-glut.beos/*.cpp \
|
|
||||||
$(DIRECTORY)/src-glut.beos/*.h
|
|
||||||
|
|
||||||
|
|
||||||
lib_tar:
|
lib_tar:
|
||||||
cp Makefile.X11 Makefile ; \
|
cp Makefile.X11 Makefile ; \
|
||||||
cd .. ; \
|
cd .. ; \
|
||||||
tar -cvf $(LIB_NAME).tar $(LIB_FILES) ; \
|
tar --exclude CVS -c -v -f $(LIB_NAME).tar $(LIB_FILES) ; \
|
||||||
gzip $(LIB_NAME).tar ; \
|
gzip $(LIB_NAME).tar ; \
|
||||||
mv $(LIB_NAME).tar.gz $(DIRECTORY)
|
mv $(LIB_NAME).tar.gz $(DIRECTORY)
|
||||||
|
|
||||||
demo_tar:
|
demo_tar:
|
||||||
cd .. ; \
|
cd .. ; \
|
||||||
tar -cvf $(DEMO_NAME).tar $(DEMO_FILES) ; \
|
tar --exclude CVS -c -v -f $(DEMO_NAME).tar $(DEMO_FILES) ; \
|
||||||
gzip $(DEMO_NAME).tar ; \
|
gzip $(DEMO_NAME).tar ; \
|
||||||
mv $(DEMO_NAME).tar.gz $(DIRECTORY)
|
mv $(DEMO_NAME).tar.gz $(DIRECTORY)
|
||||||
|
|
||||||
glu_tar:
|
|
||||||
cp Makefile.X11 Makefile ; \
|
|
||||||
cd .. ; \
|
|
||||||
tar -cvf $(GLU_NAME).tar $(GLU_FILES) ; \
|
|
||||||
gzip $(GLU_NAME).tar ; \
|
|
||||||
mv $(GLU_NAME).tar.gz $(DIRECTORY)
|
|
||||||
|
|
||||||
glut_tar:
|
|
||||||
cp Makefile.X11 Makefile ; \
|
|
||||||
cd .. ; \
|
|
||||||
tar -cvf $(GLUT_NAME).tar $(GLUT_FILES) ; \
|
|
||||||
gzip $(GLUT_NAME).tar ; \
|
|
||||||
mv $(GLUT_NAME).tar.gz $(DIRECTORY)
|
|
||||||
|
|
||||||
|
|
||||||
lib_zip:
|
lib_zip:
|
||||||
-rm $(LIB_NAME).zip ; \
|
-rm $(LIB_NAME).zip
|
||||||
cp Makefile.X11 Makefile ; \
|
|
||||||
cd .. ; \
|
cd .. ; \
|
||||||
zip -r $(LIB_NAME).zip $(LIB_FILES) ; \
|
zip -r $(LIB_NAME).zip $(LIB_FILES) ; \
|
||||||
mv $(LIB_NAME).zip $(DIRECTORY)
|
mv $(LIB_NAME).zip $(DIRECTORY)
|
||||||
|
|
||||||
demo_zip:
|
demo_zip:
|
||||||
-rm $(DEMO_NAME).zip ; \
|
-rm $(DEMO_NAME).zip
|
||||||
cd .. ; \
|
cd .. ; \
|
||||||
zip -r $(DEMO_NAME).zip $(DEMO_FILES) ; \
|
zip -r $(DEMO_NAME).zip $(DEMO_FILES) ; \
|
||||||
mv $(DEMO_NAME).zip $(DIRECTORY)
|
mv $(DEMO_NAME).zip $(DIRECTORY)
|
||||||
|
|||||||
@@ -1,94 +0,0 @@
|
|||||||
Name
|
|
||||||
|
|
||||||
MESA_agp_offset
|
|
||||||
|
|
||||||
Name Strings
|
|
||||||
|
|
||||||
GLX_MESA_agp_offset
|
|
||||||
|
|
||||||
Contact
|
|
||||||
|
|
||||||
Brian Paul, Tungsten Graphics, Inc. (brian 'at' tungstengraphics.com)
|
|
||||||
Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com)
|
|
||||||
|
|
||||||
Status
|
|
||||||
|
|
||||||
Shipping (Mesa 4.0.4 and later. Only implemented in particular
|
|
||||||
XFree86/DRI drivers.)
|
|
||||||
|
|
||||||
Version
|
|
||||||
|
|
||||||
1.0
|
|
||||||
|
|
||||||
Number
|
|
||||||
|
|
||||||
TBD
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
|
|
||||||
OpenGL 1.0 or later is required
|
|
||||||
GLX_NV_vertex_array_range is required.
|
|
||||||
This extensions is written against the OpenGL 1.4 Specification.
|
|
||||||
|
|
||||||
Overview
|
|
||||||
|
|
||||||
This extensions provides a way to convert pointers in an AGP memory
|
|
||||||
region into byte offsets into the AGP aperture.
|
|
||||||
Note, this extension depends on GLX_NV_vertex_array_range, for which
|
|
||||||
no real specification exists. See GL_NV_vertex_array_range for more
|
|
||||||
information.
|
|
||||||
|
|
||||||
IP Status
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Issues
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
New Procedures and Functions
|
|
||||||
|
|
||||||
GLuint glXGetAGPOffsetMESA( const GLvoid *pointer )
|
|
||||||
|
|
||||||
New Tokens
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to the OpenGL 1.4 Specification
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to Chapter 3 the GLX 1.4 Specification (Functions and Errors)
|
|
||||||
|
|
||||||
Add a new section, 3.6 as follows:
|
|
||||||
|
|
||||||
3.6 AGP Memory Access
|
|
||||||
|
|
||||||
On "PC" computers, AGP memory can be allocated with glXAllocateMemoryNV
|
|
||||||
and freed with glXFreeMemoryNV. Sometimes it's useful to know where a
|
|
||||||
block of AGP memory is located with respect to the start of the AGP
|
|
||||||
aperature. The function
|
|
||||||
|
|
||||||
GLuint glXGetAGPOffsetMESA( const GLvoid *pointer )
|
|
||||||
|
|
||||||
Returns the offset of the given memory block from the start of AGP
|
|
||||||
memory in basic machine units (i.e. bytes). If pointer is invalid
|
|
||||||
the value ~0 will be returned.
|
|
||||||
|
|
||||||
GLX Protocol
|
|
||||||
|
|
||||||
None. This is a client side-only extension.
|
|
||||||
|
|
||||||
Errors
|
|
||||||
|
|
||||||
glXGetAGPOffsetMESA will return ~0 if the pointer does not point to
|
|
||||||
an AGP memory region.
|
|
||||||
|
|
||||||
New State
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Revision History
|
|
||||||
|
|
||||||
20 September 2002 - Initial draft
|
|
||||||
2 October 2002 - finished GLX chapter 3 additions
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
Name
|
|
||||||
|
|
||||||
MESA_copy_sub_buffer
|
|
||||||
|
|
||||||
Name Strings
|
|
||||||
|
|
||||||
GLX_MESA_copy_sub_buffer
|
|
||||||
|
|
||||||
Contact
|
|
||||||
|
|
||||||
Brian Paul (brian 'at' mesa3d.org)
|
|
||||||
|
|
||||||
Status
|
|
||||||
|
|
||||||
Shipping since Mesa 2.6 in February, 1998.
|
|
||||||
|
|
||||||
Version
|
|
||||||
|
|
||||||
Last Modified Date: 8 June 2000
|
|
||||||
|
|
||||||
Number
|
|
||||||
|
|
||||||
215
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
|
|
||||||
OpenGL 1.0 or later is required.
|
|
||||||
GLX 1.0 or later is required.
|
|
||||||
|
|
||||||
Overview
|
|
||||||
|
|
||||||
The glxCopySubBufferMESA() function copies a rectangular region
|
|
||||||
of the back color buffer to the front color buffer. This can be
|
|
||||||
used to quickly repaint 3D windows in response to expose events
|
|
||||||
when the back color buffer cannot be damaged by other windows.
|
|
||||||
|
|
||||||
IP Status
|
|
||||||
|
|
||||||
Open-source; freely implementable.
|
|
||||||
|
|
||||||
Issues
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
New Procedures and Functions
|
|
||||||
|
|
||||||
void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable,
|
|
||||||
int x, int y, int width, int height );
|
|
||||||
|
|
||||||
New Tokens
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors)
|
|
||||||
|
|
||||||
Add to section 3.3.10 Double Buffering:
|
|
||||||
|
|
||||||
The function
|
|
||||||
|
|
||||||
void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable,
|
|
||||||
int x, int y, int width, int height );
|
|
||||||
|
|
||||||
may be used to copy a rectangular region of the back color buffer to
|
|
||||||
the front color buffer. This can be used to quickly repaint 3D windows
|
|
||||||
in response to expose events when the back color buffer cannot be
|
|
||||||
damaged by other windows.
|
|
||||||
|
|
||||||
<x> and <y> indicates the lower-left corner of the region to copy and
|
|
||||||
<width> and <height> indicate the size in pixels. Coordinate (0,0)
|
|
||||||
corresponds to the lower-left pixel of the window, like glReadPixels.
|
|
||||||
|
|
||||||
GLX Protocol
|
|
||||||
|
|
||||||
None at this time. The extension is implemented in terms of ordinary
|
|
||||||
Xlib protocol inside of Mesa.
|
|
||||||
|
|
||||||
Errors
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
New State
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
Revision History
|
|
||||||
|
|
||||||
8 June 2000 - initial specification
|
|
||||||
|
|
||||||
@@ -1,138 +0,0 @@
|
|||||||
Name
|
|
||||||
|
|
||||||
MESA_pack_invert
|
|
||||||
|
|
||||||
Name Strings
|
|
||||||
|
|
||||||
GL_MESA_pack_invert
|
|
||||||
|
|
||||||
Contact
|
|
||||||
|
|
||||||
Brian Paul, Tungsten Graphics, Inc. (brian 'at' tungstengraphics.com)
|
|
||||||
Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com)
|
|
||||||
|
|
||||||
Status
|
|
||||||
|
|
||||||
Shipping (Mesa 4.0.4 and later)
|
|
||||||
|
|
||||||
Version
|
|
||||||
|
|
||||||
1.0
|
|
||||||
|
|
||||||
Number
|
|
||||||
|
|
||||||
TBD
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
|
|
||||||
OpenGL 1.0 or later is required
|
|
||||||
This extensions is written against the OpenGL 1.4 Specification.
|
|
||||||
|
|
||||||
Overview
|
|
||||||
|
|
||||||
This extension adds a new pixel storage parameter to indicate that
|
|
||||||
images are to be packed in top-to-bottom order instead of OpenGL's
|
|
||||||
conventional bottom-to-top order. Only pixel packing can be
|
|
||||||
inverted (i.e. for glReadPixels, glGetTexImage, glGetConvolutionFilter,
|
|
||||||
etc).
|
|
||||||
|
|
||||||
Almost all known image file formats store images in top-to-bottom
|
|
||||||
order. As it is, OpenGL reads images from the frame buffer in
|
|
||||||
bottom-to-top order. Thus, images usually have to be inverted before
|
|
||||||
writing them to a file with image I/O libraries. This extension
|
|
||||||
allows images to be read such that inverting isn't needed.
|
|
||||||
|
|
||||||
IP Status
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Issues
|
|
||||||
|
|
||||||
1. Should we also defined UNPACK_INVERT_MESA for glDrawPixels, etc?
|
|
||||||
|
|
||||||
Resolved: No, we're only concerned with pixel packing. There are other
|
|
||||||
solutions for inverting images when using glDrawPixels (negative Y pixel
|
|
||||||
zoom) or glTexImage (invert the vertex T coordinates). It would be easy
|
|
||||||
enough to define a complementary extension for pixel packing in the
|
|
||||||
future if needed.
|
|
||||||
|
|
||||||
New Procedures and Functions
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
New Tokens
|
|
||||||
|
|
||||||
Accepted by the <pname> parameter of PixelStorei and PixelStoref
|
|
||||||
and the <pname> parameter of GetIntegerv, GetFloatv, GetDoublev
|
|
||||||
and GetBooleanv:
|
|
||||||
|
|
||||||
PACK_INVERT_MESA 0x8758
|
|
||||||
|
|
||||||
Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation)
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization)
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment
|
|
||||||
Operations and the Frame Buffer)
|
|
||||||
|
|
||||||
Add the following entry to table 4.4 (PixelStore parameters) on page 182:
|
|
||||||
|
|
||||||
Parameter Name Type Initial Value Valid Range
|
|
||||||
---------------------------------------------------------
|
|
||||||
PACK_INVERT_MESA boolean FALSE TRUE/FALSE
|
|
||||||
|
|
||||||
In the section labeled "Placement in Client Memory" on page 184
|
|
||||||
insert the following text into the paragraph before the sentence
|
|
||||||
that starts with "If the format is RED, GREEN, BLUE...":
|
|
||||||
|
|
||||||
"The parameter PACK_INVERT_MESA controls whether the image is packed
|
|
||||||
in bottom-to-top order (the default) or top-to-bottom order. Equation
|
|
||||||
3.8 is modified as follows:
|
|
||||||
|
|
||||||
... the first element of the Nth row is indicated by
|
|
||||||
|
|
||||||
p + Nk, if PACK_INVERT_MESA is false
|
|
||||||
p + k * (H - 1) - Nk, if PACK_INVERT_MESA is true, where H is the
|
|
||||||
image height
|
|
||||||
"
|
|
||||||
|
|
||||||
Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions)
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to Chapter 6 of the OpenGL 1.4 Specification (State and
|
|
||||||
State Requests)
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to Appendix A of the OpenGL 1.4 Specification (Invariance)
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to the AGL/GLX/WGL Specifications
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
GLX Protocol
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Errors
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
New State
|
|
||||||
|
|
||||||
Add the following entry to table 6.20 (Pixels) on page 235:
|
|
||||||
|
|
||||||
Get Value Type Get Cmd Initial Value Description Sec Attribute
|
|
||||||
--------------------------------------------------------------------------------------------------
|
|
||||||
PACK_INVERT_MESA boolean GetBoolean FALSE Value of PACK_INVERT_MESA 4.3.2 pixel-store
|
|
||||||
|
|
||||||
Revision History
|
|
||||||
|
|
||||||
21 September 2002 - Initial draft
|
|
||||||
@@ -1,233 +0,0 @@
|
|||||||
XXX - Not complete yet!!!
|
|
||||||
|
|
||||||
Name
|
|
||||||
|
|
||||||
MESA_packed_depth_stencil
|
|
||||||
|
|
||||||
Name Strings
|
|
||||||
|
|
||||||
GL_MESA_packed_depth_stencil
|
|
||||||
|
|
||||||
Contact
|
|
||||||
|
|
||||||
Keith Whitwell, VA Linux Systems Inc. (keithw 'at' valinux.com)
|
|
||||||
Brian Paul, VA Linux Systems Inc. (brianp 'at' valinux.com)
|
|
||||||
|
|
||||||
Status
|
|
||||||
|
|
||||||
Not yet shipping.
|
|
||||||
|
|
||||||
Version
|
|
||||||
|
|
||||||
$Id: MESA_packed_depth_stencil.spec,v 1.1 2000/11/03 14:58:45 brianp Exp $
|
|
||||||
|
|
||||||
Number
|
|
||||||
|
|
||||||
???
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
|
|
||||||
EXT_abgr affects the definition of this extension
|
|
||||||
SGIS_texture4D affects the definition of this extension
|
|
||||||
EXT_cmyka affects the definition of this extension
|
|
||||||
ARB_packed_pixels affects the definition of this extension
|
|
||||||
|
|
||||||
Overview
|
|
||||||
|
|
||||||
Provides a mechanism for DrawPixels and ReadPixels to efficiently
|
|
||||||
transfer depth and stencil image data. Specifically, we defined new
|
|
||||||
packed pixel formats and types which pack both stencil and depth
|
|
||||||
into one value.
|
|
||||||
|
|
||||||
Issues:
|
|
||||||
|
|
||||||
1. Is this the right way to distinguish between 24/8 and 8/24
|
|
||||||
pixel formats? Should we instead provide both:
|
|
||||||
|
|
||||||
GL_DEPTH_STENCIL_MESA
|
|
||||||
GL_STENCIL_DEPTH_MESA
|
|
||||||
|
|
||||||
And perhaps just use GL_UNSIGNED_INT, GL_UNSIGNED_SHORT ?
|
|
||||||
|
|
||||||
2. If not, is it correct to use _REV to indicate that stencil
|
|
||||||
preceeds depth in the 1_15 and 8_24 formats?
|
|
||||||
|
|
||||||
3. Do we really want the GL_UNSIGNED_SHORT formats?
|
|
||||||
|
|
||||||
|
|
||||||
New Procedures and Functions
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
New Tokens
|
|
||||||
|
|
||||||
Accepted by the <format> parameter of ReadPixels and DrawPixels:
|
|
||||||
|
|
||||||
GL_DEPTH_STENCIL_MESA 0x8750
|
|
||||||
|
|
||||||
Accepted by the <type> parameter of ReadPixels and DrawPixels:
|
|
||||||
|
|
||||||
GL_UNSIGNED_INT_24_8_MESA 0x8751
|
|
||||||
GL_UNSIGNED_INT_8_24_REV_MESA 0x8752
|
|
||||||
GL_UNSIGNED_SHORT_15_1_MESA 0x8753
|
|
||||||
GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754
|
|
||||||
|
|
||||||
Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation)
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to Chapter 3 of the 1.1 Specification (Rasterization)
|
|
||||||
|
|
||||||
One entry is added to table 3.5 (DrawPixels and ReadPixels formats).
|
|
||||||
The new table is:
|
|
||||||
|
|
||||||
Target
|
|
||||||
Format Name Buffer Element Meaning and Order
|
|
||||||
----------- ------ -------------------------
|
|
||||||
COLOR_INDEX Color Color index
|
|
||||||
STENCIL_INDEX Stencil Stencil index
|
|
||||||
DEPTH_COMPONENT Depth Depth component
|
|
||||||
RED Color R component
|
|
||||||
GREEN Color G component
|
|
||||||
BLUE Color B component
|
|
||||||
ALPHA Color A component
|
|
||||||
RGB Color R, G, B components
|
|
||||||
RGBA Color R, G, B, A components
|
|
||||||
BGRA Color B, G, R, A components
|
|
||||||
ABGR_EXT Color A, B, G, R components
|
|
||||||
CMYK_EXT Color Cyan, Magenta, Yellow, Black components
|
|
||||||
CMYKA_EXT Color Cyan, Magenta, Yellow, Black, A components
|
|
||||||
LUMINANCE Color Luminance component
|
|
||||||
LUMINANCE_ALPHA Color Luminance, A components
|
|
||||||
DEPTH_STENCIL Depth, Depth component, stencil index.
|
|
||||||
Stencil
|
|
||||||
|
|
||||||
Table 3.5: DrawPixels and ReadPixels formats. The third column
|
|
||||||
gives a description of and the number and order of elements in a
|
|
||||||
group.
|
|
||||||
|
|
||||||
Add to the description of packed pixel formats:
|
|
||||||
|
|
||||||
<type> Parameter Data of Matching
|
|
||||||
Token Name Type Elements Pixel Formats
|
|
||||||
---------------- ---- -------- -------------
|
|
||||||
|
|
||||||
UNSIGNED_BYTE_3_3_2 ubyte 3 RGB
|
|
||||||
UNSIGNED_BYTE_2_3_3_REV ubyte 3 RGB
|
|
||||||
UNSIGNED_SHORT_5_6_5 ushort 3 RGB
|
|
||||||
UNSIGNED_SHORT_5_6_5_REV ushort 3 RGB
|
|
||||||
UNSIGNED_SHORT_4_4_4_4 ushort 4 RGBA,BGRA,ABGR_EXT,CMYK_EXT
|
|
||||||
UNSIGNED_SHORT_4_4_4_4_REV ushort 4 RGBA,BGRA
|
|
||||||
UNSIGNED_SHORT_5_5_5_1 ushort 4 RGBA,BGRA,ABGR_EXT,CMYK_EXT
|
|
||||||
UNSIGNED_SHORT_1_5_5_5_REV ushort 4 RGBA,BGRA
|
|
||||||
UNSIGNED_INT_8_8_8_8 uint 4 RGBA,BGRA,ABGR_EXT,CMYK_EXT
|
|
||||||
UNSIGNED_INT_8_8_8_8_REV uint 4 RGBA,BGRA
|
|
||||||
UNSIGNED_INT_10_10_10_2 uint 4 RGBA,BGRA,ABGR_EXT,CMYK_EXT
|
|
||||||
UNSIGNED_INT_2_10_10_10_REV uint 4 RGBA,BGRA
|
|
||||||
UNSIGNED_SHORT_15_1_MESA ushort 2 DEPTH_STENCIL_MESA
|
|
||||||
UNSIGNED_SHORT_1_15_REV_MESA ushort 2 DEPTH_STENCIL_MESA
|
|
||||||
UNSIGNED_SHORT_24_8_MESA ushort 2 DEPTH_STENCIL_MESA
|
|
||||||
UNSIGNED_SHORT_8_24_REV_MESA ushort 2 DEPTH_STENCIL_MESA
|
|
||||||
|
|
||||||
UNSIGNED_INT_8_24:
|
|
||||||
|
|
||||||
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
||||||
+-----------------------+-----------------------------------------------------------------------+
|
|
||||||
| | |
|
|
||||||
+-----------------------+-----------------------------------------------------------------------+
|
|
||||||
|
|
||||||
first second
|
|
||||||
element element
|
|
||||||
|
|
||||||
|
|
||||||
UNSIGNED_INT_24_8:
|
|
||||||
|
|
||||||
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
||||||
+----------------------------------------------------------------------+------------------------+
|
|
||||||
| | |
|
|
||||||
+----------------------------------------------------------------------+------------------------+
|
|
||||||
|
|
||||||
first second
|
|
||||||
element element
|
|
||||||
|
|
||||||
UNSIGNED_SHORT_15_1:
|
|
||||||
|
|
||||||
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
||||||
+-----------------------------------------------------------+---+
|
|
||||||
| | |
|
|
||||||
+-----------------------------------------------------------+---+
|
|
||||||
|
|
||||||
first second
|
|
||||||
element element
|
|
||||||
|
|
||||||
|
|
||||||
UNSIGNED_SHORT_1_15_REV:
|
|
||||||
|
|
||||||
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
||||||
+---+-----------------------------------------------------------+
|
|
||||||
| | |
|
|
||||||
+---+-----------------------------------------------------------+
|
|
||||||
|
|
||||||
second first
|
|
||||||
element element
|
|
||||||
|
|
||||||
The assignment of elements to fields in the packed pixel is as
|
|
||||||
described in the table below:
|
|
||||||
|
|
||||||
First Second Third Fourth
|
|
||||||
Format Element Element Element Element
|
|
||||||
------ ------- ------- ------- -------
|
|
||||||
RGB red green blue
|
|
||||||
RGBA red green blue alpha
|
|
||||||
BGRA blue green red alpha
|
|
||||||
ABGR_EXT alpha blue green red
|
|
||||||
CMYK_EXT cyan magenta yellow black
|
|
||||||
DEPTH_STENCIL_MESA depth stencil
|
|
||||||
|
|
||||||
Additions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations
|
|
||||||
and the Frame Buffer)
|
|
||||||
|
|
||||||
The new format is added to the discussion of Obtaining Pixels from the
|
|
||||||
Framebuffer. It should read " If the <format> is one of RED, GREEN,
|
|
||||||
BLUE, ALPHA, RGB, RGBA, ABGR_EXT, LUMINANCE, or LUMINANCE_ALPHA, and
|
|
||||||
the GL is in color index mode, then the color index is obtained."
|
|
||||||
|
|
||||||
The new format is added to the discussion of Index Lookup. It should
|
|
||||||
read "If <format> is one of RED, GREEN, BLUE, ALPHA, RGB, RGBA,
|
|
||||||
ABGR_EXT, LUMINANCE, or LUMINANCE_ALPHA, then the index is used to
|
|
||||||
reference 4 tables of color components: PIXEL_MAP_I_TO_R,
|
|
||||||
PIXEL_MAP_I_TO_G, PIXEL_MAP_I_TO_B, and PIXEL_MAP_I_TO_A."
|
|
||||||
|
|
||||||
|
|
||||||
Additions to Chapter 5 of the 1.1 Specification (Special Functions)
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to Chapter 6 of the 1.1 Specification (State and State Requests)
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to the GLX Specification
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
GLX Protocol
|
|
||||||
|
|
||||||
TBD
|
|
||||||
|
|
||||||
Errors
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
New State
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Revision History
|
|
||||||
|
|
||||||
Version 1.0 - 23 Sep 2000
|
|
||||||
Keith's original version.
|
|
||||||
|
|
||||||
Version 1.1 - 3 Nov 2000
|
|
||||||
Brian's edits, assigned values to new enums.
|
|
||||||
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
Name
|
|
||||||
|
|
||||||
MESA_pixmap_colormap
|
|
||||||
|
|
||||||
Name Strings
|
|
||||||
|
|
||||||
GLX_MESA_pixmap_colormap
|
|
||||||
|
|
||||||
Contact
|
|
||||||
|
|
||||||
Brian Paul (brian 'at' mesa3d.org)
|
|
||||||
|
|
||||||
Status
|
|
||||||
|
|
||||||
Shipping since Mesa 1.2.8 in May, 1996.
|
|
||||||
|
|
||||||
Version
|
|
||||||
|
|
||||||
Last Modified Date: 8 June 2000
|
|
||||||
|
|
||||||
Number
|
|
||||||
|
|
||||||
216
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
|
|
||||||
OpenGL 1.0 or later is required.
|
|
||||||
GLX 1.0 or later is required.
|
|
||||||
|
|
||||||
Overview
|
|
||||||
|
|
||||||
Since Mesa allows RGB rendering into drawables with PseudoColor,
|
|
||||||
StaticColor, GrayScale and StaticGray visuals, Mesa needs a colormap
|
|
||||||
in order to compute pixel values during rendering.
|
|
||||||
|
|
||||||
The colormap associated with a window can be queried with normal
|
|
||||||
Xlib functions but there is no colormap associated with pixmaps.
|
|
||||||
|
|
||||||
The glXCreateGLXPixmapMESA function is an alternative to glXCreateGLXPixmap
|
|
||||||
which allows specification of a colormap.
|
|
||||||
|
|
||||||
IP Status
|
|
||||||
|
|
||||||
Open-source; freely implementable.
|
|
||||||
|
|
||||||
Issues
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
New Procedures and Functions
|
|
||||||
|
|
||||||
GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
|
|
||||||
Pixmap pixmap, Colormap cmap );
|
|
||||||
|
|
||||||
New Tokens
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors)
|
|
||||||
|
|
||||||
Add to section 3.4.2 Off Screen Rendering
|
|
||||||
|
|
||||||
The Mesa implementation of GLX allows RGB rendering into X windows and
|
|
||||||
pixmaps of any visual class, not just TrueColor or DirectColor. In order
|
|
||||||
to compute pixel values from RGB values Mesa requires a colormap.
|
|
||||||
|
|
||||||
The function
|
|
||||||
|
|
||||||
GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
|
|
||||||
Pixmap pixmap, Colormap cmap );
|
|
||||||
|
|
||||||
allows one to create a GLXPixmap with a specific colormap. The image
|
|
||||||
rendered into the pixmap may then be copied to a window (which uses the
|
|
||||||
same colormap and visual) with the expected results.
|
|
||||||
|
|
||||||
GLX Protocol
|
|
||||||
|
|
||||||
None since this is a client-side extension.
|
|
||||||
|
|
||||||
Errors
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
New State
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
Revision History
|
|
||||||
|
|
||||||
8 June 2000 - initial specification
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
Name
|
|
||||||
|
|
||||||
MESA_release_buffers
|
|
||||||
|
|
||||||
Name Strings
|
|
||||||
|
|
||||||
GLX_MESA_release_buffers
|
|
||||||
|
|
||||||
Contact
|
|
||||||
|
|
||||||
Brian Paul (brian 'at' mesa3d.org)
|
|
||||||
|
|
||||||
Status
|
|
||||||
|
|
||||||
Shipping since Mesa 2.0 in October, 1996.
|
|
||||||
|
|
||||||
Version
|
|
||||||
|
|
||||||
Last Modified Date: 8 June 2000
|
|
||||||
|
|
||||||
Number
|
|
||||||
|
|
||||||
217
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
|
|
||||||
OpenGL 1.0 or later is required.
|
|
||||||
GLX 1.0 or later is required.
|
|
||||||
|
|
||||||
Overview
|
|
||||||
|
|
||||||
Mesa's implementation of GLX is entirely implemented on the client side.
|
|
||||||
Therefore, Mesa cannot immediately detect when an X window or pixmap is
|
|
||||||
destroyed in order to free any ancilliary data associated with the window
|
|
||||||
or pixmap.
|
|
||||||
|
|
||||||
The glxMesaReleaseBuffers() function can be used to explicitly indicate
|
|
||||||
when the back color buffer, depth buffer, stencil buffer, and/or accum-
|
|
||||||
ulation buffer associated with a drawable can be freed.
|
|
||||||
|
|
||||||
IP Status
|
|
||||||
|
|
||||||
Open-source; freely implementable.
|
|
||||||
|
|
||||||
Issues
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
New Procedures and Functions
|
|
||||||
|
|
||||||
Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d );
|
|
||||||
|
|
||||||
New Tokens
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors)
|
|
||||||
|
|
||||||
The function
|
|
||||||
|
|
||||||
Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d );
|
|
||||||
|
|
||||||
causes all software ancilliary buffers (back buffer, depth, stencil,
|
|
||||||
accum, etc) associated with the named drawable to be immediately
|
|
||||||
deallocated. True is returned if <d> is a valid Mesa GLX drawable,
|
|
||||||
else False is returned. After calling glXReleaseBuffersMESA, the
|
|
||||||
drawable should no longer be used for GL rendering. Results of
|
|
||||||
attempting to do so are undefined.
|
|
||||||
|
|
||||||
|
|
||||||
GLX Protocol
|
|
||||||
|
|
||||||
None, since this is a client-side operation.
|
|
||||||
|
|
||||||
Errors
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
New State
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
Revision History
|
|
||||||
|
|
||||||
8 June 2000 - initial specification
|
|
||||||
@@ -16,7 +16,7 @@ Status
|
|||||||
|
|
||||||
Version
|
Version
|
||||||
|
|
||||||
$Id: MESA_resize_buffers.spec,v 1.2 2000/04/04 23:29:32 brianp Exp $
|
$Id: MESA_resize_buffers.spec,v 1.1.2.1 2000/04/04 23:28:00 brianp Exp $
|
||||||
|
|
||||||
Number
|
Number
|
||||||
|
|
||||||
|
|||||||
@@ -1,85 +0,0 @@
|
|||||||
Name
|
|
||||||
|
|
||||||
MESA_set_3dfx_mode
|
|
||||||
|
|
||||||
Name Strings
|
|
||||||
|
|
||||||
GLX_MESA_set_3dfx_mode
|
|
||||||
|
|
||||||
Contact
|
|
||||||
|
|
||||||
Brian Paul (brian 'at' mesa3d.org)
|
|
||||||
|
|
||||||
Status
|
|
||||||
|
|
||||||
Shipping since Mesa 2.6 in February, 1998.
|
|
||||||
|
|
||||||
Version
|
|
||||||
|
|
||||||
Last Modified Date: 8 June 2000
|
|
||||||
|
|
||||||
Number
|
|
||||||
|
|
||||||
218
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
|
|
||||||
OpenGL 1.0 or later is required.
|
|
||||||
GLX 1.0 or later is required.
|
|
||||||
|
|
||||||
Overview
|
|
||||||
|
|
||||||
The Mesa Glide driver allows full-screen rendering or rendering into
|
|
||||||
an X window. The glXSet3DfxModeMESA() function allows an application
|
|
||||||
to switch between full-screen and windowed rendering.
|
|
||||||
|
|
||||||
IP Status
|
|
||||||
|
|
||||||
Open-source; freely implementable.
|
|
||||||
|
|
||||||
Issues
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
New Procedures and Functions
|
|
||||||
|
|
||||||
GLboolean glXSet3DfxModeMESA( GLint mode );
|
|
||||||
|
|
||||||
New Tokens
|
|
||||||
|
|
||||||
GLX_3DFX_WINDOW_MODE_MESA 0x1
|
|
||||||
GLX_3DFX_FULLSCREEN_MODE_MESA 0x2
|
|
||||||
|
|
||||||
Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors)
|
|
||||||
|
|
||||||
The Mesa Glide device driver allows either rendering in full-screen
|
|
||||||
mode or rendering into an X window. An application can switch between
|
|
||||||
full-screen and window rendering with the command:
|
|
||||||
|
|
||||||
GLboolean glXSet3DfxModeMESA( GLint mode );
|
|
||||||
|
|
||||||
<mode> may either be GLX_3DFX_WINDOW_MODE_MESA to indicate window
|
|
||||||
rendering or GLX_3DFX_FULLSCREEN_MODE_MESA to indicate full-screen mode.
|
|
||||||
|
|
||||||
GL_TRUE is returned if <mode> is valid and the operation completed
|
|
||||||
normally. GL_FALSE is returned if <mode> is invalid or if the Glide
|
|
||||||
driver is not being used.
|
|
||||||
|
|
||||||
Note that only one drawable and context can be created at any given
|
|
||||||
time with the Mesa Glide driver.
|
|
||||||
|
|
||||||
GLX Protocol
|
|
||||||
|
|
||||||
None since this is a client-side extension.
|
|
||||||
|
|
||||||
Errors
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
New State
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
Revision History
|
|
||||||
|
|
||||||
8 June 2000 - initial specification
|
|
||||||
@@ -1,193 +0,0 @@
|
|||||||
XXX - Not complete yet!!!
|
|
||||||
|
|
||||||
Name
|
|
||||||
|
|
||||||
MESA_sprite_point
|
|
||||||
|
|
||||||
Name Strings
|
|
||||||
|
|
||||||
GL_MESA_sprite_point
|
|
||||||
|
|
||||||
Contact
|
|
||||||
|
|
||||||
Brian Paul, VA Linux Systems Inc. (brianp 'at' valinux.com)
|
|
||||||
|
|
||||||
Status
|
|
||||||
|
|
||||||
Not yet shipping.
|
|
||||||
|
|
||||||
Version
|
|
||||||
|
|
||||||
$Id: MESA_sprite_point.spec,v 1.1 2000/12/08 00:21:02 brianp Exp $
|
|
||||||
|
|
||||||
Number
|
|
||||||
|
|
||||||
???
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
|
|
||||||
GL_EXT_point_parameters effects the definition of this extension
|
|
||||||
GL_ARB_multitexture effects the definition of this extension
|
|
||||||
|
|
||||||
Overview
|
|
||||||
|
|
||||||
This extension modifies the way in which points are rendered,
|
|
||||||
specifically when they're textured. When SPRITE_POINT_MESA is enabled
|
|
||||||
a point is rendered as if it were a quadrilateral with unique texture
|
|
||||||
coordinates at each vertex. This extension effectively turns points
|
|
||||||
into sprites which may be rendered more easily and quickly than using
|
|
||||||
conventional textured quadrilaterals.
|
|
||||||
|
|
||||||
When using point size > 1 or attenuated points this extension is an
|
|
||||||
effective way to render many small sprite images for particle systems
|
|
||||||
or other effects.
|
|
||||||
|
|
||||||
Issues:
|
|
||||||
|
|
||||||
1. How are the texture coordinates computed?
|
|
||||||
|
|
||||||
The lower-left corner has texture coordinate (0,0,r,q).
|
|
||||||
The lower-right, (1,0,r,q). The upper-right, (1,1,r,q).
|
|
||||||
The upper-left, (0,1,r,q).
|
|
||||||
|
|
||||||
2. What about texgen and texture matrices?
|
|
||||||
|
|
||||||
Texgen and the texture matrix have no effect on the point's s and t
|
|
||||||
texture coordinates. The r and q coordinates may have been computed
|
|
||||||
by texgen or the texture matrix. Note that with a 3D texture and/or
|
|
||||||
texgen that the r coordinate could be used to select a slice in the
|
|
||||||
3D texture.
|
|
||||||
|
|
||||||
3. What about point smoothing?
|
|
||||||
|
|
||||||
When point smoothing is enabled, a triangle fan could be rendered
|
|
||||||
to approximate a circular point. This could be problematic to
|
|
||||||
define and implement so POINT_SMOOTH is ignored when drawing sprite
|
|
||||||
points.
|
|
||||||
|
|
||||||
Smoothed points can be approximated by using an appropriate texture
|
|
||||||
images, alpha testing and blending.
|
|
||||||
|
|
||||||
POLYGON_SMOOTH does effect the rendering of the quadrilateral, however.
|
|
||||||
|
|
||||||
4. What about sprite rotation?
|
|
||||||
|
|
||||||
There is none. Sprite points are always rendered as window-aligned
|
|
||||||
squares. One could define rotated texture images if desired. A 3D
|
|
||||||
texture and appropriate texture r coordinates could be used to
|
|
||||||
effectively specify image rotation per point.
|
|
||||||
|
|
||||||
5. What about POLYGON_MODE?
|
|
||||||
|
|
||||||
POLYGON_MODE does not effect the rasterization of the quadrilateral.
|
|
||||||
|
|
||||||
6. What about POLYGON_CULL?
|
|
||||||
|
|
||||||
TBD. Polygon culling is normally specified and implemented in the
|
|
||||||
transformation stage of OpenGL. However, some rasterization hardware
|
|
||||||
implements it later during triangle setup.
|
|
||||||
|
|
||||||
Polygon culling wouldn't be useful for sprite points since the
|
|
||||||
quadrilaterals are always defined in counter-clockwise order in
|
|
||||||
window space. For that reason, polygon culling should probably be
|
|
||||||
ignored.
|
|
||||||
|
|
||||||
7. Should sprite points be alpha-attenuated if their size is below the
|
|
||||||
point parameter's threshold size?
|
|
||||||
|
|
||||||
8. Should there be an advertisized maximum sprite point size?
|
|
||||||
|
|
||||||
No. Since we're rendering the point as a quadrilateral there's no
|
|
||||||
need to limit the size.
|
|
||||||
|
|
||||||
|
|
||||||
New Procedures and Functions
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
New Tokens
|
|
||||||
|
|
||||||
Accepted by the <pname> parameter of Enable, Disable, IsEnabled,
|
|
||||||
GetIntegerv, GetBooleanv, GetFloatv and GetDoublev:
|
|
||||||
|
|
||||||
SPRITE_POINT_MESA 0x????
|
|
||||||
MAX_SPRITE_POINT_SIZE_MESA 0x???? (need this?)
|
|
||||||
|
|
||||||
Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation)
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to Chapter 3 of the 1.1 Specification (Rasterization)
|
|
||||||
|
|
||||||
Section ???.
|
|
||||||
|
|
||||||
When SPRITE_POINT_MESA is enabled points are rasterized as screen-
|
|
||||||
aligned quadrilaterals. If the four vertices of the quadrilateral
|
|
||||||
are labeled A, B, C, and D, starting at the lower-left corner and moving
|
|
||||||
counter-clockwise around the quadrilateral, then the vertex and
|
|
||||||
texture coordinates are computed as follows:
|
|
||||||
|
|
||||||
vertex window coordinate texture coordinate
|
|
||||||
A (x-r, y-r, z, w) (0, 0, r, q)
|
|
||||||
B (x+r, y-r, z, w) (1, 0, r, q)
|
|
||||||
C (x+r, y+r, z, w) (1, 1, r, q)
|
|
||||||
D (x-r, y+r, z, w) (0, 1, r, q)
|
|
||||||
|
|
||||||
where x, y, z, w are the point's window coordinates, r and q are the
|
|
||||||
point's 3rd and 4th texture coordinates and r is half the point's
|
|
||||||
size. The other vertex attributes (such as the color and fog coordinate)
|
|
||||||
are simply duplicated from the original point vertex.
|
|
||||||
|
|
||||||
Point size may either be specified with PointSize or computed
|
|
||||||
according to the EXT_point_parameters extension.
|
|
||||||
|
|
||||||
The new texture coordinates are not effected by texgen or the texture
|
|
||||||
matrix. Note, however, that the texture r and q coordinates are passed
|
|
||||||
unchanged and may have been computed with texgen and/or the texture
|
|
||||||
matrix.
|
|
||||||
|
|
||||||
If multiple texture units are present the same texture coordinate is
|
|
||||||
used for all texture units.
|
|
||||||
|
|
||||||
The point is then rendered as if it were a quadrilateral using the
|
|
||||||
normal point sampling rules. POLYGON_MODE does not effect the
|
|
||||||
rasterization of the quadrilateral but POLYGON_SMOOTH does.
|
|
||||||
|
|
||||||
POINT_SMOOTH has no effect when SPRITE_POINT_MESA is enabled.
|
|
||||||
|
|
||||||
Additions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations
|
|
||||||
and the Frame Buffer)
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
Additions to Chapter 5 of the 1.1 Specification (Special Functions)
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to Chapter 6 of the 1.1 Specification (State and State Requests)
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to the GLX Specification
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
GLX Protocol
|
|
||||||
|
|
||||||
TBD
|
|
||||||
|
|
||||||
Errors
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
New State
|
|
||||||
|
|
||||||
Add boolean variable SPRITE_POINT_MESA to the point attribute group.
|
|
||||||
|
|
||||||
Revision History
|
|
||||||
|
|
||||||
Version 1.0 - 4 Dec 2000
|
|
||||||
Original draft.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,360 +0,0 @@
|
|||||||
Name
|
|
||||||
|
|
||||||
MESA_trace
|
|
||||||
|
|
||||||
Name Strings
|
|
||||||
|
|
||||||
GL_MESA_TRACE
|
|
||||||
|
|
||||||
Contact
|
|
||||||
|
|
||||||
Bernd Kreimeier, Loki Entertainment, bk 'at' lokigames.com
|
|
||||||
Brian Paul, VA Linux Systems, Inc., brianp 'at' valinux.com
|
|
||||||
|
|
||||||
Status
|
|
||||||
|
|
||||||
XXX - Not complete yet!!!
|
|
||||||
|
|
||||||
Version
|
|
||||||
|
|
||||||
$Id: MESA_trace.spec,v 1.2 2001/01/29 16:10:18 brianp Exp $
|
|
||||||
|
|
||||||
Number
|
|
||||||
|
|
||||||
none yet
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
|
|
||||||
OpenGL 1.2 is required.
|
|
||||||
The extension is written against the OpenGL 1.2 Specification
|
|
||||||
|
|
||||||
Overview
|
|
||||||
|
|
||||||
Provides the application with means to enable and disable logging
|
|
||||||
of GL calls including parameters as readable text. The verbosity
|
|
||||||
of the generated log can be controlled. The resulting logs are
|
|
||||||
valid (but possibly incomplete) C code and can be compiled and
|
|
||||||
linked for standalone test programs. The set of calls and the
|
|
||||||
amount of static data that is logged can be controlled at runtime.
|
|
||||||
The application can add comments and enable or disable tracing of GL
|
|
||||||
operations at any time. The data flow from the application to GL
|
|
||||||
and back is unaffected except for timing.
|
|
||||||
|
|
||||||
Application-side implementation of these features raises namespace
|
|
||||||
and linkage issues. In the driver dispatch table a simple
|
|
||||||
"chain of responsibility" pattern (aka "composable piepline")
|
|
||||||
can be added.
|
|
||||||
|
|
||||||
IP Status
|
|
||||||
|
|
||||||
The extension spec is in the public domain. The current implementation
|
|
||||||
in Mesa is covered by Mesa's XFree86-style copyright by the authors above.
|
|
||||||
This extension is partially inspired by the Quake2 QGL wrapper.
|
|
||||||
|
|
||||||
Issues
|
|
||||||
|
|
||||||
|
|
||||||
(1) Is this Extension obsolete because it can
|
|
||||||
be implemented as a wrapper DLL?
|
|
||||||
|
|
||||||
RESOLVED: No. While certain operating systems (Win32) provide linkers
|
|
||||||
that facilitate this kind of solution, other operating systems
|
|
||||||
(Linux) do not support hierarchical linking, so a wrapper solution
|
|
||||||
would result in symbol collisions.
|
|
||||||
Further, IHV's might have builtin support for tracing GL execution
|
|
||||||
that enjoys privileged access, or that they do not wish to separate
|
|
||||||
the tracing code from their driver code base.
|
|
||||||
|
|
||||||
(2) Should the Trace API explicitely support the notion of "frames?
|
|
||||||
This would require hooking into glXSwapBuffers calls as well.
|
|
||||||
|
|
||||||
RESOLVED: No. The application can use NewTraceMESA/EndTraceMESA
|
|
||||||
and TraceComment along with external parsing tools to split the
|
|
||||||
trace into frames, in whatever way considered adequate.
|
|
||||||
|
|
||||||
(2a) Should GLX calls be traced?
|
|
||||||
|
|
||||||
PBuffers and other render-to-texture solutions demonstrate that
|
|
||||||
context level commands beyond SwapBuffers might have to be
|
|
||||||
traced. The GL DLL exports the entry points, so this would not
|
|
||||||
be out of the question.
|
|
||||||
|
|
||||||
(3) Should the specification mandate the actual output format?
|
|
||||||
|
|
||||||
RESOLVED: No. It is sufficient to guarantee that all data and commands
|
|
||||||
will be traced as requested by Enable/DisableTraceMESA, in the order
|
|
||||||
encountered. Whether the resulting trace is available as a readable
|
|
||||||
text file, binary metafile, compilable source code, much less which
|
|
||||||
indentation and formatting has been used, is up to the implementation.
|
|
||||||
For the same reason this specification does not enforce or prohibit
|
|
||||||
additional information added to the trace (statistics, profiling/timing,
|
|
||||||
warnings on possible error conditions).
|
|
||||||
|
|
||||||
(4) Should the comment strings associated with names and pointer (ranges)
|
|
||||||
be considered persistent state?
|
|
||||||
|
|
||||||
RESOLVED: No. The implementation is not forced to use this information
|
|
||||||
on subsequent occurences of name/pointer, and is free to consider it
|
|
||||||
transient state.
|
|
||||||
|
|
||||||
(5) Should comment commands be prohibited between Begin/End?
|
|
||||||
|
|
||||||
RESOLVED: Yes, with the exception of TraceCommentMESA. TraceCommentMESA
|
|
||||||
is transient, the other commands might cause storage of persistent
|
|
||||||
data in the context. There is no need to have the ability mark names
|
|
||||||
or pointers between Begin and End.
|
|
||||||
|
|
||||||
|
|
||||||
New Procedures and Functions
|
|
||||||
|
|
||||||
void NewTraceMESA( bitfield mask, const ubyte * traceName )
|
|
||||||
|
|
||||||
void EndTraceMESA( void )
|
|
||||||
|
|
||||||
void EnableTraceMESA( bitfield mask )
|
|
||||||
|
|
||||||
void DisableTraceMESA( bitfield mask )
|
|
||||||
|
|
||||||
void TraceAssertAttribMESA( bitfield attribMask )
|
|
||||||
|
|
||||||
void TraceCommentMESA( const ubyte* comment )
|
|
||||||
|
|
||||||
void TraceTextureMESA( uint name, const ubyte* comment )
|
|
||||||
|
|
||||||
void TraceListMESA( uint name, const ubyte* comment )
|
|
||||||
|
|
||||||
void TracePointerMESA( void* pointer, const ubyte* comment )
|
|
||||||
|
|
||||||
void TracePointerRangeMESA( const void* first,
|
|
||||||
const void* last,
|
|
||||||
const ubyte* comment )
|
|
||||||
|
|
||||||
New Tokens
|
|
||||||
|
|
||||||
Accepted by the <mask> parameter of EnableTrace and DisableTrace:
|
|
||||||
|
|
||||||
TRACE_ALL_BITS_MESA 0xFFFF
|
|
||||||
TRACE_OPERATIONS_BIT_MESA 0x0001
|
|
||||||
TRACE_PRIMITIVES_BIT_MESA 0x0002
|
|
||||||
TRACE_ARRAYS_BIT_MESA 0x0004
|
|
||||||
TRACE_TEXTURES_BIT_MESA 0x0008
|
|
||||||
TRACE_PIXELS_BIT_MESA 0x0010
|
|
||||||
TRACE_ERRORS_BIT_MESA 0x0020
|
|
||||||
|
|
||||||
Accepted by the <pname> parameter of GetIntegerv, GetBooleanv,
|
|
||||||
GetFloatv, and GetDoublev:
|
|
||||||
|
|
||||||
TRACE_MASK_MESA 0x8755
|
|
||||||
|
|
||||||
Accepted by the <pname> parameter to GetString:
|
|
||||||
|
|
||||||
TRACE_NAME_MESA 0x8756
|
|
||||||
|
|
||||||
|
|
||||||
Additions to Chapter 2 of the OpenGL 1.2.1 Specification (OpenGL Operation)
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
Additions to Chapter 3 of the OpenGL 1.2.1 Specification (OpenGL Operation)
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
Additions to Chapter 4 of the OpenGL 1.2.1 Specification (OpenGL Operation)
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
Additions to Chapter 5 of the OpenGL 1.2.1 Specification (Special Functions)
|
|
||||||
|
|
||||||
Add a new section:
|
|
||||||
|
|
||||||
5.7 Tracing
|
|
||||||
|
|
||||||
The tracing facility is used to record the execution of a GL program
|
|
||||||
to a human-readable log. The log appears as a sequence of GL commands
|
|
||||||
using C syntax. The primary intention of tracing is to aid in program
|
|
||||||
debugging.
|
|
||||||
|
|
||||||
A trace is started with the command
|
|
||||||
|
|
||||||
void NewTraceMESA( bitfield mask, const GLubyte * traceName )
|
|
||||||
|
|
||||||
<mask> may be any value accepted by PushAttrib and specifies a set of
|
|
||||||
attribute groups. The state values included in those attribute groups
|
|
||||||
is written to the trace as a sequence of GL commands.
|
|
||||||
|
|
||||||
<traceName> specifies a name or label for the trace. It is expected
|
|
||||||
that <traceName> will be interpreted as a filename in most implementations.
|
|
||||||
|
|
||||||
A trace is ended by calling the command
|
|
||||||
|
|
||||||
void EndTraceMESA( void )
|
|
||||||
|
|
||||||
It is illegal to call NewTraceMESA or EndTraceMESA between Begin and End.
|
|
||||||
|
|
||||||
The commands
|
|
||||||
|
|
||||||
void EnableTraceMESA( bitfield mask )
|
|
||||||
void DisableTraceMESA( bitfield mask )
|
|
||||||
|
|
||||||
enable or disable tracing of different classes of GL commands.
|
|
||||||
<mask> may be the union of any of TRACE_OPERATIONS_BIT_MESA,
|
|
||||||
TRACE_PRIMITIVES_BIT_MESA, TRACE_ARRAYS_BIT_MESA, TRACE_TEXTURES_BIT_MESA,
|
|
||||||
and TRACE_PIXELS_BIT_MESA. The special token TRACE_ALL_BITS_MESA
|
|
||||||
indicates all classes of commands are to be logged.
|
|
||||||
|
|
||||||
TRACE_OPERATIONS_BIT_MESA controls logging of all commands outside of
|
|
||||||
Begin/End, including Begin/End.
|
|
||||||
|
|
||||||
TRACE_PRIMITIVES_BIT_MESA controls logging of all commands inside of
|
|
||||||
Begin/End, including Begin/End.
|
|
||||||
|
|
||||||
TRACE_ARRAYS_BIT_MESA controls logging of VertexPointer, NormalPointer,
|
|
||||||
ColorPointer, IndexPointer, TexCoordPointer and EdgeFlagPointer commands.
|
|
||||||
|
|
||||||
TRACE_TEXTURES_BIT_MESA controls logging of texture data dereferenced by
|
|
||||||
TexImage1D, TexImage2D, TexImage3D, TexSubImage1D, TexSubImage2D, and
|
|
||||||
TexSubImage3D commands.
|
|
||||||
|
|
||||||
TRACE_PIXELS_BIT_MESA controls logging of image data dereferenced by
|
|
||||||
Bitmap and DrawPixels commands.
|
|
||||||
|
|
||||||
TRACE_ERRORS_BIT_MESA controls logging of all errors. If this bit is
|
|
||||||
set, GetError will be executed whereever applicable, and the result will
|
|
||||||
be added to the trace as a comment. The error returns are cached and
|
|
||||||
returned to the application on its GetError calls. If the user does not
|
|
||||||
wish the additional GetError calls to be performed, this bit should not
|
|
||||||
be set.
|
|
||||||
|
|
||||||
The command
|
|
||||||
|
|
||||||
void TraceCommentMESA( const ubyte* comment )
|
|
||||||
|
|
||||||
immediately adds the <comment> string to the trace output, surrounded
|
|
||||||
by C-style comment delimiters.
|
|
||||||
|
|
||||||
The commands
|
|
||||||
|
|
||||||
void TraceTextureMESA( uint name, const ubyte* comment )
|
|
||||||
void TraceListMESA( uint name, const ubyte* comment )
|
|
||||||
|
|
||||||
associates <comment> with the texture object or display list specified
|
|
||||||
by <name>. Logged commands which reference the named texture object or
|
|
||||||
display list will be annotated with <comment>. If IsTexture(name) or
|
|
||||||
IsList(name) fail (respectively) the command is quietly ignored.
|
|
||||||
|
|
||||||
The commands
|
|
||||||
|
|
||||||
void TracePointerMESA( void* pointer, const ubyte* comment )
|
|
||||||
|
|
||||||
void TracePointerRangeMESA( const void* first,
|
|
||||||
const void* last,
|
|
||||||
const ubyte* comment )
|
|
||||||
|
|
||||||
associate <comment> with the address specified by <pointer> or with
|
|
||||||
a range of addresses specified by <first> through <last>.
|
|
||||||
Any logged commands which reference <pointer> or an address between
|
|
||||||
<first> and <last> will be annotated with <comment>.
|
|
||||||
|
|
||||||
The command
|
|
||||||
|
|
||||||
void TraceAssertAttribMESA( bitfield attribMask )
|
|
||||||
|
|
||||||
will add GL state queries and assertion statements to the log to
|
|
||||||
confirm that the current state at the time TraceAssertAttrib is
|
|
||||||
executed matches the current state when the trace log is executed
|
|
||||||
in the future.
|
|
||||||
|
|
||||||
<attribMask> is any value accepted by PushAttrib and specifies
|
|
||||||
the groups of state variables which are to be asserted.
|
|
||||||
|
|
||||||
The commands NewTraceMESA, EndTraceMESA, EnableTraceMESA, DisableTraceMESA,
|
|
||||||
TraceAssertAttribMESA, TraceCommentMESA, TraceTextureMESA, TraceListMESA,
|
|
||||||
TracePointerMESA and TracePointerRangeMESA are not compiled into display lists.
|
|
||||||
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
|
|
||||||
The command NewTraceMESA(DEPTH_BUFFER_BIT, "log") will query the state
|
|
||||||
variables DEPTH_TEST, DEPTH_FUNC, DEPTH_WRITEMASK, and DEPTH_CLEAR_VALUE
|
|
||||||
to get the values <test>, <func>, <mask>, and <clear> respectively.
|
|
||||||
Statements equivalent to the following will then be logged:
|
|
||||||
|
|
||||||
glEnable(GL_DEPTH_TEST); (if <test> is true)
|
|
||||||
glDisable(GL_DEPTH_TEST); (if <test> is false)
|
|
||||||
glDepthFunc(<func>);
|
|
||||||
glDepthMask(<mask>);
|
|
||||||
glClearDepth(<clear>);
|
|
||||||
|
|
||||||
|
|
||||||
The command TraceAssertAttribMESA(DEPTH_BUFFER_BIT) will query the state
|
|
||||||
variables DEPTH_TEST, DEPTH_FUNC, DEPTH_WRITEMASK, and DEPTH_CLEAR_VALUE
|
|
||||||
to get the values <test>, <func>, <mask>, and <clear> respectively.
|
|
||||||
The resulting trace might then look will like this:
|
|
||||||
|
|
||||||
{
|
|
||||||
GLboolean b;
|
|
||||||
GLint i;
|
|
||||||
GLfloat f;
|
|
||||||
b = glIsEnabled(GL_DEPTH_TEST);
|
|
||||||
assert(b == <test>);
|
|
||||||
glGetIntegerv(GL_DEPTH_FUNC, &i);
|
|
||||||
assert(i == <func>);
|
|
||||||
glGetIntegerv(GL_DEPTH_MASK, &i);
|
|
||||||
assert(i == <mask>);
|
|
||||||
glGetFloatv(GL_DEPTH_CLEAR_VALUE, &f);
|
|
||||||
assert(f == <clear>);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Additions to Chapter 6 of the OpenGL 1.2.1 Specification
|
|
||||||
(State and State Requests)
|
|
||||||
|
|
||||||
Querying TRACE_MASK_MESA with GetIntegerv, GetFloatv, GetBooleanv or
|
|
||||||
GetDoublev returns the current command class trace mask.
|
|
||||||
|
|
||||||
Querying TRACE_NAME_MESA with GetString returns the current trace name.
|
|
||||||
|
|
||||||
|
|
||||||
Additions to Appendix A of the OpenGL 1.2.1 Specification (Invariance)
|
|
||||||
|
|
||||||
The MESA_trace extension can be used in a way that does not affect data
|
|
||||||
flow from application to OpenGL, as well as data flow from OpenGL to
|
|
||||||
application, except for timing, possible print I/O. TRACE_ERRORS_BIT_MESA
|
|
||||||
will add additional GetError queries. Setting a trace mask with NewTraceMESA
|
|
||||||
as well as use of TraceAssertAttribMESA might cause additional state queries.
|
|
||||||
With the possible exception of performance, OpenGL rendering should not be
|
|
||||||
affected at all by a properly chosen logging operation.
|
|
||||||
|
|
||||||
Additions to the AGL/GLX/WGL Specifications
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
GLX Protocol
|
|
||||||
|
|
||||||
None. The logging operation is carried out client-side, by exporting
|
|
||||||
entry points to the wrapper functions that execute the logging operation.
|
|
||||||
|
|
||||||
Errors
|
|
||||||
|
|
||||||
INVALID_OPERATION is generated if any trace command except TraceCommentMESA
|
|
||||||
is called between Begin and End.
|
|
||||||
|
|
||||||
New State
|
|
||||||
|
|
||||||
The current trace name and current command class mask are stored
|
|
||||||
per-context.
|
|
||||||
|
|
||||||
New Implementation Dependent State
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
Revision History
|
|
||||||
|
|
||||||
* Revision 0.1 - Initial draft from template (bk000415)
|
|
||||||
* Revision 0.2 - Draft (bk000906)
|
|
||||||
* Revision 0.3 - Draft (bk000913)
|
|
||||||
* Revision 0.4 - Reworked text, fixed typos (bp000914)
|
|
||||||
* Revision 0.5 - Assigned final GLenum values (bp001103)
|
|
||||||
* Revision 0.6 - TRACE_ERRORS_BIT_MESA (bk000916)
|
|
||||||
* Revision 0.7 - Added MESA postfix (bk010126)
|
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@ Status
|
|||||||
|
|
||||||
Version
|
Version
|
||||||
|
|
||||||
$Id: MESA_window_pos.spec,v 1.3 2000/04/04 23:29:32 brianp Exp $
|
$Id: MESA_window_pos.spec,v 1.1.2.1 2000/04/04 23:28:00 brianp Exp $
|
||||||
|
|
||||||
Number
|
Number
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ Overview
|
|||||||
coordinate with the RasterPos command, the modelview matrix, projection
|
coordinate with the RasterPos command, the modelview matrix, projection
|
||||||
matrix and viewport must be set very carefully. Furthermore, if the
|
matrix and viewport must be set very carefully. Furthermore, if the
|
||||||
desired window coordinate is outside of the window's bounds one must
|
desired window coordinate is outside of the window's bounds one must
|
||||||
rely on a subtle side-effect of the Bitmap command in order to circumvent
|
rely a subtle side-effect of the Bitmap command in order to circumvent
|
||||||
frustum clipping.
|
frustum clipping.
|
||||||
|
|
||||||
This extension provides a set of functions to directly set the
|
This extension provides a set of functions to directly set the
|
||||||
@@ -51,26 +51,6 @@ New Procedures and Functions
|
|||||||
void WindowPos2fMESA(float x, float y)
|
void WindowPos2fMESA(float x, float y)
|
||||||
void WindowPos2iMESA(int x, int y)
|
void WindowPos2iMESA(int x, int y)
|
||||||
void WindowPos2sMESA(short x, short y)
|
void WindowPos2sMESA(short x, short y)
|
||||||
void WindowPos2ivMESA(const int *p)
|
|
||||||
void WindowPos2svMESA(const short *p)
|
|
||||||
void WindowPos2fvMESA(const float *p)
|
|
||||||
void WindowPos2dvMESA(const double *p)
|
|
||||||
void WindowPos3iMESA(int x, int y, int z)
|
|
||||||
void WindowPos3sMESA(short x, short y, short z)
|
|
||||||
void WindowPos3fMESA(float x, float y, float z)
|
|
||||||
void WindowPos3dMESA(double x, double y, double z)
|
|
||||||
void WindowPos3ivMESA(const int *p)
|
|
||||||
void WindowPos3svMESA(const short *p)
|
|
||||||
void WindowPos3fvMESA(const float *p)
|
|
||||||
void WindowPos3dvMESA(const double *p)
|
|
||||||
void WindowPos4iMESA(int x, int y, int z, int w)
|
|
||||||
void WindowPos4sMESA(short x, short y, short z, short w)
|
|
||||||
void WindowPos4fMESA(float x, float y, float z, float w)
|
|
||||||
void WindowPos4dMESA(double x, double y, double z, double )
|
|
||||||
void WindowPos4ivMESA(const int *p)
|
|
||||||
void WindowPos4svMESA(const short *p)
|
|
||||||
void WindowPos4fvMESA(const float *p)
|
|
||||||
void WindowPos4dvMESA(const double *p)
|
|
||||||
|
|
||||||
New Tokens
|
New Tokens
|
||||||
|
|
||||||
@@ -84,7 +64,7 @@ Additions to Chapter 2 of the OpenGL 1.2 Specification (OpenGL Operation)
|
|||||||
WindowPosMESA commands:
|
WindowPosMESA commands:
|
||||||
|
|
||||||
void WindowPos{234}{sidf}MESA( T coords );
|
void WindowPos{234}{sidf}MESA( T coords );
|
||||||
void WindowPos{234}{sidf}vMESA( T coords );
|
void Window Pos{234}{sidf}vMESA( T coords );
|
||||||
|
|
||||||
WindosPos4MESA takes four values indicating x, y, z, and w.
|
WindosPos4MESA takes four values indicating x, y, z, and w.
|
||||||
WindowPos3MESA (or WindowPos2MESA) is analaguos, but sets only
|
WindowPos3MESA (or WindowPos2MESA) is analaguos, but sets only
|
||||||
@@ -98,6 +78,14 @@ Additions to Chapter 2 of the OpenGL 1.2 Specification (OpenGL Operation)
|
|||||||
color, color index and texture coordinate update the current raster
|
color, color index and texture coordinate update the current raster
|
||||||
position's associated data.
|
position's associated data.
|
||||||
|
|
||||||
|
The current raster distance ??? XXX ???
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Additions to the AGL/GLX/WGL Specifications
|
Additions to the AGL/GLX/WGL Specifications
|
||||||
|
|
||||||
None
|
None
|
||||||
@@ -112,6 +100,7 @@ Errors
|
|||||||
INVALID_OPERATION is generated if WindowPosMESA is called betweeen
|
INVALID_OPERATION is generated if WindowPosMESA is called betweeen
|
||||||
Begin and End.
|
Begin and End.
|
||||||
|
|
||||||
|
|
||||||
New State
|
New State
|
||||||
|
|
||||||
None.
|
None.
|
||||||
@@ -123,5 +112,3 @@ New Implementation Dependent State
|
|||||||
Revision History
|
Revision History
|
||||||
|
|
||||||
* Revision 1.0 - Initial specification
|
* Revision 1.0 - Initial specification
|
||||||
* Revision 1.1 - Minor clean-up (7 Jan 2000, Brian Paul)
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,197 +0,0 @@
|
|||||||
Name
|
|
||||||
|
|
||||||
MESA_ycbcr_texture
|
|
||||||
|
|
||||||
Name Strings
|
|
||||||
|
|
||||||
GL_MESA_ycbcr_texture
|
|
||||||
|
|
||||||
Contact
|
|
||||||
|
|
||||||
Brian Paul, Tungsten Graphics, Inc. (brian 'at' tungstengraphics.com)
|
|
||||||
Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com)
|
|
||||||
|
|
||||||
Status
|
|
||||||
|
|
||||||
Shipping (Mesa 4.0.4 and later)
|
|
||||||
|
|
||||||
Version
|
|
||||||
|
|
||||||
1.0
|
|
||||||
|
|
||||||
Number
|
|
||||||
|
|
||||||
TBD
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
|
|
||||||
OpenGL 1.0 or later is required
|
|
||||||
This extensions is written against the OpenGL 1.4 Specification.
|
|
||||||
NV_texture_rectangle effects the definition of this extension.
|
|
||||||
|
|
||||||
Overview
|
|
||||||
|
|
||||||
This extension supports texture images in the YCbCr format. There is
|
|
||||||
no support for converting YCbCr images to RGB or vice versa. The
|
|
||||||
intention is for YCbCr image data to be directly sent to the renderer
|
|
||||||
without any pixel transfer operations. Only 2D texture images are
|
|
||||||
supported (not glDrawPixels, glReadPixels, etc).
|
|
||||||
|
|
||||||
A YCbCr pixel (texel) is a 16-bit unsigned short with two components.
|
|
||||||
The first component is luminance (Y). For pixels in even-numbered
|
|
||||||
image columns, the second component is Cb. For pixels in odd-numbered
|
|
||||||
image columns, the second component is Cr. If one were to convert the
|
|
||||||
data to RGB one would need to examine two pixels from columns N and N+1
|
|
||||||
(where N is even) to deduce the RGB color.
|
|
||||||
|
|
||||||
IP Status
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Issues
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
New Procedures and Functions
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
New Tokens
|
|
||||||
|
|
||||||
Accepted by the <internalFormat> and <format> parameters of
|
|
||||||
TexImage2D and TexSubImage2D:
|
|
||||||
|
|
||||||
GL_YCBCR_MESA 0x8757
|
|
||||||
|
|
||||||
Accepted by the <type> parameter of TexImage2D and TexSubImage2D:
|
|
||||||
|
|
||||||
GL_UNSIGNED_SHORT_8_8_MESA 0x85BA /* same as Apple's */
|
|
||||||
GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB /* same as Apple's */
|
|
||||||
|
|
||||||
Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation)
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization)
|
|
||||||
|
|
||||||
In section 3.6.4, Rasterization of Pixel Rectangles, on page 102,
|
|
||||||
add the following to Table 3.8 (Packed pixel formats):
|
|
||||||
|
|
||||||
type Parameter GL Data Number of Matching
|
|
||||||
Token Name Type Components Pixel Formats
|
|
||||||
-------------- ------- ---------- -------------
|
|
||||||
UNSIGNED_SHORT_8_8_MESA ushort 3 YCBCR_422_MESA
|
|
||||||
UNSIGNED_SHORT_8_8_REV_MESA ushort 3 YCBCR_422_MESA
|
|
||||||
|
|
||||||
|
|
||||||
In section 3.6.4, Rasterization of Pixel Rectangles, on page 102,
|
|
||||||
add the following to Table 3.10 (UNSIGNED_SHORT formats):
|
|
||||||
|
|
||||||
UNSIGNED_SHORT_8_8_MESA:
|
|
||||||
|
|
||||||
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
||||||
+-------------------------------+-------------------------------+
|
|
||||||
| 1st | 2nd |
|
|
||||||
+-------------------------------+-------------------------------+
|
|
||||||
|
|
||||||
UNSIGNED_SHORT_8_8_REV_MESA:
|
|
||||||
|
|
||||||
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
||||||
+-------------------------------+-------------------------------+
|
|
||||||
| 2nd | 1st |
|
|
||||||
+-------------------------------+-------------------------------+
|
|
||||||
|
|
||||||
|
|
||||||
In section 3.6.4, Rasterization of Pixel Rectangles, on page 102,
|
|
||||||
add the following to Table 3.12 (Packed pixel fiedl assignments):
|
|
||||||
|
|
||||||
First Second Third Fourth
|
|
||||||
Format Element Element Element Element
|
|
||||||
------ ------- ------- ------- -------
|
|
||||||
YCBCR_422_MESA luminance chroma
|
|
||||||
|
|
||||||
|
|
||||||
In section 3.8.1, Texture Image Specification, on page 125, add
|
|
||||||
another item to the list of TexImage2D and TexImage3D equivalence
|
|
||||||
exceptions:
|
|
||||||
|
|
||||||
* The value of internalformat and format may be YCBCR_MESA to
|
|
||||||
indicate that the image data is in YCbCr format. type must
|
|
||||||
be either UNSIGNED_SHORT_8_8_MESA or UNSIGNED_SHORT_8_8_REV_MESA
|
|
||||||
as seen in tables 3.8 and 3.10. Table 3.12 describes the mapping
|
|
||||||
between Y and Cb/Cr to the components.
|
|
||||||
If NV_texture_rectangle is supported target may also be
|
|
||||||
TEXTURE_RECTANGLE_NV or PROXY_TEXTURE_RECTANGLE_NV.
|
|
||||||
All pixel transfer operations are bypassed. The texture is stored as
|
|
||||||
YCbCr, not RGB. Queries of the texture's red, green and blue component
|
|
||||||
sizes will return zero.
|
|
||||||
|
|
||||||
|
|
||||||
In section 3.8.1, Texture Image Specification, on page 126, add
|
|
||||||
another item to the list of TexImage1D and TexImage2D equivalence
|
|
||||||
exceptions:
|
|
||||||
|
|
||||||
* The value of internalformat and format can not be YCBCR_MESA.
|
|
||||||
|
|
||||||
|
|
||||||
In section 3.8.2, Alternate Texture Image Specification Commands, on
|
|
||||||
page 129, insert this paragraph after the first full paragraph on the
|
|
||||||
page:
|
|
||||||
|
|
||||||
"If the internal storage format of the image being updated by
|
|
||||||
TexSubImage2D is YCBCR_MESA then format must be YCBCR_MESA.
|
|
||||||
The error INVALID_OPERATION will be generated otherwise."
|
|
||||||
|
|
||||||
|
|
||||||
Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment
|
|
||||||
Operations and the Frame Buffer)
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions)
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to Chapter 6 of the OpenGL 1.4 Specification (State and
|
|
||||||
State Requests)
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to Appendix A of the OpenGL 1.4 Specification (Invariance)
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Additions to the AGL/GLX/WGL Specifications
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
GLX Protocol
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
Errors
|
|
||||||
|
|
||||||
INVALID_ENUM is generated by TexImage2D if <internalFormat> is
|
|
||||||
MESA_YCBCR but <format> is not MESA_YCBCR.
|
|
||||||
|
|
||||||
INVALID_ENUM is generated by TexImage2D if <format> is MESA_YCBCR but
|
|
||||||
<internalFormat> is not MESA_YCBCR.
|
|
||||||
|
|
||||||
INVALID_VALUE is generated by TexImage2D if <format> is MESA_YCBCR and
|
|
||||||
<internalFormat> is MESA_YCBCR and <border> is not zero.
|
|
||||||
|
|
||||||
INVALID_OPERATION is generated by TexSubImage2D if the internal image
|
|
||||||
format is YCBCR_MESA and format is not YCBCR_MESA.
|
|
||||||
|
|
||||||
INVALID_OPERATION is generated by CopyTexSubImage2D if the internal
|
|
||||||
image is YCBCR_MESA.
|
|
||||||
|
|
||||||
New State
|
|
||||||
|
|
||||||
Edit table 6.16 on page 231: change the type of TEXTURE_INTERNAL_FORMAT
|
|
||||||
from n x Z42 to n x Z43 to indicate that internal format may also be
|
|
||||||
YCBCR_MESA.
|
|
||||||
|
|
||||||
Revision History
|
|
||||||
|
|
||||||
20 September 2002 - Initial draft
|
|
||||||
@@ -1,26 +1,6 @@
|
|||||||
|
|
||||||
3Dfx Glide device driver
|
3Dfx Glide device driver for Mesa 3.2
|
||||||
|
(see below for FAQ)
|
||||||
|
|
||||||
|
|
||||||
Info for Mesa 4.1
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
The 3dfx Glide driver in Mesa is disabled by default. Not too many people
|
|
||||||
use this driver anymore and at some point down the road it will be dropped.
|
|
||||||
|
|
||||||
To use/enable the Glide driver either do this:
|
|
||||||
|
|
||||||
'./configure --with-glide=DIR' Where DIR is the location of Glide, like
|
|
||||||
/usr/ or /usr/local
|
|
||||||
|
|
||||||
OR
|
|
||||||
|
|
||||||
'make linux-x86-glide' If using the old-style Makefile system.
|
|
||||||
|
|
||||||
The rest of this file hasn't changed since Mesa 3.3. Some of it's out of
|
|
||||||
date, but some is still valid.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
What do you need ?
|
What do you need ?
|
||||||
@@ -32,6 +12,8 @@ What do you need ?
|
|||||||
under Linux (more information in the "Useful Glide Environment
|
under Linux (more information in the "Useful Glide Environment
|
||||||
Variables");
|
Variables");
|
||||||
|
|
||||||
|
- Mesa 3.1;
|
||||||
|
|
||||||
- The 3Dfx Glide library 2.3 or later for your OS (the 2.4 works fine).
|
- The 3Dfx Glide library 2.3 or later for your OS (the 2.4 works fine).
|
||||||
The Voodoo2 requires the Glide library 2.51. The Glide 3.1 is not
|
The Voodoo2 requires the Glide library 2.51. The Glide 3.1 is not
|
||||||
compatible with the Glide 2.x so it doesn't work with the current
|
compatible with the Glide 2.x so it doesn't work with the current
|
||||||
@@ -40,6 +22,8 @@ What do you need ?
|
|||||||
- A compiler supported by the Glide library (Micro$oft VC++ (tested),
|
- A compiler supported by the Glide library (Micro$oft VC++ (tested),
|
||||||
Watcom (tested), GCC for Linux (tested), etc.);
|
Watcom (tested), GCC for Linux (tested), etc.);
|
||||||
|
|
||||||
|
- A lot of patience, this is an alpha release.
|
||||||
|
|
||||||
- It's nice to have two monitors - one for your normal graphics
|
- It's nice to have two monitors - one for your normal graphics
|
||||||
card and one for your 3Dfx card. If something goes wrong with
|
card and one for your 3Dfx card. If something goes wrong with
|
||||||
an application using the 3Dfx hardware you can still see your
|
an application using the 3Dfx hardware you can still see your
|
||||||
@@ -220,9 +204,6 @@ Doing more with Mesa & Linux Glide:
|
|||||||
visual depth doesn't match the Voodoo framebufffer bit per pixel, it
|
visual depth doesn't match the Voodoo framebufffer bit per pixel, it
|
||||||
is required also a pixel format translation).
|
is required also a pixel format translation).
|
||||||
|
|
||||||
NOTE: the in-window rendering feature only works with double-buffering.
|
|
||||||
|
|
||||||
|
|
||||||
On the fly switching between in window rendering and full screen rendering
|
On the fly switching between in window rendering and full screen rendering
|
||||||
--------------------------------------------------------------------------
|
--------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
@@ -3,71 +3,61 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
* Introduction
|
Introduction
|
||||||
|
|
||||||
Mesa 4.1 features a driver for the BeOS. The driver implements
|
Mesa 3.1 features a new driver for the BeOS. The new driver implements
|
||||||
a clone of the BGLView class. This class, derived from BView, allows
|
a clone of the BGLView class. This class, derived from BView, allows
|
||||||
OpenGL rendering into a BeOS window.
|
OpenGL rendering into a BeOS window.
|
||||||
The 4.1 BeOS driver is an update of Brian Paul's BeOS driver released in Mesa 3.1.
|
|
||||||
|
|
||||||
Any application which uses the BGLView should be able to use Mesa
|
Any application which uses the BGLView should be able to use Mesa
|
||||||
instead of Be's OpenGL without changing any code.
|
instead of Be's OpenGL without changing any code.
|
||||||
|
|
||||||
Since Be's OpenGL implementation (as of R5) is basically just the
|
Since Be's OpenGL implementation (as of R4) is basically just the
|
||||||
SGI sample implementation, it's pretty slow. You'll see that Mesa
|
SGI sample implementation, it's pretty slow. You'll see that Mesa
|
||||||
is considerably faster.
|
is considerably faster.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
* Source Code
|
Source Code
|
||||||
|
|
||||||
The source code for the driver is in Mesa-4.1/src/BeOS/ directory.
|
The source code for the driver is in Mesa-3.1/src/BeOS/GLView.cpp
|
||||||
It's not 100% finished at this time but many GLUT-based demos are
|
It's not 100% finished at this time but many GLUT-based demos are
|
||||||
working. No optimizations have been made at this time.
|
working. No optimizations have been made at this time.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
* Compiling
|
Compiling
|
||||||
|
|
||||||
Requirements:
|
In the Mesa-3.x directory type "make -f Makefile.X11 beos-r4".
|
||||||
- gcc version 2.95.3 for BeOS
|
When it finishes the libMesaGL.so and libMesaGLU.so libraries for
|
||||||
You can find it here: http://www.bebits.com/app/2157
|
BeOS will be in the Mesa-3.x/lib/ directory.
|
||||||
|
|
||||||
Move to the Mesa-4.x src sub-directory and then type "make -f Makefile.BeOS-R5".
|
|
||||||
When it finishes the Mesa based libGL.so library for
|
|
||||||
BeOS will be in the Mesa-4.x/src/obj.{x86|ppc}/ directory.
|
|
||||||
|
|
||||||
To install it as Be's default libGL.so replacement, put it in your
|
|
||||||
/boot/home/config/lib/ directory. All your GL/GLUTapps will use
|
|
||||||
the Mesa based then.
|
|
||||||
|
|
||||||
By default, it build a non-debug version library.
|
|
||||||
The x86 (MMX, SSE and 3DNOW) optimizations are also supported for x86 target.
|
|
||||||
Sorry, Mesa don't have ppc (Altivec) optimizations yet.
|
|
||||||
|
|
||||||
|
|
||||||
* Example Programs
|
|
||||||
|
|
||||||
Look in the Mesa-4.x/BeOS/ directory for one or two BGLView demo
|
Example Programs
|
||||||
|
|
||||||
|
Look in the Mesa-3.x/BeOS/ directory for one or two BGLView demo
|
||||||
programs. They should have been compiled along with the Mesa
|
programs. They should have been compiled along with the Mesa
|
||||||
library.
|
library.
|
||||||
|
|
||||||
|
|
||||||
* GLUT
|
|
||||||
|
|
||||||
A beta version of GLUT 3.7 port for BeOS can be found at
|
GLUT
|
||||||
http://anobject.com/jehamby/Code/Glut-3.7-x86.zip.
|
|
||||||
|
|
||||||
There's is a 2.5 version in src-glut.beos/, too.
|
A version of GLUT 2.5 for BeOS can be found in src-glut.beos/.
|
||||||
The original distribution can be obtained from
|
The original distribution can be obtained from
|
||||||
http://home.beoscentral.com/jehamby/Glut-3.5-x86.zip
|
http://home.beoscentral.com/jehamby/Glut-3.5-x86.zip
|
||||||
|
|
||||||
They are special version of GLUT adapted for the BeOS. I don't
|
This is a special version of GLUT adapted for the BeOS. I don't
|
||||||
believe Mark Kilgard's normal GLUT distribution includes BeOS
|
believe Mark Kilgard's normal GLUT distribution includes BeOS
|
||||||
support.
|
support.
|
||||||
|
|
||||||
|
It seems that you have to recompile GLUT with libMesaGL.so instead
|
||||||
|
of libGL.so in order for everything to work. I'm not sure why.
|
||||||
|
|
||||||
* Special Features
|
|
||||||
|
|
||||||
|
Special Features
|
||||||
|
|
||||||
Mesa's implementation of the BGLView class has an extra member
|
Mesa's implementation of the BGLView class has an extra member
|
||||||
function: CopySubBufferMESA(). It basically works like SwapBuffers()
|
function: CopySubBufferMESA(). It basically works like SwapBuffers()
|
||||||
@@ -79,9 +69,7 @@ cause a fatal error when running with Be's OpenGL.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
* Work Left To Do
|
Work Left To Do
|
||||||
|
|
||||||
BDirectWindow single buffering support is not implemented yet.
|
|
||||||
|
|
||||||
Color index mode is not implemented yet.
|
Color index mode is not implemented yet.
|
||||||
|
|
||||||
@@ -92,7 +80,7 @@ rendering. This should also be implemented for Mesa.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
* Old BeOS Driver
|
Old BeOS Driver
|
||||||
|
|
||||||
Mesa 2.6 had an earlier BeOS driver. It was based on Mesa's Off-screen
|
Mesa 2.6 had an earlier BeOS driver. It was based on Mesa's Off-screen
|
||||||
rendering interface, not BGLView. If you're interested in the older
|
rendering interface, not BGLView. If you're interested in the older
|
||||||
@@ -100,7 +88,7 @@ driver you should get Mesa 2.6.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
* BeOS and Glide
|
BeOS and Glide
|
||||||
|
|
||||||
Mesa 3.0 supported the 3Dfx/Glide library on Beos. Download Mesa 3.0
|
Mesa 3.0 supported the 3Dfx/Glide library on Beos. Download Mesa 3.0
|
||||||
if interested. Ideally, the 3Dfx/Glide support should be updated to
|
if interested. Ideally, the 3Dfx/Glide support should be updated to
|
||||||
@@ -111,4 +99,4 @@ of February, 1999.
|
|||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
$Id: README.BEOS,v 1.7 2002/09/19 16:19:44 brianp Exp $
|
$Id: README.BEOS,v 1.5.6.1 1999/11/27 01:39:50 brianp Exp $
|
||||||
|
|||||||
211
docs/README.DJ
211
docs/README.DJ
@@ -1,211 +0,0 @@
|
|||||||
Mesa 4.0 DOS/DJGPP Port v1.1
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Description:
|
|
||||||
~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Well, guess what... this is the DOS port of Mesa 4.0.4, for DJGPP fans... Whoa!
|
|
||||||
The driver has its origins in ddsample.c, written by Brian Paul and found by me
|
|
||||||
in Mesa 3.4.2.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Legal:
|
|
||||||
~~~~~~
|
|
||||||
|
|
||||||
Mesa copyright applies, provided this package is used within Mesa. For anything
|
|
||||||
else, see GPL.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Installation:
|
|
||||||
~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Unzip and type:
|
|
||||||
|
|
||||||
make -f Makefile.DJ [OPTIONS...]
|
|
||||||
|
|
||||||
Available options:
|
|
||||||
|
|
||||||
Environment variables:
|
|
||||||
CPU optimize for the given processor.
|
|
||||||
default = k6
|
|
||||||
BIG_OPT=1 crazy optimizations; not very useful, though...
|
|
||||||
default = no
|
|
||||||
GLIDE absolute path to Glide library; used with FX.
|
|
||||||
default = $(TOP)/include/glide3
|
|
||||||
FX=1 build for 3dfx Glide3; use it if you have the Glide
|
|
||||||
SDK (designed for your platform), and, of course, a
|
|
||||||
3dfx card... Note that this disables compilation of
|
|
||||||
actual DMesa code, as Glide does all the stuff!
|
|
||||||
default = no
|
|
||||||
HAVE_X86=1 optimize for i386.
|
|
||||||
default = no
|
|
||||||
HAVE_MMX=1 MMX instructions; use only if you assembler/compiler
|
|
||||||
supports MMX instruction set; backwards compatibility
|
|
||||||
with older processors is still preserved.
|
|
||||||
default = no
|
|
||||||
HAVE_SSE=1 (see HAVE_MMX)
|
|
||||||
default = no
|
|
||||||
HAVE_3DNOW=1 (see HAVE_MMX)
|
|
||||||
default = no
|
|
||||||
|
|
||||||
Targets:
|
|
||||||
all: build everything
|
|
||||||
libgl: build GL
|
|
||||||
libglu: build GLU
|
|
||||||
libglut: build GLUT
|
|
||||||
clean: remove object files
|
|
||||||
realclean: remove all generated files
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Tested on:
|
|
||||||
CPU: K6-2 (CXT) @500(412.5) MHz
|
|
||||||
Mainboard: ViA Apollo VP2/97 w/ 128 MB SDRAM
|
|
||||||
Video card: PowerColor Evil King3 (Voodoo3 3000) w/ 16384 kB SDRAM
|
|
||||||
DJGPP: djdev 2.03 + gcc v3.1 + make v3.79.1
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FAQ:
|
|
||||||
~~~~
|
|
||||||
|
|
||||||
1. Compilation
|
|
||||||
|
|
||||||
Q) I tried to run `make' and it exits because `gcc' complains it cannot find
|
|
||||||
some stupid file.
|
|
||||||
A) You need LFN support.
|
|
||||||
A) When compiling for Glide (FX=1), pay attention to Glide path.
|
|
||||||
|
|
||||||
2. Dynamic modules
|
|
||||||
|
|
||||||
Q) What are you mumbling about dynamic modules?
|
|
||||||
A) You must have the DXE2 package (available on SimTel.Net, courtesy of
|
|
||||||
Andrew Zabolotny) installed in order to build the dynamic modules.
|
|
||||||
|
|
||||||
Q) I have DXE2, but I couln'd build the `dxe2gen.exe'.
|
|
||||||
Q) I built `dxe2gen.exe', but it doesn't do the job right.
|
|
||||||
A) There is a patched version on my web page.
|
|
||||||
|
|
||||||
Q) DXE2 modules give me headaches...
|
|
||||||
A) The DXE2 modules are not compulsory. The static libraries are still built
|
|
||||||
and you can use them in the old-fashioned, classic way. For example:
|
|
||||||
gcc -o OUT.exe IN.c -lglut -lglu -lgl
|
|
||||||
|
|
||||||
Q) Okay, DXE2 modules are built. How can I use them?
|
|
||||||
A) Usage of the dynamic modules requires three things:
|
|
||||||
- include DMESADXE.H in one of the sources, so references inside
|
|
||||||
dynamic modules will get resolved (or use `-include' directive).
|
|
||||||
- link against import libraries (libI*.a) and LIBDL.A, which will do
|
|
||||||
the dynamic linkage job for you
|
|
||||||
- put the DXEs somewhere along the library path (LD_LIBRARY_PATH) or
|
|
||||||
in the current directory
|
|
||||||
For example:
|
|
||||||
gcc -o OUT.exe -include dmesadxe.h IN.c -ligl -liglu -liglut -ldl
|
|
||||||
|
|
||||||
Q) The application dies with "Abort!" due to unresolved symbols.
|
|
||||||
A) This is bad! Extract the unresolved symbol list from this module. For
|
|
||||||
example:
|
|
||||||
dxe2gen --show-unres gl.dxe > u
|
|
||||||
Check DMESADXE.H; the symbols in `u' must either be present here or be
|
|
||||||
exported from another module that has to be loaded before your faulting
|
|
||||||
one. Then recompile.
|
|
||||||
|
|
||||||
3. Using Mesa for DJGPP
|
|
||||||
|
|
||||||
Q) Does this build work in Win9x?
|
|
||||||
A) Yes.
|
|
||||||
|
|
||||||
Q) Does it work under NT (W2k, XP) core?
|
|
||||||
A) Uh... probably not!
|
|
||||||
|
|
||||||
Q) I made a simple application and it does nothing. It exits right away. Not
|
|
||||||
even a blank screen.
|
|
||||||
A) The current version supports only RGB[A] modes, for it made no sense to
|
|
||||||
me to endorse color-index (aka palette) modes.
|
|
||||||
A) Single-buffered is not allowed at all. Until I can find a way to use
|
|
||||||
*REAL* hardware acceleration, it won't get implemented.
|
|
||||||
A) Another weird "feature" is that buffer width must be multiple of 4 (I'm a
|
|
||||||
lazy programmer and I found that the easiest way to keep buffer handling
|
|
||||||
at peak performance ;-).
|
|
||||||
|
|
||||||
Q) My demo doesn't display text. I know I used the glut font routines!
|
|
||||||
A) Then you probably use GLUT as a DXE. Well, there is no direct access to
|
|
||||||
variables due to the way DXE works. Read the documentation. The author of
|
|
||||||
GLUT took this into account for _WIN32 DLL's only; I don't want to modify
|
|
||||||
his headers. The only workaround is to link GLUT the old way :-(
|
|
||||||
|
|
||||||
Q) The DJGPP port of Mesa is so SLOOOW! The Win32 OpenGL performs so much
|
|
||||||
better...
|
|
||||||
A) Is that a question? If you have a Voodoo3/Banshee card, you're lucky. The
|
|
||||||
Glide port is on my web page. If you haven't, sorry; everything is done
|
|
||||||
in software. Suggestions?
|
|
||||||
|
|
||||||
Q) I have a super/mega/ultra monitor and all you can do is 60Hz? My eyes are
|
|
||||||
leaking from the orbits...
|
|
||||||
A) If you were compiling for Glide, see Glide info. If not, be aware that
|
|
||||||
refresh rate control works only for VESA 3.0. The environment variable
|
|
||||||
DMESA_REFRESH sets the default screen refresh. For example:
|
|
||||||
set DMESA_REFRESH=75
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
libGLUT (the toolkit):
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Well, this "skeletal" GLUT implementation is not mine. Thanks should go to
|
|
||||||
Bernhard Tschirren, Mark Kilgard, Brian Paul and probably others (or probably
|
|
||||||
not ;-). I only changed it to be self-standing (Allegro-free). The keyboard,
|
|
||||||
mouse and timer drivers were inspired from an old project of mine (D3Xl) and
|
|
||||||
fixed with many Allegro "infusions"; I deeply thank to Shawn Hargreaves et co.
|
|
||||||
|
|
||||||
My keyboard driver used only scancodes, but since GLUT requires ASCII values
|
|
||||||
for keys, I borrowed the translation tables (and maybe more) from Allegro.
|
|
||||||
Ctrl-Alt-Del (plus Ctrl-Alt-End, for Windows users) will shut down the GLUT
|
|
||||||
engine unconditionally: it will raise SIGINT, which in turn will call the
|
|
||||||
destructors (let's hope), thus cleaning up your/my mess ;-) NB: since the
|
|
||||||
DJGPP guys ensured signal handlers won't go beyond program's space (and since
|
|
||||||
dynamic modules shall) the SIGINT can't be hooked (well, it can, but it is
|
|
||||||
useless), therefore you must live with the 'Exiting due to signal SIGINT'
|
|
||||||
message...
|
|
||||||
|
|
||||||
The mouse driver is far from complete (lack of positioning, drawing, etc),
|
|
||||||
but is enough to make almost all the demos work.
|
|
||||||
|
|
||||||
The timer is pretty versatile for it supports multiple timers with different
|
|
||||||
frequencies. It may not be the most accurate timer in the known universe, but
|
|
||||||
I think it's OK. Take this example: you have timer A with a very high rate,
|
|
||||||
and then you have timer B with very low rate compared to A; now, A ticks OK,
|
|
||||||
but timer B will probably loose precision!
|
|
||||||
|
|
||||||
As an addition, stdout and stderr are redirected and dumped upon exit. This
|
|
||||||
means that printf can be safely called during graphics, but all messages come
|
|
||||||
in bulk! A bit of a hack, I know, but I think it's better than to miss them
|
|
||||||
at all. "Borrowed" from RHIDE (Robert Hoehne) or SETEDIT (Salvador Eduardo
|
|
||||||
Tropea)... I'm not sure.
|
|
||||||
|
|
||||||
Window creating defaults: 640x480x16 at (0,0), 8-bit stencil, 16-bit accum.
|
|
||||||
However, the video mode is chosen in such a way that first window will fit.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
History:
|
|
||||||
~~~~~~~~
|
|
||||||
|
|
||||||
v1.0 mar-2002 initial release
|
|
||||||
v1.1 sep-2002 + added 3dfx Glide3 support
|
|
||||||
+ added refresh rate control
|
|
||||||
+ added fonts in glut
|
|
||||||
* lots of minor changes
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Contact:
|
|
||||||
~~~~~~~~
|
|
||||||
|
|
||||||
Name: Borca Daniel
|
|
||||||
E-mail: dborca@yahoo.com
|
|
||||||
WWW: http://www.geocities.com/dborca/
|
|
||||||
@@ -34,14 +34,14 @@ Installing GCC-2.95.2/Mingw32 Build:
|
|||||||
|
|
||||||
e) Edit the mingw32.bat file to accomodate your choice of directory structure.
|
e) Edit the mingw32.bat file to accomodate your choice of directory structure.
|
||||||
|
|
||||||
%mesaroot%: This is your root directory (Mesa-3.3)
|
%mesaroot%: This is your root directory (Mesa-3.2)
|
||||||
%mesasrc%: This is the Mesa-3.3 src directory (Mesa-3.3\src)
|
%mesasrc%: This is the Mesa-3.2 src directory (Mesa-3.2\src)
|
||||||
%mesalib%: This is where the build will put libGL.a and libGLU.a
|
%mesalib%: This is where the build will put libGL.a and libGLU.a
|
||||||
|
|
||||||
Running the Build:
|
Running the Build:
|
||||||
|
|
||||||
Open your Command Prompt or MS-DOS prompt.
|
Open your Command Prompt or MS-DOS prompt.
|
||||||
Go to your Mesa-3.3 'root' directory
|
Go to your Mesa-3.2 'root' directory
|
||||||
At the command line type: mingw32
|
At the command line type: mingw32
|
||||||
|
|
||||||
That's all there is to it.
|
That's all there is to it.
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
|
|
||||||
Mesa 3.0 MITS Information
|
Mesa 3.0 MITS Information
|
||||||
|
|
||||||
|
[The MITS code hasn't been update for Mesa 3.1 and may no longer work]
|
||||||
This software is distributed under the terms of the GNU Library
|
|
||||||
General Public License, see the LICENSE file for details.
|
|
||||||
|
|
||||||
|
|
||||||
This document is a preliminary introduction to help you get
|
This document is a preliminary introduction to help you get
|
||||||
|
|||||||
@@ -1,33 +1,45 @@
|
|||||||
|
|
||||||
|
NOTE: this information is obsolete for Mesa 3.1. Due to the big
|
||||||
|
changes in the Mesa code, the threads support is out of date.
|
||||||
|
Someone will have to review/update it.
|
||||||
|
|
||||||
|
|
||||||
Mesa Threads README
|
Mesa Threads README
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
Thread safety was introduced in Mesa 2.6 by John Stone and
|
Mesa 2.6 is the starting point for an effort to make Mesa
|
||||||
Christoph Poliwoda.
|
safe in multithreaded applications. The files src/mthreads.c and
|
||||||
|
src/mthreads.h provide a platform independent threads API which Mesa
|
||||||
It was redesigned in Mesa 3.3 so that thread safety is
|
uses internally to provide thread-safe operation. At present the mthreads
|
||||||
supported by default (on systems which support threads,
|
code supports three thread APIS:
|
||||||
that is). There is no measurable penalty on single
|
|
||||||
threaded applications.
|
|
||||||
|
|
||||||
NOTE that the only _driver_ which is thread safe at this time
|
|
||||||
is the OS/Mesa driver!
|
|
||||||
|
|
||||||
|
|
||||||
At present the mthreads code supports three thread APIS:
|
|
||||||
1) POSIX threads (aka pthreads).
|
1) POSIX threads (aka pthreads).
|
||||||
2) Solaris / Unix International threads.
|
2) Solaris / Unix International threads.
|
||||||
3) Win32 threads (Win 95/NT).
|
3) Win32 threads (Win 95/NT).
|
||||||
|
|
||||||
Support for other thread libraries can be added src/glthread.[ch]
|
Here's the current list of targets which enable multithreaded handling
|
||||||
|
in Mesa:
|
||||||
|
|
||||||
|
linux-386-pthread for Linux w/ Intel assembly and linuxthreads
|
||||||
|
sunos5-thread for Suns with SunOS 5.x, using Solaris threads
|
||||||
|
sunos5-pthread for Suns with SunOS 5.[56] using POSIX threads
|
||||||
|
sunos5-gcc-thread for Suns with SunOS 5.x and GCC, using Solaris threads
|
||||||
|
sunos5-gcc-pthread for Suns with SunOS 5.[56] and GCC, using POSIX threads
|
||||||
|
|
||||||
In order to guarantee proper operation, it is
|
In order to use Mesa with a multithreaded application, Mesa must be compiled
|
||||||
|
using one of the thread-enabled configurations. In cases where a platform
|
||||||
|
supports multiple APIs which are acceptable to Mesa, Mesa must be built
|
||||||
|
with the same threads API as the application in order for things to work
|
||||||
|
properly. For example, Solaris >= 2.5 support both POSIX threads and
|
||||||
|
Sun's own threads API. In order to guarantee proper operation, it is
|
||||||
necessary for both Mesa and application code to use the same threads API.
|
necessary for both Mesa and application code to use the same threads API.
|
||||||
So, if your application uses Sun's thread API, then you should build Mesa
|
So, if your application uses Sun's thread API, then you should build Mesa
|
||||||
using one of the targets for Sun threads.
|
using one of the targets for Sun threads.
|
||||||
|
|
||||||
|
Since this effort is still very much a work in progress, not all
|
||||||
|
aspects of Mesa are thread safe. As of this release (Mesa 2.6) only the
|
||||||
|
osmesa drivers have been made MT-safe. As work continues, other drivers
|
||||||
|
such as the X11 drivers will also incorporate MT-safe features.
|
||||||
|
|
||||||
The mtdemos directory contains some example programs which use
|
The mtdemos directory contains some example programs which use
|
||||||
multiple threads to render to osmesa rendering context(s).
|
multiple threads to render to osmesa rendering context(s).
|
||||||
|
|
||||||
@@ -38,15 +50,17 @@ only one that really supports multiprocessor machines (AFAIK). See
|
|||||||
http://pauillac.inria.fr/~xleroy/linuxthreads/README for further
|
http://pauillac.inria.fr/~xleroy/linuxthreads/README for further
|
||||||
information about the usage of linuxthreads.
|
information about the usage of linuxthreads.
|
||||||
|
|
||||||
If you are interested in helping with thread safety work in Mesa
|
If you are interested in helping develop MT-safe Mesa, please send email
|
||||||
join the Mesa developers mailing list and post your proposal.
|
to j.stone@acm.org and poliwoda@volumegraphics.com who are the two most
|
||||||
|
directly involved in this effort currently. Similarly, if you have problems
|
||||||
|
using the MT-safe builds of Mesa, please send us comments/bugs etc.
|
||||||
|
|
||||||
|
Future versions of Mesa will include more extensive documentation related
|
||||||
|
to multithreading. This is the first release of our work, so please bear
|
||||||
|
with us.
|
||||||
|
|
||||||
Regards,
|
Regards,
|
||||||
John Stone -- j.stone@acm.org johns@cs.umr.edu
|
John Stone -- j.stone@acm.org johns@cs.umr.edu
|
||||||
Christoph Poliwoda -- poliwoda@volumegraphics.com
|
Christoph Poliwoda -- poliwoda@volumegraphics.com
|
||||||
|
|
||||||
|
|
||||||
Version info:
|
|
||||||
Mesa 2.6 - initial thread support.
|
|
||||||
Mesa 3.3 - thread support mostly rewritten (Brian Paul)
|
|
||||||
|
|||||||
@@ -1,94 +1,623 @@
|
|||||||
File: docs/README.WIN32
|
|
||||||
|
|
||||||
Last updated: Aug 15, 2002 - Karl Schultz - kschultz@users.sourceforge.net
|
Mesa/Readme.win32
|
||||||
|
|
||||||
Quick Start
|
Last Updated: Sunday, September 19th, 1999 - tjump@tertius.com
|
||||||
|
|
||||||
If you have Microsoft Visual C++ 6.0 installed, simply go to the top directory
|
*** What's New
|
||||||
of the Mesa distribution and type 'nmake -f Makefile.win NODEBUG=1' for
|
|
||||||
an optimized build. Note that you may have to run ...VC98/BIN/VCVARS32.BAT
|
|
||||||
to set up the appropriate compiler environment variables.
|
|
||||||
|
|
||||||
Details and Notes
|
- Updated for Mesa 3.1beta3/CVS. Debug and Release command-line builds of
|
||||||
|
Mesa, fxMesa, GLU, GLUT and all sample programs DLL-based. Manual
|
||||||
|
executions tests with minimum requisite results (aka: things looked like
|
||||||
|
I expected them to).
|
||||||
|
|
||||||
- Building Mesa as noted above should visit and build the following:
|
What did you expect, complete regression testing maybe?
|
||||||
src MesaGL.dll, MesaGL.lib, osmesa.dll, osmesa.lib
|
|
||||||
si-glu MesaGLU.dll, MesaGLU.lib
|
|
||||||
src-glut glut32.dll, glut32.lib
|
|
||||||
demos a handful of demo executables.
|
|
||||||
book more examples
|
|
||||||
samples more examples
|
|
||||||
|
|
||||||
- After building, you can copy the above DLL files to a place in your PATH
|
- NASM build support. Any file in the project coded as a .S file will
|
||||||
such as $SystemRoot/SYSTEM32. If you don't like putting things in a
|
automatically be recognized and built as a NASM-source assember file.
|
||||||
system directory, place them in the same directory as the executable(s).
|
|
||||||
For example, you can copy the DLL files to the demos directory if you
|
|
||||||
just want to run the demos. The build process places the DLL and LIB files
|
|
||||||
in the ./lib directory. The makefile creates this directory if it does
|
|
||||||
not already exist.
|
|
||||||
|
|
||||||
- The make targets 'clean' and 'clobber' will remove objects and libraries.
|
To enable building using NASM, set the environment variable NASM to
|
||||||
But the files in ./lib are never cleaned.
|
indicate that command to execute to run nasm on a file. If NASM is in
|
||||||
|
your command search path then all this needs be set to is 'nasmw' -
|
||||||
|
otherwise you will need to include the complete drive and directory path.
|
||||||
|
|
||||||
- The make target 'install' will take its best shot at copying DLL files,
|
NASM may be retrieved here: http://www.web-sites.co.uk/nasm/
|
||||||
LIB files, and headers to the right places. I strongly suggest that
|
|
||||||
you examine the makefiles to make sure that 'install' doesn't do anything
|
|
||||||
that you can't live with.
|
|
||||||
|
|
||||||
- The makefiles are designed to work with Microsoft's NMAKE, and do,
|
- DevStudio projects suspended for compatability reasons: projects modified
|
||||||
unfortunately, have some Microsoft-specific things in them. If you
|
by DevStudio 6 are not compatible with DevStudio 5.
|
||||||
would like to use gcc or some other build tools like the Cygnus tools,
|
|
||||||
then you will have to hack the makefiles to make them work with your
|
|
||||||
tools. I'm sorry about this; I wasn't motivated to make this any
|
|
||||||
different, but if you end up modifying the makefiles for your tools,
|
|
||||||
you can send me the changes and I can apply the changes to the
|
|
||||||
source tree.
|
|
||||||
|
|
||||||
- There are no Microsoft Visual Studio project files. However, these
|
These will slowly be rebuilt and put into CVS as I can.
|
||||||
should be very easy to create. One can use the compiler and linker
|
|
||||||
options found in the makefiles to make quick progress in creating
|
|
||||||
projects.
|
|
||||||
|
|
||||||
- The DLL files are built so that the external entry points use the
|
- Build environment change: The Glide SDK is no longer assumed to be in
|
||||||
stdcall calling convention.
|
the global INCLUDE/LIB environment vars, it is required that you set the
|
||||||
|
value 'GLIDE2X' as either an environment variable pointing to your Glide
|
||||||
|
SDK install directory or that you configure that as a build option to
|
||||||
|
nmake.exe when building fxmesagl32. Examples:
|
||||||
|
|
||||||
- Static LIB files are not built. The LIB files that are built with
|
nmake /f nmake.mak GLIDE2X=g:\sdk\glide2x fxmesagl32
|
||||||
the current makefiles are the linker import files associated with
|
|
||||||
the DLL files. If static LIB's are desired, it should not be too
|
|
||||||
difficult to modify the makefiles to generate them.
|
|
||||||
|
|
||||||
- The si-glu sources are used to build the GLU libs. This was done
|
<or>
|
||||||
mainly to get the better tessellator code.
|
|
||||||
|
|
||||||
- The osmesa driver builds and should work on Windows as well as
|
nmake /f nmake.mak GLIDE2X=g:\sdk\glide2x allfx
|
||||||
any other platform.
|
|
||||||
|
|
||||||
- The Windows driver (in src/Windows) builds and runs at least at
|
<or>
|
||||||
a minimal level. I modified this driver to work with the new
|
|
||||||
Mesa 4.0 code and driver architecture, but I did not do a great
|
|
||||||
deal of optimization and testing. There are many opportunities
|
|
||||||
for optimization, many of which can be done by coding more specific
|
|
||||||
paths for the rasterizers. See src/osmesa/osmesa.c for some good
|
|
||||||
examples.
|
|
||||||
|
|
||||||
- There is DirectDraw support in the Windows driver, updated by
|
nmake /f nmake.mak GLIDE2X=g:\sdk\glide2x progs.3dfx.demos
|
||||||
Daniel Slater. You'll need to uncomment the #define DDRAW line
|
|
||||||
in src/Windows/wmesadef.h and add ddraw.lib to the list of libraries
|
|
||||||
in src/Makefile.win. On some systems, you will acheive significantly
|
|
||||||
higher framerates with DirectDraw.
|
|
||||||
|
|
||||||
- Some of the more specialized code like FX drivers, stereo, and
|
The DevStudio workspace files for 3Dfx OpenGL require the definition of
|
||||||
parallel support isn't compiled or tested. I left much of this
|
GLIDE2SDK as an environment variable pointing to where your copy of the
|
||||||
code alone, but it may need some work to get it 'turned on' again.
|
Glide SDK has been installed. Adding this to your AUTOEXEC.BAT would do
|
||||||
|
so (change the directories to match):
|
||||||
|
|
||||||
- No assembly code is compiled or assembled. Again, this may need
|
SET GLIDE2SDK=G:\SDK\GLIDE2X
|
||||||
some work to turn it back on or use it again.
|
|
||||||
|
|
||||||
If you have a Windows-related build problem or question, it is
|
*** Legalese
|
||||||
probably better to direct it to me (kschultz@users.sourceforge.net),
|
|
||||||
rather than directly to the other Mesa developers. I will help you
|
|
||||||
as much as I can. I also monitor the Mesa mailing lists and will
|
|
||||||
answer questions in this area there as well.
|
|
||||||
|
|
||||||
|
These build files are provided as-is and are submitted to be included with
|
||||||
|
the "Mesa 3-D Graphics Library" package as (currently) maintained by Brian
|
||||||
|
Paul. These project build files are free software; you can redistribute it
|
||||||
|
and/or modify it under the terms of the GNU Library General Public License
|
||||||
|
as published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
Karl Schultz
|
These project files are distributed in the hope that they will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public License
|
||||||
|
along with this library; if not, write to the Free Software Foundation,
|
||||||
|
Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
*** Maintenance Responsiblity and Technical Support
|
||||||
|
|
||||||
|
While these files are now part of the Mesa core distribution please do NOT
|
||||||
|
contact Mr. Paul for help with them if you encounter problems as he can't
|
||||||
|
help you (currently). I will, however, attempt my straightforward best in
|
||||||
|
assisting anyone with using these files on their system. I can NOT
|
||||||
|
guarantee instant responses owing to other responsiblities, but I do try
|
||||||
|
dang hard to answer any mail w/in 24 hours. I may be contacted at the
|
||||||
|
above email address for the forseeable future.
|
||||||
|
|
||||||
|
-Ted
|
||||||
|
mailto://tjump@tertius.com
|
||||||
|
http://www.tertius.com/tjump
|
||||||
|
|
||||||
|
*** General Information
|
||||||
|
|
||||||
|
These build files facilitate convenient building of many variants of Mesa,
|
||||||
|
both as static link libraries (including mesaglu) and as dynamic link
|
||||||
|
libraries that in some cases may be used as "drop-in" replacements for
|
||||||
|
OpenGL32.DLL on both Windows95 and Windows NT.
|
||||||
|
|
||||||
|
The construction of the Win32 command-line build files and projects has
|
||||||
|
been something of a pet project of mine, and is based upon my own
|
||||||
|
"standard" Win32 build environment as supplied by the "nmake.mif" file.
|
||||||
|
They have been tested under Windows95 OSR2, Windows NT 4.0SP3, and Windows
|
||||||
|
NT 5.0 beta 1. The libraries that they generated have been tested (via the
|
||||||
|
demo programs) in a *limited* fashion on the above three systems, including
|
||||||
|
the 3Dfx versions.
|
||||||
|
|
||||||
|
The reason I went with command-line build environment instead of the more
|
||||||
|
convenient IDE-based project files is for two reasons: 1. These appear to
|
||||||
|
have some amount of portability between versions (the nmake syntax hasn't
|
||||||
|
changed much since Microsoft C 7.0) while the IDE project files seem to
|
||||||
|
change drastically each version. and 2. These are readable with any ascii
|
||||||
|
editor and such are better self-documentation of the file relationships for
|
||||||
|
more people such that it will facilitate supporting other Win32 compilers.
|
||||||
|
|
||||||
|
While these files only deal with building for x86 targeted code it *should*
|
||||||
|
be possible to add the necessary logic to them to build for the other MSVC
|
||||||
|
supported CPU targets, I simply have no hardware to test them on nor the
|
||||||
|
alternative compilers to build with.
|
||||||
|
|
||||||
|
*** Prerequisites for use
|
||||||
|
|
||||||
|
1. You must have a 32-bit Microsoft compiler installed. I have tested
|
||||||
|
this with Visual C 5.0 (SP3) and Visual C 4.2, but with minor
|
||||||
|
(possibly no) modification to the nmake.mak and nmake.mif files this
|
||||||
|
sequence should work on Visual C 2.0 also. The workspace files
|
||||||
|
(mesalib.dsw and mesademos-*.dsw) and their included project files
|
||||||
|
(*.dsp) are specific to the DevStudio IDE - I have made no attempt at
|
||||||
|
building a VC4 IDE project set as I do not use that any more. Note
|
||||||
|
that the VC workspace files NO LONGER use NORE are dependant upon the
|
||||||
|
nmake.mak and nmake.mif files for construction of definition (*.DEF)
|
||||||
|
and resource (*.RC) files.
|
||||||
|
|
||||||
|
*** Visual C 4.x Users Warning ****
|
||||||
|
|
||||||
|
Note that early editions of VC4 do NOT have header files current enough
|
||||||
|
for use building this code base. If you are using VC4 you will either need
|
||||||
|
to get an update to version 4.2 *or* you may download the Platform SDK
|
||||||
|
directly from Microsoft's web site (www.microsoft.com) and update your
|
||||||
|
build environment that way.
|
||||||
|
|
||||||
|
*** Visual C 4.x Users Warning ****
|
||||||
|
|
||||||
|
2. You must have the PATH, INCLUDE, and LIB environment variables set
|
||||||
|
properly. With VC5 you can easily get this by executing the VCVARS32.BAT
|
||||||
|
file that was created for you upon installation. It is found in the
|
||||||
|
DevStudio\VC\BIN directory, wherever you installed DevStudio. VC4 provides
|
||||||
|
a similar batch file in it's BIN directory also.
|
||||||
|
|
||||||
|
3. (optional) If you're going to build for 3Dfx/Voodoo you will need to
|
||||||
|
have previously installed the Glide SDK version 2.3 or later, if I
|
||||||
|
recall. This may be retrieved from www.3dfx.com for no money and some
|
||||||
|
download time. ;-) These build files assume that you have the Glide SDK
|
||||||
|
added to the respective environment variables (LIB and INCLUDE).
|
||||||
|
|
||||||
|
4. (optional) If you're going to build for S3/Virge you will need the S3
|
||||||
|
Developers Toolkit which may be downloaded from www.s3.com for the price of
|
||||||
|
registering on-line and some time. NOTE: I can build the s3mesa.dll file to
|
||||||
|
completion, however the compilation of s3mesa.c currently generates a large
|
||||||
|
amount of compiler warnings and between that and the fact that I can not at
|
||||||
|
all test it I can make no claims to it's ability to execute. Again, like
|
||||||
|
the 3Dfx version before this, these build files assume you have the S3Dtk H
|
||||||
|
and LIB files in the path of their respective environment variables.
|
||||||
|
Note 2: As of Mesa3.0beta6 I have build files, both command-line and IDE,
|
||||||
|
which should be able to build the s3mesa code base if it weren't for updates
|
||||||
|
being required in the S3 DD code support (Mesa-3.0/src/s3 directory).
|
||||||
|
|
||||||
|
I advise putting any include and lib files for secondary toolkits (Glide,
|
||||||
|
S3Tk, whatever) in their respective environment variables *before* the
|
||||||
|
Microsoft-assigned default values.
|
||||||
|
|
||||||
|
*** FAQ: Frequenty Asked Questions and Other Important Information ***
|
||||||
|
|
||||||
|
- When running the 3Dfx demos under Windows NT, they crash on exit, what's
|
||||||
|
up?
|
||||||
|
|
||||||
|
This is apparently a problem in Glide itself. The workaround is to go to
|
||||||
|
your C:\WINNT\SYSTEM32 directory and rename the file FXOEM2X.DLL to
|
||||||
|
FXOEM2X.DL_ to prevent Glide from loading and initializing it upon
|
||||||
|
startup. This is known to be an issue with cards that do not have "TV
|
||||||
|
out" and is known to cause crashes on Diamond Monster II 8M and 3Dfx
|
||||||
|
Reference boards, all using 3Dfx Reference Drivers version 2.53. Other
|
||||||
|
hardware/driver combinations will also likely exhibit this behavior.
|
||||||
|
|
||||||
|
- I'm having a problem building Mesa for static library linking.
|
||||||
|
|
||||||
|
This was caused by some incomplete testing on my part, and a fix is now
|
||||||
|
available in the form of an add-on to the base Mesa 3.0 release. The
|
||||||
|
file to get is:
|
||||||
|
|
||||||
|
via FTP download from: iris.ssec.wisc.edu
|
||||||
|
you want to go here: /pub/Mesa/patches_to_3.0/
|
||||||
|
you want to get file: Mesa-3.0-w32-static-fixes.tar.gz
|
||||||
|
|
||||||
|
This required a minor addition to INCLUDE/GL for a clean solution, the
|
||||||
|
file "include/gl/mesa_wgl.h" is automatically included by
|
||||||
|
"include/gl/gl.h" when a Win32 non-DLL build is in progress to provide
|
||||||
|
prototypes for the various wgl functions.
|
||||||
|
|
||||||
|
The only remaining hitch in this setup is that the 3Dfx build is not yet
|
||||||
|
running as a static build, because of problems with conflicts in
|
||||||
|
existance of the various GDI functions like ChoosePixelFormat,
|
||||||
|
etc. *sigh*
|
||||||
|
|
||||||
|
Anyway, the "allstatic" target now works as expected and builds all
|
||||||
|
book/sample/demos programs to boot. ;^)
|
||||||
|
|
||||||
|
- How do I get fxMesa to render in a window on the desktop instead of only
|
||||||
|
full-screen?
|
||||||
|
|
||||||
|
Use the Microsoft Windows fxMesa-in-a-window hack!
|
||||||
|
|
||||||
|
Seriously, if you want fxMesaGL to render using the 3Dfx Voodoo1 or
|
||||||
|
Voodoo2 hardware into a window on the desktop then all you need to do is
|
||||||
|
set the MESA_WGL_FX environment variable to anything other than
|
||||||
|
"fullscreen" and it will render into a window. If you wish to go
|
||||||
|
fullscreen then you only need to NOT have the environment variable, or
|
||||||
|
have it set to "fullscreen". You may also switch at runtime between
|
||||||
|
fullscreen-mode and windowed by pressing ALT-ENTER on the keyboard
|
||||||
|
(unless the application using Mesa does something with those keystrokes,
|
||||||
|
of course).
|
||||||
|
|
||||||
|
As of 8/13/98 this should be running a LOT better for more people as a
|
||||||
|
low-compatability item was cleaned up which prevented it from working on
|
||||||
|
many (most?) display drivers under Windows 9x.
|
||||||
|
|
||||||
|
- I have my 3Dfx card hooked to it's own monitor and I want the output to
|
||||||
|
stay on even if I switch to another program, is this possible?
|
||||||
|
|
||||||
|
If the Glide environment variable SST_DUALHEAD is set to '1' then fxMesa
|
||||||
|
will never disable the Voodoo output on a Voodoo1 or Voodoo2 display
|
||||||
|
regardless of whether the fxMesa application is "current" or not. This
|
||||||
|
works regardless of whether it's rendering using the window hack
|
||||||
|
mentioned above or not.
|
||||||
|
|
||||||
|
- I want to run the Mesa demos on my Intel740 card using it's own OpenGL
|
||||||
|
acceleration, how do I do this?
|
||||||
|
|
||||||
|
Build GLUT standalone for use with system OpenGL and GLU drivers!
|
||||||
|
|
||||||
|
The Command-line project supports building all test/demo programs against
|
||||||
|
these drivers also! This allows you full use of GLUT on Windows using
|
||||||
|
hardware accelerated OpenGL. Wheee! This includes the "3dfx/demos"
|
||||||
|
directory of which only two programs will not run on "standard"
|
||||||
|
opengl. Note that there are a few of the sample programs which will NOT
|
||||||
|
work without Mesa as they directly call into Mesa instead of using the
|
||||||
|
extension mechanism.
|
||||||
|
|
||||||
|
*** Included programs that exhibit unfortunate or bad behavior
|
||||||
|
|
||||||
|
- demos/bounce - doesn't run on high-colors screens? It's requesting an
|
||||||
|
INDEX display from GLUT and that fails on my true-color desktop. Changing
|
||||||
|
this to _RGB let's the program work, but it doesn't display
|
||||||
|
properly. This is probably just an idiosyncracy of my machine though, as
|
||||||
|
if I test the program using GLUT for System OpenGL on my Intel740 OpenGL
|
||||||
|
accelerated machine it's just hunky-dory.
|
||||||
|
|
||||||
|
- demos/glutfx - runs, but crashes on exit (but not on my Intel740 machine)
|
||||||
|
|
||||||
|
- demos/texobj - runs, but crashes on exit if ESC is pressed. Exits cleanly
|
||||||
|
if the Close box on the window frame is pressed with the mouse. Go figure.
|
||||||
|
|
||||||
|
- book/aaindex - doesn't run, can't get pixel format, because it wants an
|
||||||
|
INDEX display maybe (but is okay on my Intel740 machine)?
|
||||||
|
|
||||||
|
- most of the book/* demos don't respond to ESC being pressed.
|
||||||
|
|
||||||
|
- 3dfx/demos/* - all demos run, however they all crash on exit. I've traced
|
||||||
|
this so far as to determine the call it's happening with. The crash comes
|
||||||
|
from within Glide during the processing of the grGlideShutdown() call, as
|
||||||
|
in invalid memory reference exception. I'm wondering if this is because
|
||||||
|
of some state or processing not being completed before the call. Dunno,
|
||||||
|
but putting grSstIdle() in just before grGlideShutdown() does NOT fix the
|
||||||
|
problem.
|
||||||
|
|
||||||
|
- 3dfx/demos/tunnel2 - does not run on my system even with SLI mode
|
||||||
|
disabled. Hmmmm, maybe I need to disconnect my Voodoo2 cards?
|
||||||
|
|
||||||
|
*** Important Notes and Changing Default values
|
||||||
|
|
||||||
|
- The optimizer settings have been manually reworked in both command line
|
||||||
|
and DevStudio IDE files to hopefully prevent possible irrational code on
|
||||||
|
the part of the code generator. Formerly, it was configured for "/Ox",
|
||||||
|
now it is configured for safer handling at a slight potential performance
|
||||||
|
cost. This may not be required for Visual Studio 6 but I can't test that
|
||||||
|
(yet).
|
||||||
|
|
||||||
|
- These files build with the code targeted for Pentium processors and
|
||||||
|
8-byte structure padding.
|
||||||
|
|
||||||
|
- The IDE-built programs seem to be "happier" in that the command line
|
||||||
|
build of the 3Dfx demo "fire" will grenade on exit (?). Otherwise pretty
|
||||||
|
much everything may be built with either interface.
|
||||||
|
|
||||||
|
- The currently configured Mesa version is 3.1, and MesaDemos version is
|
||||||
|
the same. To change this permanently you will need to edit NMAKE.MAK and
|
||||||
|
change the lines that look like this (they start o/a line 116):
|
||||||
|
|
||||||
|
# Currently, Mesa is at rev 3.1 ...
|
||||||
|
#
|
||||||
|
!IF "$(MESAVER)" == ""
|
||||||
|
MESAVER=3.1
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# used in building all of the resource files for the Mesa DLLs
|
||||||
|
#
|
||||||
|
!IF "$(MESAFILEVER)" == ""
|
||||||
|
MESAFILEVER=3,1,0,0
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
- Currently the build files are configured to be used from a Win32
|
||||||
|
directory that is included inside the main Mesa-3.1 heirarchy.
|
||||||
|
|
||||||
|
- The build files are smart enough to find the files for the core lib, glu,
|
||||||
|
glut, and the various demo programs if they are unpacked in the current
|
||||||
|
Mesa-3.1 heirarchy, like this:
|
||||||
|
|
||||||
|
\Mesa-3.1
|
||||||
|
\Mesa-3.1\src
|
||||||
|
\Mesa-3.1\src-glu
|
||||||
|
\Mesa-3.1\src-glut
|
||||||
|
\Mesa-3.1\Win32
|
||||||
|
\Mesa-3.1\samples
|
||||||
|
\Mesa-3.1\demos
|
||||||
|
\Mesa-3.1\book
|
||||||
|
\Mesa-3.1\3Dfx\demos
|
||||||
|
|
||||||
|
... should work. This arose because my initial build tests for the
|
||||||
|
demo files were done before MesaDemos 2.6 had been released.
|
||||||
|
|
||||||
|
- With the exception of the static link libraries generated by this file
|
||||||
|
set (mesagl.lib, mesaglu.lib, mesaglut.lib) all DLLs and executables are
|
||||||
|
built against the "Multithreaded DLL" runtime - this means that they
|
||||||
|
require MSVCRT.DLL or MSVCRTD.DLL in the path to execute.
|
||||||
|
|
||||||
|
** CHANGED 8/11/98 ***
|
||||||
|
|
||||||
|
Note also that the demos are all built aginst the "OpenGL32, GLU32, and
|
||||||
|
GLUT32" and as such they are fairly agnostic wrt: building against Mesa
|
||||||
|
for CPU-rendering, Mesa-for-3Dfx, Mesa-for-S3, or System OpenGL.
|
||||||
|
|
||||||
|
If you want to build them for use on your system and your display card
|
||||||
|
provides full OpenGL acceleration (Permedia, Intel740, Intergraph,
|
||||||
|
whatever) then you only need to build GLUT prior to building any of the
|
||||||
|
demo programs. For convenience, the GLUT project is included in each of
|
||||||
|
the demo projects Workspace files for the DevStudio IDE builds BUT it is
|
||||||
|
not automatically built - you still need to build it first manually.
|
||||||
|
|
||||||
|
Note that if you have GLUT already installed on your system (gl/glut.h in
|
||||||
|
yoru INCLUDE path, glut32.lib/glut32d.lib in your LIB path, and the DLL
|
||||||
|
in your PATH) then you do NOT need to build GLUT prior to the test
|
||||||
|
programs.
|
||||||
|
|
||||||
|
- The 3Dfx build of Mesa has primarily been tested with Quake 2 and it runs
|
||||||
|
(mostly) fine on my PC (take that for what you want it)...
|
||||||
|
|
||||||
|
** CHANGED 8/11/98 ***
|
||||||
|
|
||||||
|
There is still something going on that causes Glide to crash on shutdown,
|
||||||
|
when I run fxMesa under Windows NT, however it does not appear to occur
|
||||||
|
under Windows 9x on either Voodoo1 or Voodoo2 cards. *sigh*
|
||||||
|
|
||||||
|
- I can not test the S3 build as I have no machines available with Virge
|
||||||
|
based display cards.
|
||||||
|
|
||||||
|
- The multithreaded test code is *not* built as it requires pthreads and I
|
||||||
|
have as of yet spent not time trying to get that running. The latest word
|
||||||
|
that I saw WRT threading support on win32 was that they are intending to
|
||||||
|
support it natively within Win32 - so I'm waiting it out until they get
|
||||||
|
it done.
|
||||||
|
|
||||||
|
- Similarly, the 'xdemos' are not currently built because I haven't gotten
|
||||||
|
around to building the client libs for native win32 and getting it all
|
||||||
|
setup for use.
|
||||||
|
|
||||||
|
*** Output Files
|
||||||
|
|
||||||
|
All final output files (DLL/LIB) are placed in the Mesa-3.1/lib directory,
|
||||||
|
with the exception of the fxMesaGL32 build which is placed in
|
||||||
|
Mesa-3./lib/FX and the executable images which are placed in their source
|
||||||
|
directories.
|
||||||
|
|
||||||
|
To be able to execute the various test programs, you will need to copy the
|
||||||
|
requisite DLL files into the same directory as the EXE files. Note that
|
||||||
|
most of the 3Dfx/demos/* programs WILL run with the non-FX build of Mesa -
|
||||||
|
just very slowly. The two programs which are hard-linked with the FX build
|
||||||
|
and will not run without it are "glbpaltx" which uses "gl3DfxSetPaletteEXT"
|
||||||
|
directly instead of via the extensions mechanism and "tunnel2" which uses
|
||||||
|
"fxMesaSelectCurrentBoard" API for selecting between multiple 3Dfx cards
|
||||||
|
installed in one system. Likewise, "paltex" directly uses the
|
||||||
|
"glColorTableEXT" extension and thus may not run on anything except
|
||||||
|
Mesa. If these applications used the proper extension mechanism they could
|
||||||
|
then be used on more than "just" fxMesa to good effect (for example, the
|
||||||
|
rest of the "3Dfx/demos" run just peachy on the Intel740 card in my test
|
||||||
|
machine) under WinNT.
|
||||||
|
|
||||||
|
Because I'm anal about my computer and it's organization, and I like to
|
||||||
|
prevent collision between builds, each of the subprojects has their own
|
||||||
|
intermediate file directory inside .\win32\release (for example, when
|
||||||
|
building mesagl.lib all of it's intermediate files will be found in
|
||||||
|
.\win32\release\lib.mesagl). This makes it very easy to cleanup as you
|
||||||
|
only need to remove .\win32\release.
|
||||||
|
|
||||||
|
*** Okay, Enough, how do I build with this stuff already Ted!
|
||||||
|
|
||||||
|
Okay, no major calamity here. The basic way to use the project file is to
|
||||||
|
call it via NMAKE from the command line. The format is:
|
||||||
|
|
||||||
|
nmake[.exe] /f nmake.mak [options] [target]
|
||||||
|
|
||||||
|
The most likely [options] values you will use may be any combination of the
|
||||||
|
following:
|
||||||
|
|
||||||
|
DEBUG=1 or DEBUG=0
|
||||||
|
USE_CRTDLL=1 or USE_CRTDLL=0
|
||||||
|
|
||||||
|
Note that all three of these options are OFF by default.
|
||||||
|
|
||||||
|
The [target] includes but is not limited to the following (for full details
|
||||||
|
please peruse the NMAKE.MAK and NMAKE.MIF files - but be warned that
|
||||||
|
NMAKE.MIF is rather large and sometimes hard to follow):
|
||||||
|
|
||||||
|
--- convenience targets ---
|
||||||
|
|
||||||
|
all - builds everything
|
||||||
|
libfiles - builds all linking library files
|
||||||
|
progs - builds all executable images
|
||||||
|
|
||||||
|
--- library files, static and dynamic ---
|
||||||
|
|
||||||
|
mesagl - static lib build of Mesa core.
|
||||||
|
mesaglu - static lib build of MesaGLU core.
|
||||||
|
mesaglut - static lib build of Mesa GLUT core.
|
||||||
|
|
||||||
|
mesagl32 - dynamic lib build of Mesa core.
|
||||||
|
|
||||||
|
mesaglu32 - dynamic lib build of GLU core, generates
|
||||||
|
GLU32.DLL and/or GLU32d.DLL.
|
||||||
|
|
||||||
|
mesaglut32 - dynamic lib build of GLUT core, generates
|
||||||
|
GLUT32.DLL and/or GLUT32d.dll.
|
||||||
|
|
||||||
|
--- hardware accelerated mesa builds ---
|
||||||
|
|
||||||
|
fxmesagl32 - builds Mesa for use on top of the 3Dfx
|
||||||
|
Glide runtime libs
|
||||||
|
|
||||||
|
s3mesagl32 - builds mesa for use on top of the S3
|
||||||
|
'S3Tk' runtime libs.
|
||||||
|
|
||||||
|
--- executable images ---
|
||||||
|
|
||||||
|
progs.book - builds all programs in \book directory
|
||||||
|
progs.demos - builds all programs in \demos directory
|
||||||
|
progs.samples - builds all programs in \samples directory
|
||||||
|
|
||||||
|
These targets generate all of the programs in their respective
|
||||||
|
directories and link the executables against OpenGL32.DLL,
|
||||||
|
GLU32.DLL, and GLUT32.DLL (or their debug equivalents).
|
||||||
|
|
||||||
|
progs.3dfx.demos - builds all programs in \3dfx\demos directory
|
||||||
|
|
||||||
|
This target generates the 3Dfx/Demo executables, linking them
|
||||||
|
against GLUT32.DLL, GLU32.DLL, OPENGL32.DLL and are thus NOT
|
||||||
|
hard-bound to using Mesa per-se as you can simply NOT build the
|
||||||
|
Mesa core and GLU libraries.
|
||||||
|
|
||||||
|
--- Microsoft/SGI OpenGL-based GLUT and Demo program builds ----
|
||||||
|
|
||||||
|
*** IMPORTANT SAFETY TIP: If you're going to build these variants of
|
||||||
|
GLUT then DO NOT build any other target libraries in this package
|
||||||
|
first, OR from the command line run the "nmake /f nmake.mak clean"
|
||||||
|
command first! This is because generation of the GLUT for SGI
|
||||||
|
OpenGL target libraries conflicts in naming with the static build
|
||||||
|
libraries of Mesa and it's supporting GLUT build.
|
||||||
|
|
||||||
|
Currently, you may build GLUT as either GLUT32.DLL or GLUT.DLL for
|
||||||
|
use running against either Microsoft or SGI OpenGL for Window,
|
||||||
|
respectively. This allows for the general use of GLUT 3.7 on Windows
|
||||||
|
systems with fully compliant OpenGL.
|
||||||
|
|
||||||
|
You can build the GLUT DLL files either with the command line by
|
||||||
|
issuing either of these commands:
|
||||||
|
|
||||||
|
nmake /f nmake.mak glut.sysgl
|
||||||
|
|
||||||
|
<or>
|
||||||
|
|
||||||
|
nmake /f nmake.mak glut.sgigl
|
||||||
|
|
||||||
|
OR by using the DevStudio MesaLib Worksapce build the GLUT_SGIGL or
|
||||||
|
GLUT_SYSGL projects within the DevStudio IDE.
|
||||||
|
|
||||||
|
Unfortunately, the only way to build the test programs against this
|
||||||
|
build of GLUT is via the command line, and I will NOT be making
|
||||||
|
duplicate demo program projects for the IDE as it's just not worth it,
|
||||||
|
sorry.
|
||||||
|
|
||||||
|
To build the test programs against either MS or SGI OpenGL, you do so
|
||||||
|
via either of these two commands:
|
||||||
|
|
||||||
|
nmake /f nmake.mak progs.sysgl
|
||||||
|
|
||||||
|
<or>
|
||||||
|
|
||||||
|
nmake /f nmake.mak progs.sgigl
|
||||||
|
|
||||||
|
To use the GLUT-for-system-OpenGL in your own programs, you need to do
|
||||||
|
three things by way of preparation, after building GLUT of course:
|
||||||
|
|
||||||
|
1. Copy include\gl\glut.h to somewhere in your %INCLUDE% path, one
|
||||||
|
likely candidate location would be in your
|
||||||
|
"DevStudio\VC\INCLUDE\GL" directory.
|
||||||
|
|
||||||
|
2. Copy the linking libraries to somewhere in your %LIB% path, one
|
||||||
|
likely candidate location would be in your "DevStudio\VC\LIB"
|
||||||
|
directory. The linking libraries you need to copy are as
|
||||||
|
follows:
|
||||||
|
|
||||||
|
.\Release\GLUT32.LIB
|
||||||
|
.\Release\GLUT.LIB
|
||||||
|
.\Debug\GLUT32.LIB
|
||||||
|
.\Debug\GLUT.LIB
|
||||||
|
|
||||||
|
3. Copy the runtime libraries to somewhere in your %PATH%, one
|
||||||
|
likely candidate location would be in WINDOWS\SYSTEM. the files
|
||||||
|
that you should copy are as follows:
|
||||||
|
|
||||||
|
.\Release\GLUT32.DLL
|
||||||
|
.\Release\GLUT32.PDB
|
||||||
|
.\Release\GLUT.DLL
|
||||||
|
.\Release\GLUT.PDB
|
||||||
|
.\Debug\GLUT32d.DLL
|
||||||
|
.\Debug\GLUT32d.PDB
|
||||||
|
.\Debug\GLUTd.DLL
|
||||||
|
.\Debug\GLUTd.PDB
|
||||||
|
|
||||||
|
Some examples are in order ...
|
||||||
|
|
||||||
|
... build all dynamic-link libs using MSVCRT.DLL for C runtime:
|
||||||
|
|
||||||
|
nmake /f nmake.mak USE_CRTDLL=1 alldynamic
|
||||||
|
|
||||||
|
... To build all library variants and all test and demonstration
|
||||||
|
programs with the default settings you do this:
|
||||||
|
|
||||||
|
nmake /f nmake.mak all
|
||||||
|
|
||||||
|
... to build all static link libs and nothing else you do this:
|
||||||
|
|
||||||
|
nmake /f nmake.mak allstatic
|
||||||
|
|
||||||
|
... to build all non-accelerated dynamic link libs you do this:
|
||||||
|
|
||||||
|
nmake /f nmake.mak alldynamic
|
||||||
|
|
||||||
|
... to build all 3Dfx targeted dynamic link libs you do this:
|
||||||
|
|
||||||
|
nmake /f nmake.mak allaccel
|
||||||
|
|
||||||
|
... to build all S3 Virge targetd dynamic link libs you do this:
|
||||||
|
|
||||||
|
nmake /f nmake.mak alls3
|
||||||
|
|
||||||
|
... to build all libraries, static and dynamic, in all versions
|
||||||
|
you do this:
|
||||||
|
|
||||||
|
nmake /f nmake.mak libfiles
|
||||||
|
|
||||||
|
... to subsequently build all demo and test programs you do this:
|
||||||
|
|
||||||
|
nmake /f nmake.mak progs
|
||||||
|
|
||||||
|
... to cleanup all intermediate files you do this:
|
||||||
|
|
||||||
|
nmake /f clean
|
||||||
|
|
||||||
|
You get the picture. (I hope) ;^) You may also specify specify
|
||||||
|
single targets in a convenient fashion. The rule is simple, any of the
|
||||||
|
above named lib files, static or dynamic, may be built by providing it's
|
||||||
|
name on the command line as the target. Examples:
|
||||||
|
|
||||||
|
... to build only Mesa as OpenGL32.DLL ...
|
||||||
|
|
||||||
|
nmake /f nmake.mak opengl32
|
||||||
|
|
||||||
|
... to build only Mesa on top of the 3Dfx Glide API ...
|
||||||
|
|
||||||
|
nmake /f nmake.mak fxMesaGL32
|
||||||
|
<or>
|
||||||
|
nmake /f nmake.mak fxMesaGL
|
||||||
|
|
||||||
|
... to build only Mesa on top of the S3 Toolkit ...
|
||||||
|
|
||||||
|
nmake /f nmake.mak s3MesaGL32
|
||||||
|
<or>
|
||||||
|
nmake /f nmake.mak s3mesaGL
|
||||||
|
|
||||||
|
*** Revision history for ./win32 project files
|
||||||
|
|
||||||
|
1/18/98 - initial cut submitted and included with core mesa
|
||||||
|
2/5/98 - fixed internal dependency within nmake.mif upon there being
|
||||||
|
a $(DEVDIR) variable to make some temporary batch files
|
||||||
|
dependant upon (thanks to Keven T. McDonnell for finding
|
||||||
|
that there was this particular bug). I also updated the
|
||||||
|
build files for 2.6beta6.
|
||||||
|
2/8/98 - added DevStudio workspace and project files for all lib
|
||||||
|
files and some test programs. Updated readme.win32.
|
||||||
|
6/25/98 - initial revision for Mesa 3.0, does not include IDE files,
|
||||||
|
not everything is running. *sigh*
|
||||||
|
7/20/98 - Mesa 3.0beta6 rev of all build files, all libs built and
|
||||||
|
minimally tested, all demo programs built and minimally
|
||||||
|
tested to within limits of my PC. ;^) Eveything looks
|
||||||
|
MUCH better now ...
|
||||||
|
7/30/98 - Minor updates/edits based upon feedback from
|
||||||
|
Eero Pajarre <epajarre@koti.tpo.fi>. These updates include a fix
|
||||||
|
to the Mesa-on-3Dfx build such that Quake-II now runs almost
|
||||||
|
properly on my system. It runs, just *very* slowly and with *no*
|
||||||
|
textures. Hmmm. Doesn't make any difference whether Quake is set
|
||||||
|
to use 8-bit textures or not.
|
||||||
|
8/13/98 - Lots of build cleanups, minor bug fixes in fxwgl.c, and
|
||||||
|
compatability fix in fxapi.c for in-window rendering using 3Dfx
|
||||||
|
hardware.
|
||||||
|
8/26/98 - Final revisions for Mesa 3 release checked
|
||||||
|
9/22/98 - Fixed static builds for all but fxMesaGL32 and s3MesaGL32 targets
|
||||||
|
9/29/98 - Reorganized FAQ information and added Added faq entry about Glide
|
||||||
|
bug under NT (crash on exit) and a workaround.
|
||||||
|
11/21/98 - Updated files for Mesa 3.1 beta 1
|
||||||
|
Updated fxMesa window-hack code
|
||||||
|
Updated fxMesa resolution support to handle 1600x1200 & 1280x1024
|
||||||
|
7/9/99 - Rev'd for Mesa 3.1 beta 2
|
||||||
@@ -1,146 +0,0 @@
|
|||||||
|
|
||||||
WindML Driver for Mesa 4.0
|
|
||||||
|
|
||||||
|
|
||||||
Requirements
|
|
||||||
------------
|
|
||||||
|
|
||||||
Tornado 2 + WindML, Cumulative Patchs are recommended.
|
|
||||||
|
|
||||||
I suppose you have a valid WindML installation. Double buffer hardware
|
|
||||||
gives better performance than double buffer software so if you can
|
|
||||||
compile your WindML driver with this option, just do it. I/O
|
|
||||||
redirection is adviced in target server.
|
|
||||||
|
|
||||||
|
|
||||||
Tested on
|
|
||||||
---------
|
|
||||||
|
|
||||||
During the development, my main target was a CoolMonster:
|
|
||||||
- Video card: CT69000
|
|
||||||
- CPU: PENTIUM 266MHz
|
|
||||||
|
|
||||||
and my host a Windows NT + Tornado 2.
|
|
||||||
|
|
||||||
|
|
||||||
Installation
|
|
||||||
------------
|
|
||||||
|
|
||||||
1. Mesa sources must be in root directory (C:\)
|
|
||||||
|
|
||||||
2. Add the following line to your torVars.bat:
|
|
||||||
set MESA_BASE=C:\Mesa
|
|
||||||
|
|
||||||
OR copy the new torVars.bat in your bin path:
|
|
||||||
c:/Mesa/src/ugl/tornado/torVars.sample ->
|
|
||||||
/mnt/nt/Tornado/host/x86-win32/bin/torVars (for example)
|
|
||||||
|
|
||||||
3. In a command prompt:
|
|
||||||
$ torVars
|
|
||||||
$ cd c:\Mesa
|
|
||||||
$ make -f Makefile.ugl CPU=PENTIUM
|
|
||||||
|
|
||||||
Take a long while...
|
|
||||||
|
|
||||||
5. Include all the files from ugldemos folder to build some downloadable
|
|
||||||
application modules
|
|
||||||
|
|
||||||
4. Download UGL/Mesa object files on target
|
|
||||||
|
|
||||||
For example via the WindShell:
|
|
||||||
ld < c:\Tornado\target\lib\objMesaGL.o
|
|
||||||
ld < c:\Tornado\target\lib\objMesaUGL.o
|
|
||||||
ld < c:\Tornado\target\lib\objMesaGLU.o
|
|
||||||
ld < c:\Tornado\target\lib\objGLUTshapes.o
|
|
||||||
ld < c:\Tornado\target\lib\objMesaOS.o
|
|
||||||
|
|
||||||
You can put the previous lines in a file and use:
|
|
||||||
< filename
|
|
||||||
|
|
||||||
6. Download the application modules.
|
|
||||||
|
|
||||||
7. In WindShell, run:
|
|
||||||
-> uglalldemos
|
|
||||||
|
|
||||||
During the show some messages will appear, it provides some useful
|
|
||||||
information on key management.
|
|
||||||
|
|
||||||
|
|
||||||
Coding
|
|
||||||
------
|
|
||||||
|
|
||||||
Sample Usage:
|
|
||||||
|
|
||||||
In addition to the usual ugl calls to initialize UGL, (may be find an
|
|
||||||
input driver), you must do the following to use the UGL/Mesa interface:
|
|
||||||
|
|
||||||
1. Call uglMesaCreateContext() to create a UGL/Mesa rendering context,
|
|
||||||
given the display format.
|
|
||||||
|
|
||||||
2. Call uglMesaMakeCurrent() to bind the UGL/Mesa buffers to an
|
|
||||||
UGL/Mesa Context and to make the context the current one.
|
|
||||||
|
|
||||||
3. Make gl* calls to render your graphics.
|
|
||||||
|
|
||||||
4. Use uglMesaSwapBuffers() when double buffering to swap front/back buffers.
|
|
||||||
|
|
||||||
5. Before the UGL is destroyed, call MesaDestroyContext().
|
|
||||||
|
|
||||||
6. Before exiting, call if required uglEventQDestroy and then
|
|
||||||
uglDeinitialize();
|
|
||||||
|
|
||||||
Limitations
|
|
||||||
-----------
|
|
||||||
|
|
||||||
I found the following limitations in my driver :
|
|
||||||
- Color Indexed management is only in 8 bits
|
|
||||||
- It's possible to mix UGL/OpenGL application with a software
|
|
||||||
double buffer
|
|
||||||
|
|
||||||
Modifications
|
|
||||||
------------
|
|
||||||
|
|
||||||
New files in Mesa:
|
|
||||||
- Makefile.ugl
|
|
||||||
- rules.windmlmesa
|
|
||||||
- docs/README.UGL
|
|
||||||
- include/GL/uglmesa.h
|
|
||||||
- si-glu/Makefile.ugl
|
|
||||||
- src/Makefile.ugl
|
|
||||||
- src/ugl/torGLUTShapesInit.c
|
|
||||||
- src/ugl/torMesaUGLInit.c
|
|
||||||
- src/ugl/ugl_api.c
|
|
||||||
- src/ugl/ugl_dd.c
|
|
||||||
- src/ugl/ugl_glutshapes.c
|
|
||||||
- src/ugl/ugl_line.c
|
|
||||||
- src/ugl/ugl_span.c
|
|
||||||
- src/ugl/ugl_tri.c
|
|
||||||
- src/ugl/uglmesaP.h
|
|
||||||
- ugldemos/*
|
|
||||||
|
|
||||||
Modified files in Tornado 2.0:
|
|
||||||
- c:\Tornado\host\x86-win32\bin\torVars.bat
|
|
||||||
rem Command line build environments
|
|
||||||
set WIND_HOST_TYPE=x86-win32
|
|
||||||
set WIND_BASE=C:\Tornado
|
|
||||||
set MESA_BASE=C:\Mesa
|
|
||||||
set PATH=%WIND_BASE%\host\%WIND_HOST_TYPE%\bin;%PATH%
|
|
||||||
- c:\Tornado\target\config\comps\VxWorks\01uglmesa.cdf
|
|
||||||
- c:\Tornado\target\h\GL\*
|
|
||||||
|
|
||||||
Todo
|
|
||||||
----
|
|
||||||
- GCC 2.96, ASM compilation
|
|
||||||
|
|
||||||
Thanks to:
|
|
||||||
----------
|
|
||||||
|
|
||||||
Precision Insight team for their great job around Mesa, XFree, and DRI.
|
|
||||||
Wind River Systems to take me as an intern.
|
|
||||||
|
|
||||||
|
|
||||||
Stephane Raimbault
|
|
||||||
<stephane.raimbault@windriver.com>
|
|
||||||
<stephane.raimbault@deesse.univ-lemans.fr>
|
|
||||||
|
|
||||||
July 24, 2001
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
Mesa 4.0 Unix/X11 Information
|
Mesa 3.2 Unix/X11 Information
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ There are two ways to compile Mesa on Unix/X11 systems:
|
|||||||
|
|
||||||
|
|
||||||
The top-level makefile will execute the makefiles in a number of sub-
|
The top-level makefile will execute the makefiles in a number of sub-
|
||||||
directories. When finished, the Mesa libraries will be in the Mesa-4.0/lib/
|
directories. When finished, the Mesa libraries will be in the Mesa-3.2/lib/
|
||||||
directory. A few GLUT demos in the demos/ directory should be ready to run.
|
directory. A few GLUT demos in the demos/ directory should be ready to run.
|
||||||
|
|
||||||
If you also downloaded and unpacked the demos there should be executables
|
If you also downloaded and unpacked the demos there should be executables
|
||||||
@@ -323,4 +323,4 @@ Summary of X-related environment variables:
|
|||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
$Id: README.X11,v 3.8 2001/09/23 16:10:02 brianp Exp $
|
$Id: README.X11,v 3.3.2.4 2000/04/04 15:13:41 brianp Exp $
|
||||||
|
|||||||
@@ -143,4 +143,4 @@ code). Anyone want to help?
|
|||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
$Id: RELNOTES-3.1,v 1.2 2000/04/07 17:08:06 brianp Exp $
|
$Id: RELNOTES-3.1,v 1.1.2.1 2000/02/22 17:56:56 brianp Exp $
|
||||||
|
|||||||
@@ -9,4 +9,4 @@ have been added. For a list of bug fixes please read the VERSIONS file.
|
|||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
$Id: RELNOTES-3.2,v 1.2 2000/04/07 17:08:06 brianp Exp $
|
$Id: RELNOTES-3.2,v 1.1.2.1 2000/04/06 02:34:31 brianp Exp $
|
||||||
|
|||||||
@@ -29,4 +29,4 @@ GLU library.
|
|||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
$Id: RELNOTES-3.2.1,v 1.2 2000/07/21 16:32:33 brianp Exp $
|
$Id: RELNOTES-3.2.1,v 1.1.2.3 2000/07/19 14:59:33 brianp Exp $
|
||||||
|
|||||||
@@ -1,271 +0,0 @@
|
|||||||
|
|
||||||
Mesa 3.3 release notes
|
|
||||||
|
|
||||||
July 21, 2000
|
|
||||||
|
|
||||||
PLEASE READ!!!!
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
------------
|
|
||||||
|
|
||||||
Mesa uses an even/odd version number scheme like the Linux kernel.
|
|
||||||
Odd numbered versions (such as 3.3) designate new developmental releases.
|
|
||||||
Even numbered versions (such as 3.2.1) designate stable releases.
|
|
||||||
|
|
||||||
Mesa 3.3 has a undergone many internal changes since version 3.2
|
|
||||||
and features a lot of new extensions. 3.3 is expected to be pretty
|
|
||||||
stable, but perhaps not as stable as 3.2 which has been used by
|
|
||||||
thousands of users over the past months.
|
|
||||||
|
|
||||||
Everyone is encouraged to try Mesa 3.3. Bugs should be reported to
|
|
||||||
the Mesa bug database on www.sourceforge.net.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Header file / GLenum changes
|
|
||||||
----------------------------
|
|
||||||
|
|
||||||
The gl.h and glu.h headers now use #defines to define all GL_* tokens
|
|
||||||
instead of C-language enums. This change improves Mesa/OpenGL
|
|
||||||
interoperability.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
New API dispatch code
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
The core Mesa gl* functions are now implemented with a new dispatch
|
|
||||||
(jump table) which will allow simultaneous direct/indirect rendering.
|
|
||||||
|
|
||||||
The code is found in the glapi*.[ch] files.
|
|
||||||
|
|
||||||
Of interest: the actual "glFooBar" functions are generated with
|
|
||||||
templatized code defined in glapitemp.h and included by glapi.c
|
|
||||||
The glapitemp.h template should be reusable for all sorts of OpenGL
|
|
||||||
projects.
|
|
||||||
|
|
||||||
The new dispatch code has also optimized with x86 assembly code.
|
|
||||||
This optimization eliminates copying the function arguments during
|
|
||||||
dispatch.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
New thread support
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Thread support in Mesa has been rewritten. The glthread.[ch] files
|
|
||||||
replace mthreads.[ch]. Thread safety is always enabled (on platforms
|
|
||||||
which support threads, that is). There is virtually no performance
|
|
||||||
penalty for typical single-thread applications. See the glapi.c
|
|
||||||
file for details.
|
|
||||||
|
|
||||||
The Xlib driver (XMesa) is now thread-safe as well. Be sure to
|
|
||||||
call XInitThreads() in your app first. See the xdemos/glthreads.c
|
|
||||||
demo for an example.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Make configuration changes
|
|
||||||
--------------------------
|
|
||||||
|
|
||||||
If you use the old-style (non GNU automake) method to build Mesa note
|
|
||||||
that several of the configuration names have changed:
|
|
||||||
|
|
||||||
Old name New name
|
|
||||||
------------- ----------------
|
|
||||||
linux-elf linux
|
|
||||||
linux linux-static
|
|
||||||
linux-386-elf linux-386
|
|
||||||
linux-386 linux-386-static
|
|
||||||
etc.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
New extensions
|
|
||||||
--------------
|
|
||||||
|
|
||||||
GL_ARB_transpose_matrix
|
|
||||||
Adds glLoadTransposeMatrixARB() and glMultTransposeMatrixARB()
|
|
||||||
functions.
|
|
||||||
|
|
||||||
GL_ARB_texture_cube_map
|
|
||||||
For cube-based reflection mapping.
|
|
||||||
|
|
||||||
GL_EXT_texture_add_env
|
|
||||||
Adds GL_ADD texture environment mode.
|
|
||||||
See http://www.berkelium.com/OpenGL/EXT/texture_env_add.txt
|
|
||||||
|
|
||||||
GL_EXT_texture_lod_bias
|
|
||||||
Allows mipmapped texture blurring and sharpening.
|
|
||||||
|
|
||||||
GLX_EXT_visual_rating extension
|
|
||||||
This extension has no effect in stand-alone Mesa (used for DRI).
|
|
||||||
|
|
||||||
GL_HP_occlusion_test
|
|
||||||
Used for bounding box occlusion testing (see demos/occlude.c).
|
|
||||||
|
|
||||||
GL_SGIX_pixel_texture / GL_SGIS_pixel_texture
|
|
||||||
Lets glDraw/CopyPixels draw a texture coordinate image.
|
|
||||||
|
|
||||||
GL_SGI_color_matrix
|
|
||||||
Adds a color matrix and another set of scale and bias parameters
|
|
||||||
to the glDraw/CopyPixels paths.
|
|
||||||
|
|
||||||
GL_SGI_color_table
|
|
||||||
Adds additional color tables to the glDraw/Read/CopyPixels paths.
|
|
||||||
|
|
||||||
GL_EXT_histogram
|
|
||||||
Compute histograms for glDraw/Read/CopyPixels.
|
|
||||||
|
|
||||||
GL_EXT_blend_func_separate
|
|
||||||
This is the same as GL_INGR_blend_func_separate.
|
|
||||||
|
|
||||||
GL_ARB_texture_cube_mapping
|
|
||||||
6-face cube mapping, nicer than sphere mapping
|
|
||||||
|
|
||||||
GL_EXT_texture_env_combine
|
|
||||||
For advanced texture environment effects.
|
|
||||||
|
|
||||||
|
|
||||||
Documentation for all these functions can be found at
|
|
||||||
http://oss.sgi.com/projects/ogl-sample/registry/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
GLX_SGI_make_current_read functionality
|
|
||||||
---------------------------------------
|
|
||||||
|
|
||||||
The functionality of this extension is needed for GLX 1.3 (and required
|
|
||||||
for the Linux/OpenGL standards base).
|
|
||||||
|
|
||||||
Implementing this function required a **DEVICE DRIVER CHANGE**.
|
|
||||||
The old SetBuffer() function has been replaced by SetReadBuffer() and
|
|
||||||
SetDrawBuffer(). All device drivers will have to be updated because
|
|
||||||
of this change.
|
|
||||||
|
|
||||||
The new function, glXMakeContextCurrent(), in GLX 1.3 now works in Mesa.
|
|
||||||
The xdemos/wincopy.c program demonstrates it.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Image-related code changes
|
|
||||||
--------------------------
|
|
||||||
|
|
||||||
The imaging path code used by glDrawPixels, glTexImage[123]D,
|
|
||||||
glTexSubImage[123], etc has been rewritten. It's now faster,
|
|
||||||
uses less memory and has several bug fixes. This work was
|
|
||||||
actually started in Mesa 3.1 with the glTexImage paths but has now
|
|
||||||
been carried over to glDrawPixels as well.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Device driver interface changes
|
|
||||||
-------------------------------
|
|
||||||
|
|
||||||
Added new functions for hardware stencil buffer support:
|
|
||||||
WriteStencilSpan
|
|
||||||
ReadStencilSpan
|
|
||||||
WriteStencilPixels
|
|
||||||
ReadStencilPixels
|
|
||||||
|
|
||||||
|
|
||||||
Removed old depth buffer functions:
|
|
||||||
AllocDepthBuffer
|
|
||||||
DepthTestSpan
|
|
||||||
DepthTestPixels
|
|
||||||
ReadDepthSpanFloat
|
|
||||||
ReadDepthSpanInt
|
|
||||||
|
|
||||||
|
|
||||||
Added new depth buffer functions:
|
|
||||||
WriteDepthSpan
|
|
||||||
ReadDepthSpan
|
|
||||||
WriteDepthPixels
|
|
||||||
ReadDepthPixels
|
|
||||||
|
|
||||||
These functions always read/write 32-bit GLuints. This will allow
|
|
||||||
drivers to have anywhere from 0 to 32-bit Z buffers without
|
|
||||||
recompiling for 16 vs 32 bits as was previously needed.
|
|
||||||
|
|
||||||
|
|
||||||
New texture image functions
|
|
||||||
The entire interface for texture image specification has been updated.
|
|
||||||
With the new functions, it's optional for Mesa to keep an internal copy
|
|
||||||
of all textures. Texture download should be a lot faster when the extra
|
|
||||||
copy isn't made.
|
|
||||||
|
|
||||||
Misc changes
|
|
||||||
TexEnv now takes a target argument
|
|
||||||
Removed UseGlobalTexturePalette (use Enable function instead)
|
|
||||||
|
|
||||||
|
|
||||||
Also added
|
|
||||||
ReadPixels
|
|
||||||
CopyPixels
|
|
||||||
|
|
||||||
|
|
||||||
The SetBufffer function has been replaced by SetDrawBuffer and
|
|
||||||
SetReadBuffer functions. This lets core Mesa independently
|
|
||||||
specify which buffer is to be used for reading and which for
|
|
||||||
drawing.
|
|
||||||
|
|
||||||
The Clear function's mask parameter has changed. Instead of
|
|
||||||
mask being the flags specified by the user to glClear, the
|
|
||||||
mask is now a bitmask of the DD_*_BIT flags in dd.h. Now
|
|
||||||
multiple color buffers can be specified for clearing (ala
|
|
||||||
glDrawBuffers). The driver's Clear function must also
|
|
||||||
check the glColorMask glIndexMask, and glStencilMask settings
|
|
||||||
and do the right thing. See the X/Mesa, OS/Mesa, or FX/Mesa
|
|
||||||
drivers for examples.
|
|
||||||
|
|
||||||
|
|
||||||
The depth buffer changes shouldn't be hard to make for existing
|
|
||||||
drivers. In fact, it should simply the code. Be careful with
|
|
||||||
the depthBits value passed to gl_create_context(). 1 is a bad
|
|
||||||
value! It should normally be 0, 16, 24, or 32.
|
|
||||||
|
|
||||||
|
|
||||||
gl_create_framebuffer() takes new arguments which explicitly tell
|
|
||||||
core Mesa which ancillary buffers (depth, stencil, accum, alpha)
|
|
||||||
should be implemented in software. Mesa hardware drivers should
|
|
||||||
carefully set these flags depending on which buffers are in the
|
|
||||||
graphics card.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Internal constants
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Point and line size range and granularity limits are now stored
|
|
||||||
in the gl_constants struct, which is the Const member of GLcontext.
|
|
||||||
The limits are initialized from values in config.h but may be
|
|
||||||
overridden by device drivers to reflect the limits of that driver's
|
|
||||||
hardware.
|
|
||||||
|
|
||||||
Also added constants for NumAuxBuffers and SubPixelBits.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
OpenGL Conformance
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Mesa now passes all the OpenGL 1.1 conformance tests, except for
|
|
||||||
antialiased lines. AA lines fail on some, but not all, the tests.
|
|
||||||
In order to fix the remaining failures, a new AA line algorithm will
|
|
||||||
be needed (which computes coverage values for end-point fragments).
|
|
||||||
This will be done for Mesa 3.5/3.6.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
OpenGL 1.2 GL_ARB_imaging subset
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
Mesa 3.3 implements all the features of GL_ARB_imaging except for
|
|
||||||
image convolution. This will (hopefully) be done for Mesa 3.5/3.6.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
|
||||||
$Id: RELNOTES-3.3,v 1.8 2000/07/21 16:26:41 brianp Exp $
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
|
|
||||||
Mesa 3.4 release notes
|
|
||||||
|
|
||||||
November 3, 2000
|
|
||||||
|
|
||||||
PLEASE READ!!!!
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
------------
|
|
||||||
|
|
||||||
Mesa uses an even/odd version number scheme like the Linux kernel.
|
|
||||||
Odd numbered versions (such as 3.3) designate new developmental releases.
|
|
||||||
Even numbered versions (such as 3.4) designate stable releases.
|
|
||||||
|
|
||||||
Mesa 3.4 simply fixes bugs found in the Mesa 3.3 release. For details,
|
|
||||||
see the VERSIONS file.
|
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
|
||||||
$Id: RELNOTES-3.4,v 1.2 2002/03/23 02:37:17 brianp Exp $
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
|
|
||||||
Mesa 3.4.1 release notes
|
|
||||||
|
|
||||||
February 9, 2001
|
|
||||||
|
|
||||||
PLEASE READ!!!!
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
------------
|
|
||||||
|
|
||||||
Mesa uses an even/odd version number scheme like the Linux kernel.
|
|
||||||
Odd numbered versions (such as 3.3) designate new developmental releases.
|
|
||||||
Even numbered versions (such as 3.4) designate stable releases.
|
|
||||||
|
|
||||||
Mesa 3.4.1 is a maintenance release that simply fixes bugs found since
|
|
||||||
the Mesa 3.4 release. For details, see the VERSIONS file.
|
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
|
||||||
$Id: RELNOTES-3.4.1,v 1.2 2001/05/23 14:45:01 brianp Exp $
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
|
|
||||||
Mesa 3.4.2 release notes
|
|
||||||
|
|
||||||
May 17, 2001
|
|
||||||
|
|
||||||
PLEASE READ!!!!
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
------------
|
|
||||||
|
|
||||||
Mesa uses an even/odd version number scheme like the Linux kernel.
|
|
||||||
Odd numbered versions (such as 3.3) designate new developmental releases.
|
|
||||||
Even numbered versions (such as 3.4) designate stable releases.
|
|
||||||
|
|
||||||
Mesa 3.4.2 is a maintenance release that simply fixes bugs found since
|
|
||||||
the Mesa 3.4.1 release. For details, see the VERSIONS file.
|
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
|
||||||
$Id: RELNOTES-3.4.2,v 1.2 2001/05/23 14:45:01 brianp Exp $
|
|
||||||
@@ -1,228 +0,0 @@
|
|||||||
|
|
||||||
Mesa 3.5 release notes
|
|
||||||
|
|
||||||
June 21, 2001
|
|
||||||
|
|
||||||
PLEASE READ!!!!
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
------------
|
|
||||||
|
|
||||||
Mesa uses an even/odd version number scheme like the Linux kernel.
|
|
||||||
Odd numbered versions (such as 3.5) designate new developmental releases.
|
|
||||||
Even numbered versions (such as 3.4) designate stable releases.
|
|
||||||
|
|
||||||
The biggest change in Mesa 3.5 is a complete overhaul of the source
|
|
||||||
code in order to make it more modular. This was driven by the DRI
|
|
||||||
hardware drivers. It simplifies the DRI drivers and opens the door
|
|
||||||
to hardware transform/clip/lighting (TCL). Keith Whitwell can take
|
|
||||||
the credit for that.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Driver Support
|
|
||||||
--------------
|
|
||||||
|
|
||||||
The device driver interface in Mesa 3.5 has changed a lot since Mesa 3.4
|
|
||||||
Not all of the older Mesa drivers have been updated. Here's the status:
|
|
||||||
|
|
||||||
Driver Status
|
|
||||||
---------------------- -----------
|
|
||||||
XMesa (Xlib) updated
|
|
||||||
OSMesa (off-screen) updated
|
|
||||||
FX (3dfx Voodoo1/2) updated
|
|
||||||
SVGA updated
|
|
||||||
GGI not updated
|
|
||||||
Windows/Win32 not updated
|
|
||||||
DOS/DJGPP not updated
|
|
||||||
BeOS not updated
|
|
||||||
Allegro not updated
|
|
||||||
D3D not updated
|
|
||||||
DOS not updated
|
|
||||||
|
|
||||||
We're looking for volunteers to update the remaining drivers. Please
|
|
||||||
post to the Mesa3d-dev mailing list if you can help.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
GLU 1.3
|
|
||||||
-------
|
|
||||||
|
|
||||||
Mesa 3.5 includes the SGI Sample Implementation (SI) GLU library.
|
|
||||||
This version of GLU supports the GLU 1.3 specification. The old
|
|
||||||
Mesa GLU library implemented the 1.1 specification. The SI GLU
|
|
||||||
library should work much better.
|
|
||||||
|
|
||||||
You'll need a C++ compiler to compile the SI GLU library. This may
|
|
||||||
be a problem on some systems.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
New Extensions
|
|
||||||
--------------
|
|
||||||
|
|
||||||
GL_EXT_convolution
|
|
||||||
Adds image convolution to glRead/Copy/DrawPixels/TexImage.
|
|
||||||
|
|
||||||
GL_ARB_imaging
|
|
||||||
This is the optional imaging subset of OpenGL 1.2.
|
|
||||||
It's the GL_EXT_convolution, GL_HP_convolution_border_modes,
|
|
||||||
GL_EXT_histogram, GL_EXT_color_table, GL_EXT_color_subtable
|
|
||||||
GL_EXT_blend_color, GL_EXT_blend_minmax, GL_EXT_blend_subtract
|
|
||||||
and GL_SGI_color_matrix extensions all rolled together.
|
|
||||||
This is supported in all software renderers but not in all
|
|
||||||
hardware drivers (3dfx for example).
|
|
||||||
|
|
||||||
GL_ARB_texture_compression
|
|
||||||
This is supported in Mesa but only used by the 3dfx DRI drivers
|
|
||||||
for Voodoo4 and later.
|
|
||||||
|
|
||||||
GL_ARB_texture_env_add
|
|
||||||
This is identical to GL_EXT_texture_env_add.
|
|
||||||
|
|
||||||
GL_NV_blend_square
|
|
||||||
Adds extra blend source and dest factors which allow squaring
|
|
||||||
of color values.
|
|
||||||
|
|
||||||
GL_EXT_fog_coord
|
|
||||||
Allows specification of a per-vertex fog coordinate instead of
|
|
||||||
having fog always computed from the eye distance.
|
|
||||||
|
|
||||||
GL_EXT_secondary_color
|
|
||||||
Allows specifying the secondary (specular) color for each vertex
|
|
||||||
instead of getting it only from lighting in GL_SEPARATE_SPECULAR_COLOR
|
|
||||||
mode.
|
|
||||||
|
|
||||||
GL_ARB_texture_env_combine
|
|
||||||
Basically the same as GL_EXT_texture_env_combine
|
|
||||||
|
|
||||||
GL_ARB_texture_env_add extension
|
|
||||||
Texture addition mode.
|
|
||||||
|
|
||||||
GL_ARB_texture_env_dot3 extension
|
|
||||||
Dot product texture environment.
|
|
||||||
|
|
||||||
GL_ARB_texture_border_clamp
|
|
||||||
Adds GL_CLAMP_TO_BORDER_ARB texture wrap mode
|
|
||||||
|
|
||||||
GL_SGIX_depth_texture, GL_SGIX_shadow and GL_SGIX_shadow_ambient
|
|
||||||
Implements a shadow casting algorithm based on depth map textures
|
|
||||||
|
|
||||||
GL_SGIS_generate_mipmap
|
|
||||||
Automatically generate lower mipmap images whenever the base mipmap
|
|
||||||
image is changed with glTexImage, glCopyTexImage, etc.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
libOSMesa.so
|
|
||||||
------------
|
|
||||||
|
|
||||||
libOSMesa.so is a new library which contains the OSMesa interface for
|
|
||||||
off-screen rendering. Apps which need the OSMesa interface should link
|
|
||||||
with both -lOSMesa and -lGL. This change was made so that stand-alone
|
|
||||||
Mesa works the same way as XFree86/DRI's libGL.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Device Driver Changes / Core Mesa Changes
|
|
||||||
-----------------------------------------
|
|
||||||
|
|
||||||
The ctx->Driver.LogicOp() function has been removed. It used to
|
|
||||||
be called during state update in order to determine if the driver
|
|
||||||
could do glLogicOp() operations, and if not, set the SWLogicOpEnabled
|
|
||||||
flag. Drivers should instead examine the LogicOp state themselves
|
|
||||||
and choose specialized point, line, and triangle functions appropriately,
|
|
||||||
or fall back to software rendering. The Xlib driver was the only driver
|
|
||||||
to use this function. And since the Xlib driver no longer draws
|
|
||||||
points, lines or triangles using Xlib, the LogicOp function isn't needed.
|
|
||||||
|
|
||||||
The ctx->Driver.Dither() function has been removed. Drivers should
|
|
||||||
detect dither enable/disable via ctx->Driver.Enable() instead.
|
|
||||||
|
|
||||||
The ctx->Driver.IndexMask() and ctx->Driver.ColorMask() functions
|
|
||||||
are now just called from glIndexMask and glColorMask like the other
|
|
||||||
GL state-changing functions. They are no longer called from inside
|
|
||||||
gl_update_state(). Also, they now return void. The change was made
|
|
||||||
mostly for sake of uniformity.
|
|
||||||
|
|
||||||
The NEW_DRVSTATE[0123] flags have been removed. They weren't being used
|
|
||||||
and are obsolete w.r.t. the way state updates are done in DRI drivers.
|
|
||||||
|
|
||||||
|
|
||||||
Removed obsolete gl_create_visual() and gl_destroy_visual().
|
|
||||||
|
|
||||||
Renamed functions (new namespace):
|
|
||||||
|
|
||||||
old new
|
|
||||||
gl_create_framebuffer _mesa_create_framebuffer
|
|
||||||
gl_destroy_framebuffer _mesa_destroy_framebuffer
|
|
||||||
gl_create_context _mesa_create_context
|
|
||||||
gl_destroy_context _mesa_destroy_context
|
|
||||||
gl_context_initialize _mesa_context_initialize
|
|
||||||
gl_copy_context _mesa_copy_context
|
|
||||||
gl_make_current _mesa_make_current
|
|
||||||
gl_make_current2 _mesa_make_current2
|
|
||||||
gl_get_current_context _mesa_get_current_context
|
|
||||||
gl_flush_vb _mesa_flush_vb
|
|
||||||
gl_warning _mesa_warning
|
|
||||||
gl_compile_error _mesa_compile_error
|
|
||||||
|
|
||||||
|
|
||||||
All the drivers have been updated, but not all of them have been
|
|
||||||
tested since I can't test some platforms (DOS, Windows, Allegro, etc).
|
|
||||||
|
|
||||||
|
|
||||||
X/Mesa Driver
|
|
||||||
-------------
|
|
||||||
|
|
||||||
The source files for the X/Mesa driver in src/X have been renamed.
|
|
||||||
The xmesa[1234].c files are gone. The new files are xm_api.c,
|
|
||||||
xm_dd.c, xm_line.c, xm_span.c and xm_tri.c.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Multitexture
|
|
||||||
------------
|
|
||||||
|
|
||||||
Eight texture units are now supported by default.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
OpenGL SI related changes
|
|
||||||
-------------------------
|
|
||||||
|
|
||||||
In an effort to make Mesa's internal interfaces more like the OpenGL
|
|
||||||
SI interfaces, a number of changes have been made:
|
|
||||||
|
|
||||||
1. Importing the SI's glcore.h file which defines a number of
|
|
||||||
interface structures like __GLimports and __GLexports.
|
|
||||||
|
|
||||||
2. Renamed "struct gl_context" to "struct __GLcontextRec".
|
|
||||||
|
|
||||||
3. Added __glCoreCreateContext() and __glCoreNopDispatch() functions.
|
|
||||||
|
|
||||||
4. The GLcontext member Visual is no longer a pointer.
|
|
||||||
|
|
||||||
5. New file: imports.c to setup default import functions for Mesa.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
16-bit color channels
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
There's experimental support for 16-bit color channels (64-bit pixels)
|
|
||||||
in Mesa 3.5. Only the OSMesa interface can be used for 16-bit rendering.
|
|
||||||
Type "make linux-osmesa16" in the top-level directory to build the
|
|
||||||
special libOSMesa16.so library.
|
|
||||||
|
|
||||||
This hasn't been tested very thoroughly yet so please file bug reports
|
|
||||||
if you have trouble.
|
|
||||||
|
|
||||||
In the future I hope to implement support for 32-bit, floating point
|
|
||||||
color channels.
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
|
||||||
$Id: RELNOTES-3.5,v 1.14 2001/06/20 19:02:48 brianp Exp $
|
|
||||||
@@ -1,163 +0,0 @@
|
|||||||
|
|
||||||
Mesa 4.0 release notes
|
|
||||||
|
|
||||||
October 18, 2001
|
|
||||||
|
|
||||||
PLEASE READ!!!!
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
------------
|
|
||||||
|
|
||||||
Mesa uses an even/odd version number scheme like the Linux kernel.
|
|
||||||
Odd numbered versions (such as 3.3) designate new developmental releases.
|
|
||||||
Even numbered versions (such as 3.4) designate stable releases.
|
|
||||||
|
|
||||||
Mesa version 4.0 signifies two things:
|
|
||||||
|
|
||||||
1. A stabilization of the 3.5 development release
|
|
||||||
2. Implementation of the OpenGL 1.3 specification
|
|
||||||
|
|
||||||
|
|
||||||
Note that the Mesa major version number is incremented with the OpenGL
|
|
||||||
minor version number:
|
|
||||||
|
|
||||||
Mesa 1.x == OpenGL 1.0
|
|
||||||
Mesa 2.x == OpenGL 1.1
|
|
||||||
Mesa 3.x == OpenGL 1.2
|
|
||||||
Mesa 4.x == OpenGL 1.3
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
New Features
|
|
||||||
------------
|
|
||||||
|
|
||||||
Mesa 3.5 already had all the new features of OpenGL 1.3, implemented as
|
|
||||||
extensions. These extensions were simply promoted to standard features:
|
|
||||||
|
|
||||||
GL_ARB_multisample
|
|
||||||
GL_ARB_multitexture
|
|
||||||
GL_ARB_texture_border_clamp
|
|
||||||
GL_ARB_texture_compression
|
|
||||||
GL_ARB_texture_cube_map
|
|
||||||
GL_ARB_texture_env_add
|
|
||||||
GL_ARB_texture_env_combine
|
|
||||||
GL_ARB_texture_env_dot3
|
|
||||||
GL_ARB_transpose_matrix
|
|
||||||
|
|
||||||
In Mesa 4.0 the functions defined by these extensions are now available
|
|
||||||
without the "ARB" suffix. For example, glLoadTransposeMatrixf() is now
|
|
||||||
a standard API function. The new functions in OpenGL 1.3 and Mesa 4.0 are:
|
|
||||||
|
|
||||||
glActiveTexture
|
|
||||||
glClientActiveTexture
|
|
||||||
glCompressedTexImage1D
|
|
||||||
glCompressedTexImage2D
|
|
||||||
glCompressedTexImage3D
|
|
||||||
glCompressedTexSubImage1D
|
|
||||||
glCompressedTexSubImage2D
|
|
||||||
glCompressedTexSubImage3D
|
|
||||||
glGetCompressedTexImage
|
|
||||||
glLoadTransposeMatrixd
|
|
||||||
glLoadTransposeMatrixf
|
|
||||||
glMultiTexCoord1d
|
|
||||||
glMultiTexCoord1dv
|
|
||||||
glMultiTexCoord1f
|
|
||||||
glMultiTexCoord1fv
|
|
||||||
glMultiTexCoord1i
|
|
||||||
glMultiTexCoord1iv
|
|
||||||
glMultiTexCoord1s
|
|
||||||
glMultiTexCoord1sv
|
|
||||||
glMultiTexCoord2d
|
|
||||||
glMultiTexCoord2dv
|
|
||||||
glMultiTexCoord2f
|
|
||||||
glMultiTexCoord2fv
|
|
||||||
glMultiTexCoord2i
|
|
||||||
glMultiTexCoord2iv
|
|
||||||
glMultiTexCoord2s
|
|
||||||
glMultiTexCoord2sv
|
|
||||||
glMultiTexCoord3d
|
|
||||||
glMultiTexCoord3dv
|
|
||||||
glMultiTexCoord3f
|
|
||||||
glMultiTexCoord3fv
|
|
||||||
glMultiTexCoord3i
|
|
||||||
glMultiTexCoord3iv
|
|
||||||
glMultiTexCoord3s
|
|
||||||
glMultiTexCoord3sv
|
|
||||||
glMultiTexCoord4d
|
|
||||||
glMultiTexCoord4dv
|
|
||||||
glMultiTexCoord4f
|
|
||||||
glMultiTexCoord4fv
|
|
||||||
glMultiTexCoord4i
|
|
||||||
glMultiTexCoord4iv
|
|
||||||
glMultiTexCoord4s
|
|
||||||
glMultiTexCoord4sv
|
|
||||||
glMultTransposeMatrixd
|
|
||||||
glMultTransposeMatrixf
|
|
||||||
glSampleCoverage
|
|
||||||
glSamplePass
|
|
||||||
|
|
||||||
|
|
||||||
GLX 1.4 is the companion to OpenGL 1.3. The only new features in GLX 1.4
|
|
||||||
are support for multisampling and the GLX_ARB_get_proc_address extension.
|
|
||||||
glXGetProcAddress() is the only new function in GLX 1.4.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Multisample and Texture Compression
|
|
||||||
-----------------------------------
|
|
||||||
|
|
||||||
The OpenGL 1.3 specification allows the multisample and texture compression
|
|
||||||
features to essentially be no-ops. For example, if you query for multisample
|
|
||||||
support you'll find none, but the API functions work.
|
|
||||||
|
|
||||||
Similarly, texture compression is not implemented by any of the software
|
|
||||||
drivers but you can specify a generic compressed texture format (like
|
|
||||||
GL_COMPRESSED_RGBA) to glTexImage2D and it'll be accepted.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Device Drivers
|
|
||||||
--------------
|
|
||||||
|
|
||||||
Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on the
|
|
||||||
device driver. If the driver enables all the ARB extensions which are part
|
|
||||||
of OpenGL 1.3 then glGetString(GL_VERSION) will return "1.3". Otherwise,
|
|
||||||
it'll return "1.2".
|
|
||||||
|
|
||||||
A number of Mesa's software drivers haven't been actively maintained for
|
|
||||||
some time. We rely on volunteers to maintain many of the drivers.
|
|
||||||
Here's the current status of all included drivers:
|
|
||||||
|
|
||||||
|
|
||||||
Driver Status
|
|
||||||
---------------------- ---------------------
|
|
||||||
XMesa (Xlib) implements OpenGL 1.3
|
|
||||||
OSMesa (off-screen) implements OpenGL 1.3
|
|
||||||
FX (3dfx Voodoo1/2) implements OpenGL 1.3
|
|
||||||
SVGA implements OpenGL 1.3
|
|
||||||
Wind River UGL implements OpenGL 1.3
|
|
||||||
Windows/Win32 implements OpenGL 1.3
|
|
||||||
GGI needs updating
|
|
||||||
DOS/DJGPP needs updating
|
|
||||||
BeOS needs updating
|
|
||||||
Allegro needs updating
|
|
||||||
D3D needs updating
|
|
||||||
DOS needs updating
|
|
||||||
|
|
||||||
Special thanks go to Karl Schultz for updating the Windows driver.
|
|
||||||
|
|
||||||
The XFree86/DRI drivers have not yet been updated to use Mesa 4.0 as of
|
|
||||||
September 2001, but that should happen eventually.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Other Changes
|
|
||||||
-------------
|
|
||||||
|
|
||||||
See the VERSIONS file for more details about bug fixes, etc. in Mesa 4.0.
|
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
|
||||||
$Id: RELNOTES-4.0,v 3.2 2001/10/17 14:59:21 brianp Exp $
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
|
|
||||||
Mesa 4.0.1 release notes
|
|
||||||
|
|
||||||
December 17, 2001
|
|
||||||
|
|
||||||
PLEASE READ!!!!
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
------------
|
|
||||||
|
|
||||||
Mesa uses an even/odd version number scheme like the Linux kernel.
|
|
||||||
Odd numbered versions (such as 3.3) designate new developmental releases.
|
|
||||||
Even numbered versions (such as 3.4) designate stable releases.
|
|
||||||
|
|
||||||
Mesa 4.0.1 only contains bug fixes since version 4.0.
|
|
||||||
|
|
||||||
See the docs/VERSIONS file for the list of bug fixes.
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
|
||||||
$Id: RELNOTES-4.0.1,v 1.2 2001/12/18 14:08:23 brianp Exp $
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
|
|
||||||
Mesa 4.0.2 release notes
|
|
||||||
|
|
||||||
March 25, 2002
|
|
||||||
|
|
||||||
PLEASE READ!!!!
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
------------
|
|
||||||
|
|
||||||
Mesa uses an even/odd version number scheme like the Linux kernel.
|
|
||||||
Odd numbered versions (such as 3.3) designate new developmental releases.
|
|
||||||
Even numbered versions (such as 3.4) designate stable releases.
|
|
||||||
|
|
||||||
Mesa 4.0.2 only contains bug fixes and a new DOS driver since version 4.0.1.
|
|
||||||
|
|
||||||
See the docs/VERSIONS file for the list of bug fixes.
|
|
||||||
|
|
||||||
|
|
||||||
Device Drivers
|
|
||||||
--------------
|
|
||||||
|
|
||||||
Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on the
|
|
||||||
device driver. If the driver enables all the ARB extensions which are part
|
|
||||||
of OpenGL 1.3 then glGetString(GL_VERSION) will return "1.3". Otherwise,
|
|
||||||
it'll return "1.2".
|
|
||||||
|
|
||||||
A number of Mesa's software drivers haven't been actively maintained for
|
|
||||||
some time. We rely on volunteers to maintain many of the drivers.
|
|
||||||
Here's the current status of all included drivers:
|
|
||||||
|
|
||||||
Driver Status
|
|
||||||
---------------------- ---------------------
|
|
||||||
XMesa (Xlib) implements OpenGL 1.3
|
|
||||||
OSMesa (off-screen) implements OpenGL 1.3
|
|
||||||
FX (3dfx Voodoo1/2) implements OpenGL 1.3
|
|
||||||
SVGA implements OpenGL 1.3
|
|
||||||
Wind River UGL implements OpenGL 1.3
|
|
||||||
Windows/Win32 implements OpenGL 1.3
|
|
||||||
DOS/DJGPP implements OpenGL 1.3 (new in Mesa 4.0.2)
|
|
||||||
GGI needs updating
|
|
||||||
BeOS needs updating
|
|
||||||
Allegro needs updating
|
|
||||||
D3D needs updating
|
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
|
||||||
$Id: RELNOTES-4.0.2,v 1.2 2002/03/23 02:38:39 brianp Exp $
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
|
|
||||||
Mesa 4.0.3 release notes
|
|
||||||
|
|
||||||
June 25, 2002
|
|
||||||
|
|
||||||
PLEASE READ!!!!
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
------------
|
|
||||||
|
|
||||||
Mesa uses an even/odd version number scheme like the Linux kernel.
|
|
||||||
Odd numbered versions (such as 3.3) designate new developmental releases.
|
|
||||||
Even numbered versions (such as 3.4) designate stable releases.
|
|
||||||
|
|
||||||
Mesa 4.0.3 basically just contains bug fixes version 4.0.2.
|
|
||||||
|
|
||||||
See the docs/VERSIONS file for the list of bug fixes.
|
|
||||||
|
|
||||||
The GGI driver has been updated, thanks to Filip Spacek.
|
|
||||||
|
|
||||||
|
|
||||||
Device Drivers
|
|
||||||
--------------
|
|
||||||
|
|
||||||
Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on the
|
|
||||||
device driver. If the driver enables all the ARB extensions which are part
|
|
||||||
of OpenGL 1.3 then glGetString(GL_VERSION) will return "1.3". Otherwise,
|
|
||||||
it'll return "1.2".
|
|
||||||
|
|
||||||
A number of Mesa's software drivers haven't been actively maintained for
|
|
||||||
some time. We rely on volunteers to maintain many of the drivers.
|
|
||||||
Here's the current status of all included drivers:
|
|
||||||
|
|
||||||
Driver Status
|
|
||||||
---------------------- ---------------------
|
|
||||||
XMesa (Xlib) implements OpenGL 1.3
|
|
||||||
OSMesa (off-screen) implements OpenGL 1.3
|
|
||||||
FX (3dfx Voodoo1/2) implements OpenGL 1.3
|
|
||||||
SVGA implements OpenGL 1.3
|
|
||||||
Wind River UGL implements OpenGL 1.3
|
|
||||||
Windows/Win32 implements OpenGL 1.3
|
|
||||||
DOS/DJGPP implements OpenGL 1.3 (new in Mesa 4.0.2)
|
|
||||||
GGI implements OpenGL 1.3
|
|
||||||
BeOS needs updating
|
|
||||||
Allegro needs updating
|
|
||||||
D3D needs updating
|
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
|
||||||
$Id: RELNOTES-4.0.3,v 1.2 2002/06/26 02:36:34 brianp Exp $
|
|
||||||
@@ -1,308 +0,0 @@
|
|||||||
|
|
||||||
Mesa 4.1 release notes
|
|
||||||
|
|
||||||
October 29, 2002
|
|
||||||
|
|
||||||
PLEASE READ!!!!
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
------------
|
|
||||||
|
|
||||||
Mesa uses an even/odd version number scheme like the Linux kernel.
|
|
||||||
Even numbered versions (such as 4.0) designate stable releases.
|
|
||||||
Odd numbered versions (such as 4.1) designate new developmental releases.
|
|
||||||
|
|
||||||
|
|
||||||
New Features in Mesa 4.1
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
New extensions. Docs at http://oss.sgi.com/projects/ogl-sample/registry/
|
|
||||||
|
|
||||||
GL_NV_vertex_program
|
|
||||||
|
|
||||||
NVIDIA's vertex programming extension
|
|
||||||
|
|
||||||
GL_NV_vertex_program1_1
|
|
||||||
|
|
||||||
A few features built on top of GL_NV_vertex_program
|
|
||||||
|
|
||||||
GL_ARB_window_pos
|
|
||||||
|
|
||||||
This is the ARB-approved version of GL_MESA_window_pos
|
|
||||||
|
|
||||||
GL_ARB_depth_texture
|
|
||||||
|
|
||||||
This is the ARB-approved version of GL_SGIX_depth_texture.
|
|
||||||
It allows depth (Z buffer) data to be stored in textures.
|
|
||||||
This is used by GL_ARB_shadow
|
|
||||||
|
|
||||||
GL_ARB_shadow
|
|
||||||
|
|
||||||
Shadow mapping with depth textures.
|
|
||||||
This is the ARB-approved version of GL_SGIX_shadow.
|
|
||||||
|
|
||||||
GL_ARB_shadow_ambient
|
|
||||||
|
|
||||||
Allows one to specify the luminance of shadowed pixels.
|
|
||||||
This is the ARB-approved version of GL_SGIX_shadow_ambient.
|
|
||||||
|
|
||||||
GL_EXT_shadow_funcs
|
|
||||||
|
|
||||||
Extends the set of GL_ARB_shadow texture comparision functions to
|
|
||||||
include all eight of standard OpenGL dept-test functions.
|
|
||||||
|
|
||||||
GL_ARB_point_parameters
|
|
||||||
|
|
||||||
This is basically the same as GL_EXT_point_parameters.
|
|
||||||
|
|
||||||
GL_ARB_texture_env_crossbar
|
|
||||||
|
|
||||||
Allows any texture combine stage to reference any texture source unit.
|
|
||||||
|
|
||||||
GL_NV_point_sprite
|
|
||||||
|
|
||||||
For rendering points as textured quads. Useful for particle effects.
|
|
||||||
|
|
||||||
GL_NV_texture_rectangle (new in 4.0.4 actually)
|
|
||||||
|
|
||||||
Allows one to use textures with sizes that are not powers of two.
|
|
||||||
Note that mipmapping and several texture wrap modes are not allowed.
|
|
||||||
|
|
||||||
GL_EXT_multi_draw_arrays
|
|
||||||
|
|
||||||
Allows arrays of vertex arrays to be rendered with one call.
|
|
||||||
|
|
||||||
GL_EXT_stencil_two_side
|
|
||||||
|
|
||||||
Separate stencil modes for front and back-facing polygons.
|
|
||||||
|
|
||||||
GLX_SGIX_fbconfig & GLX_SGIX_pbuffer
|
|
||||||
|
|
||||||
Off-screen rendering support.
|
|
||||||
|
|
||||||
GL_ATI_texture_mirror_once
|
|
||||||
|
|
||||||
Adds two new texture wrap modes: GL_MIRROR_CLAMP_ATI and
|
|
||||||
GL_MIRROR_CLAMP_TO_EDGE_ATI.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Device Driver Status
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
A number of Mesa's software drivers haven't been actively maintained for
|
|
||||||
some time. We rely on volunteers to maintain many of these drivers.
|
|
||||||
Here's the current status of all included drivers:
|
|
||||||
|
|
||||||
|
|
||||||
Driver Status
|
|
||||||
---------------------- ---------------------
|
|
||||||
XMesa (Xlib) implements OpenGL 1.3
|
|
||||||
OSMesa (off-screen) implements OpenGL 1.3
|
|
||||||
FX (3dfx Voodoo1/2) implements OpenGL 1.3
|
|
||||||
SVGA implements OpenGL 1.3
|
|
||||||
Wind River UGL implements OpenGL 1.3
|
|
||||||
Windows/Win32 implements OpenGL 1.3
|
|
||||||
DOS/DJGPP implements OpenGL 1.3
|
|
||||||
GGI implements OpenGL 1.3
|
|
||||||
BeOS needs updating (underway)
|
|
||||||
Allegro needs updating
|
|
||||||
D3D needs updating
|
|
||||||
DOS needs updating
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
New features in GLUT
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
1. Frames per second printing
|
|
||||||
|
|
||||||
GLUT now looks for an environment variable called "GLUT_FPS". If it's
|
|
||||||
set, GLUT will print out a frames/second statistic to stderr when
|
|
||||||
glutSwapBuffers() is called. By default, frames/second is computed
|
|
||||||
and displayed once every 5 seconds. You can specify a different
|
|
||||||
interval (in milliseconds) when you set the env var. For example
|
|
||||||
'export GLUT_FPS=1000' or 'setenv GLUT_FPS 1000' will set the interval
|
|
||||||
to one second.
|
|
||||||
|
|
||||||
NOTE: the demo or application must call the glutInit() function for
|
|
||||||
this to work. Otherwise, the env var will be ignored.
|
|
||||||
|
|
||||||
Finally, this feature may not be reliable in multi-window programs.
|
|
||||||
|
|
||||||
|
|
||||||
2. glutGetProcAddress() function
|
|
||||||
|
|
||||||
The new function:
|
|
||||||
|
|
||||||
void *glutGetProcAddress(const char *procName)
|
|
||||||
|
|
||||||
is a wrapper for glXGetProcAddressARB() and wglGetProcAddress(). It
|
|
||||||
lets you dynamically get the address of an OpenGL function at runtime.
|
|
||||||
The GLUT_API_VERSION has been bumped to 5, but I haven't bumped the
|
|
||||||
GLUT version number from 3.7 since that's probably Mark Kilgard's role.
|
|
||||||
|
|
||||||
This function should probably also be able to return the address of
|
|
||||||
GLUT functions themselves, but it doesn't do that yet.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
XXX Things To Do Yet XXXX
|
|
||||||
-------------------------
|
|
||||||
|
|
||||||
isosurf with vertex program exhibits some missing triangles (probably
|
|
||||||
when recycling the vertex buffer for long prims).
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Porting Info
|
|
||||||
------------
|
|
||||||
|
|
||||||
If you're porting a DRI or other driver from Mesa 4.0.x to Mesa 4.1 here
|
|
||||||
are some things to change:
|
|
||||||
|
|
||||||
1. ctx->Texture._ReallyEnabled is obsolete.
|
|
||||||
|
|
||||||
Since there are now 5 texture targets (1D, 2D, 3D, cube and rect) that
|
|
||||||
left room for only 6 units (6*5 < 32) in this field.
|
|
||||||
This field is being replaced by ctx->Texture._EnabledUnits which has one
|
|
||||||
bit per texture unit. If the bit k of _EnabledUnits is set, that means
|
|
||||||
ctx->Texture.Unit[k]._ReallyEnabled is non-zero. You'll have to look at
|
|
||||||
ctx->Texture.Unit[k]._ReallyEnabled to learn if the 1D, 2D, 3D, cube or
|
|
||||||
rect texture is enabled for unit k.
|
|
||||||
|
|
||||||
This also means that the constants TEXTURE1_*, TEXTURE2_*, etc are
|
|
||||||
obsolete.
|
|
||||||
|
|
||||||
The tokens TEXTURE0_* have been replaced as well (since there's no
|
|
||||||
significance to the "0" part:
|
|
||||||
|
|
||||||
old token new token
|
|
||||||
TEXTURE0_1D TEXTURE_1D_BIT
|
|
||||||
TEXTURE0_2D TEXTURE_2D_BIT
|
|
||||||
TEXTURE0_3D TEXTURE_3D_BIT
|
|
||||||
TEXTURE0_CUBE TEXTURE_CUBE_BIT
|
|
||||||
<none> TEXTURE_RECT_BIT
|
|
||||||
|
|
||||||
These tokens are only used for the ctx->Texture.Unit[i].Enabled and
|
|
||||||
ctx->Texture.Unit[i]._ReallyEnabled fields. Exactly 0 or 1 bits will
|
|
||||||
be set in _ReallyEnabled at any time!
|
|
||||||
|
|
||||||
Q: "What's the purpose of Unit[i].Enabled vs Unit[i]._ReallyEnabled?"
|
|
||||||
A: The user can enable GL_TEXTURE_1D, GL_TEXTURE_2D, etc for any
|
|
||||||
texure unit all at once (an unusual thing to do).
|
|
||||||
OpenGL defines priorities that basically say GL_TEXTURE_2D has
|
|
||||||
higher priority than GL_TEXTURE_1D, etc. Also, just because a
|
|
||||||
texture target is enabled by the user doesn't mean we'll actually
|
|
||||||
use that texture! If a texture object is incomplete (missing mip-
|
|
||||||
map levels, etc) it's as if texturing is disabled for that target.
|
|
||||||
The _ReallyEnabled field will have a bit set ONLY if the texture
|
|
||||||
target is enabled and complete. This spares the driver writer from
|
|
||||||
examining a _lot_ of GL state to determine which texture target is
|
|
||||||
to be used.
|
|
||||||
|
|
||||||
|
|
||||||
2. Tnl tokens changes
|
|
||||||
|
|
||||||
During the implementation of GL_NV_vertex_program some of the vertex
|
|
||||||
buffer code was changed. Specifically, the VERT_* bits defined in
|
|
||||||
tnl/t_context.h have been renamed to better match the conventions of
|
|
||||||
GL_NV_vertex_program. The old names are still present but obsolete.
|
|
||||||
Drivers should use the newer names.
|
|
||||||
|
|
||||||
For example: VERT_RGBA is now VERT_BIT_COLOR0 and
|
|
||||||
VERT_SPEC_RGB is now VERT_BIT_COLOR1.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
3. Read/Draw Buffer changes
|
|
||||||
|
|
||||||
The business of setting the current read/draw buffers in Mesa 4.0.x
|
|
||||||
was complicated. It's much simpler now in Mesa 4.1.
|
|
||||||
|
|
||||||
Here are the changes:
|
|
||||||
|
|
||||||
- Renamed ctx->Color.DrawDestMask to ctx->Color._DrawDestMask
|
|
||||||
- Removed ctx->Color.DriverDrawBuffer
|
|
||||||
- Removed ctx->Pixel.DriverReadBuffer
|
|
||||||
- Removed ctx->Color.MultiDrawBuffer
|
|
||||||
- Removed ctx->Driver.SetDrawBuffer()
|
|
||||||
- Removed swrast->Driver.SetReadBuffer().
|
|
||||||
- Added ctx->Color._DrawDestMask - a bitmask of FRONT/BACK_LEFT/RIGHT_BIT
|
|
||||||
values to indicate the current draw buffers.
|
|
||||||
- Added ctx->Pixel._ReadSrcMask to indicate the source for pixel reading.
|
|
||||||
The value is _one_ of the FRONT/BACK_LEFT/RIGHT_BIT values.
|
|
||||||
- Added ctx->Driver.DrawBuffer() and ctx->Driver.ReadBuffer().
|
|
||||||
These functions exactly correspond to glDrawBuffer and glReadBuffer calls.
|
|
||||||
Many drivers will set ctx->Driver.DrawBuffer = _swrast_DrawBuffer and
|
|
||||||
leave ctx->Draw.ReadBuffer NULL.
|
|
||||||
DRI drivers should implement their own function for ctx->Driver.DrawBuffer
|
|
||||||
and use it to set the current hardware drawing buffer. You'll probably
|
|
||||||
also want to check for GL_FRONT_AND_BACK mode and fall back to software.
|
|
||||||
Call _swrast_DrawBuffer() too, to update the swrast state.
|
|
||||||
- Added swrast->Driver.SetBuffer().
|
|
||||||
This function should be implemented by all device drivers that use swrast.
|
|
||||||
Mesa will call it to specify the buffer to use for span reading AND
|
|
||||||
writing and point/line/triangle rendering.
|
|
||||||
There should be no confusion between current read or draw buffer anymore.
|
|
||||||
- Added swrast->CurrentBuffer to indicate which color buffer to read/draw.
|
|
||||||
Will be FRONT_LEFT_BIT, BACK_LEFT_BIT, FRONT_RIGHT_BIT or BACK_RIGHT_BIT.
|
|
||||||
This value is usually passed to swrast->Driver.SetBuffer().
|
|
||||||
|
|
||||||
|
|
||||||
4. _mesa_create_context() changes. This function now takes a pointer to
|
|
||||||
a __GLimports object. The __GLimports structure contains function
|
|
||||||
pointers to system functions like fprintf(), malloc(), etc.
|
|
||||||
The _mesa_init_default_imports() function can be used to initialize
|
|
||||||
a __GLimports object. Most device drivers (like the DRI drivers)
|
|
||||||
should use this.
|
|
||||||
|
|
||||||
|
|
||||||
5. In tnl's struct vertex_buffer, the field "ProjectedClipCoords"
|
|
||||||
has been replaced by "NdcPtr" to better match the OpenGL spec's
|
|
||||||
terminology.
|
|
||||||
|
|
||||||
|
|
||||||
6. Since GL_EXT_stencil_two_side has been implemented, many of the
|
|
||||||
ctx->Stencil fields are now 2-element arrays. For example,
|
|
||||||
"GLenum Ref" is now "GLenum Ref[2]" The [0] elements are the front-face
|
|
||||||
values and the [1] elements are the back-face values.
|
|
||||||
ctx->Stencil.ActiveFace is 0 or 1 to indicate the current face for
|
|
||||||
the glStencilOp/Func/Mask() functions.
|
|
||||||
ctx->Stencil.TestTwoSide controls whether or not 1 or 2-sided stenciling
|
|
||||||
is enabled.
|
|
||||||
|
|
||||||
|
|
||||||
7. Removed ctx->Polygon._OffsetAny. Removed ctx->Polygon.OffsetMRD.
|
|
||||||
|
|
||||||
|
|
||||||
8. GLfloat / GLchan changes:
|
|
||||||
|
|
||||||
- Changed ctx->Driver.ClearColor() to take GLfloat[4] instead of GLchan[4].
|
|
||||||
ctx->Color.ClearColor is now GLfloat[4] too.
|
|
||||||
- Changed ctx->Driver.AlphaRef() to take GLfloat instead of GLchan.
|
|
||||||
- ctx->Color.AlphaRef is now GLfloat.
|
|
||||||
- texObj->BorderColor is now GLfloat[4]. texObj->_BorderChan is GLchan[4].
|
|
||||||
|
|
||||||
This is part of an effort to remove all GLchan types from core Mesa so
|
|
||||||
that someday we can support 8, 16 and 32-bit color channels dynamically
|
|
||||||
at runtime, instead of at compile-time.
|
|
||||||
|
|
||||||
|
|
||||||
9. GLboolean ctx->Tranform.ClipEnabled[MAX_CLIP_PLANES] has been replaced
|
|
||||||
by GLuint ctx->Transform.ClipPlanesEnabled. The later is a bitfield.
|
|
||||||
|
|
||||||
|
|
||||||
10. There's a new matrix_stack type in mtypes.h used for the Modelview,
|
|
||||||
Projection, Color and Texcoord matrix stacks.
|
|
||||||
|
|
||||||
|
|
||||||
11. The ctx->Current.* fields have changed a lot. Now, there's a
|
|
||||||
ctx->Current.Attrib[] array for all vertex attributes which matches
|
|
||||||
the NV vertex program conventions.
|
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
|
||||||
$Id: RELNOTES-4.1,v 1.22 2002/10/29 15:06:37 brianp Exp $
|
|
||||||
391
docs/VERSIONS
391
docs/VERSIONS
@@ -1,4 +1,4 @@
|
|||||||
$Id: VERSIONS,v 1.103 2002/10/29 15:09:37 brianp Exp $
|
$Id: VERSIONS,v 1.13.2.47 2000/07/19 15:09:30 brianp Exp $
|
||||||
|
|
||||||
|
|
||||||
Mesa Version History
|
Mesa Version History
|
||||||
@@ -666,12 +666,47 @@ Mesa Version History
|
|||||||
- added demos/gloss.c
|
- added demos/gloss.c
|
||||||
- added xdemos/glxdpyinfo.c
|
- added xdemos/glxdpyinfo.c
|
||||||
- added GLX_ARB_get_proc_address extension
|
- added GLX_ARB_get_proc_address extension
|
||||||
- rewritten glTexImage code paths (faster, less memory, bug fixes)
|
Bug fixes:
|
||||||
Bug Fixes:
|
|
||||||
- several vertex array bug fixes
|
- several vertex array bug fixes
|
||||||
- overlapping glCopyPixels with pixel zooming now works
|
- overlapping glCopyPixels with pixel zooming now works
|
||||||
- glXUseXFont() bitmaps were vertically shifted by one pixel
|
- glXUseXFont() bitmaps were vertically shifted by one pixel
|
||||||
- glCopyPixels with pixel zooming now works
|
|
||||||
|
|
||||||
|
3.2 beta 1 March 23, 2000
|
||||||
|
Bug fixes:
|
||||||
|
- mixed drawing of lines and bitmaps sometimes had wrong colors
|
||||||
|
- added missing glHintPGI() function
|
||||||
|
- fixed a polygon culling bug
|
||||||
|
- fixed bugs in gluPartialDisk()
|
||||||
|
- Z values in selection mode were wrong
|
||||||
|
- added missing tokens:
|
||||||
|
GL_SMOOTH_POINT_SIZE_RANGE
|
||||||
|
GL_SMOOTH_POINT_SIZE_GRANULARITY
|
||||||
|
GL_SMOOTH_LINE_WIDTH_RANGE
|
||||||
|
GL_SMOOTH_LINE_WIDTH_GRANULARITY
|
||||||
|
GL_ALIASED_POINT_SIZE_RANGE
|
||||||
|
GL_ALIASED_LINE_WIDTH_RANGE
|
||||||
|
- fixed glCopyPixels when copying from back to front buffer
|
||||||
|
- GL_EXT_compiled_vertex_array tokens had _SGI suffix instead of _EXT
|
||||||
|
- glDrawRangeElements(GL_LINES, 0, 1, 2, type, indices) was broken
|
||||||
|
- glDeleteTextures() didn't decrement reference count correctly
|
||||||
|
- GL_SRCA_ALPHA_SATURATE blend mode didn't work correctly
|
||||||
|
- Actual depth of transformation matrix stacks was off by one
|
||||||
|
- 24bpp visuals didn't address pixels correctly
|
||||||
|
- mipmap level of detail (lambda) calculation simplified, more accurate
|
||||||
|
- 101691 - Polygon clipping and GL_LINE
|
||||||
|
- 101928 - Polygon clipping and GL_LINE (same fix as above)
|
||||||
|
- 101808 - Non-glVertexArrays tristrip bug
|
||||||
|
- 101971 - find_last_3f on Dec OSF (worked around)
|
||||||
|
- 102369 - segv on dec osf (possibly a duplicate of the above)
|
||||||
|
- 102893 - orientations of modelview cause segfault
|
||||||
|
New:
|
||||||
|
- updated SVGA Linux driver
|
||||||
|
- added the MESA_FX_NO_SIGNALS env var, see docs/README.3DFX
|
||||||
|
- build libGLw.a (Xt/OpenGL drawing area widget) library by default
|
||||||
|
- changed -O2 to -O3 for a number of gcc configs
|
||||||
|
Changes:
|
||||||
|
- glXCopyContext's mask parameter is now unsigned long, per GLX spec
|
||||||
|
|
||||||
|
|
||||||
3.2 final April 24, 2000
|
3.2 final April 24, 2000
|
||||||
@@ -688,7 +723,6 @@ Mesa Version History
|
|||||||
- use bcopy() optimizations on FreeBSD
|
- use bcopy() optimizations on FreeBSD
|
||||||
- re-enabled the optimized persp_textured_triangle() function
|
- re-enabled the optimized persp_textured_triangle() function
|
||||||
|
|
||||||
|
|
||||||
3.2.1 July 19, 2000
|
3.2.1 July 19, 2000
|
||||||
Bug fixes:
|
Bug fixes:
|
||||||
- gluBuild2DMipmaps() didn't accept GL_BGRA
|
- gluBuild2DMipmaps() didn't accept GL_BGRA
|
||||||
@@ -701,6 +735,7 @@ Mesa Version History
|
|||||||
didn't always work right
|
didn't always work right
|
||||||
- Specular highlights weren't always in the right place
|
- Specular highlights weren't always in the right place
|
||||||
- clipped GL_LINE mode polygons had interior lines appear
|
- clipped GL_LINE mode polygons had interior lines appear
|
||||||
|
- several OpenGL conformace test fixes
|
||||||
- blend term GL_ONE_MINUS_CONSTANT_ALPHA was broken
|
- blend term GL_ONE_MINUS_CONSTANT_ALPHA was broken
|
||||||
- GL_NICEST fog didn't always work with flat shading
|
- GL_NICEST fog didn't always work with flat shading
|
||||||
- glRect commands in display lists were sometimes miscolored
|
- glRect commands in display lists were sometimes miscolored
|
||||||
@@ -711,349 +746,3 @@ Mesa Version History
|
|||||||
- glColorMask(false, false, false, false) handled better/faster
|
- glColorMask(false, false, false, false) handled better/faster
|
||||||
- reverted to old GLU polygon tessellator, GLU 1.1
|
- reverted to old GLU polygon tessellator, GLU 1.1
|
||||||
- updated Win32 build files
|
- updated Win32 build files
|
||||||
|
|
||||||
|
|
||||||
3.3 July 21, 2000
|
|
||||||
New:
|
|
||||||
- antialiased triangles now implemented
|
|
||||||
- GL_EXT_texture_env_add texture mode extension
|
|
||||||
- GLX 1.3 API
|
|
||||||
- support for separate draw/read buffers (ie GL_SGI_make_current_read)
|
|
||||||
- thread-safe API dispath
|
|
||||||
- improved glxinfo program
|
|
||||||
- demos/texdown program to measure texture download performance
|
|
||||||
- glext.h header file
|
|
||||||
- demos/geartrain program
|
|
||||||
- GL_EXT_texture_lod_bias extension
|
|
||||||
- demos/lodbias program
|
|
||||||
- further optimized glRead/DrawPixels for 16-bit TrueColor X visuals
|
|
||||||
- GLX_EXT_visual_rating extension (a no-op, however)
|
|
||||||
- GL_HP_occlusion_test extension (for X and OS/Mesa drivers)
|
|
||||||
- demos/occlude program
|
|
||||||
- GL_SGIS_pixel_texture and GL_SGIX_pixel_texture extensions
|
|
||||||
- demos/pixeltex program
|
|
||||||
- GL_SGI_color_matrix extension
|
|
||||||
- GL_SGI_color_table extension
|
|
||||||
- GL_EXT_histogram extension
|
|
||||||
- GL_ARB_texture_cube_map extension
|
|
||||||
- added xdemos/glxheads and xdemos/manywin
|
|
||||||
- demos/texenv.c demo
|
|
||||||
- GL_EXT_texture_env_combine extension (by Holger Waechtler)
|
|
||||||
- Xlib driver is now thread-safe (see xdemos/glthreads)
|
|
||||||
Bug Fixes:
|
|
||||||
- various GL conformance failures fixed since 3.2.1
|
|
||||||
Changes:
|
|
||||||
- gl.h now uses #defines instead of C enums for all tokens
|
|
||||||
- glu.h now uses #defines instead of C enums for all tokens
|
|
||||||
- moved programs from 3Dfx/demos/ into demos/ directory
|
|
||||||
|
|
||||||
|
|
||||||
3.4 November 3, 2000
|
|
||||||
New:
|
|
||||||
- optimized glDrawPixels for glPixelZoom(1,-1)
|
|
||||||
Bug Fixes:
|
|
||||||
- widgets-mesa/src/*.c files were missing from 3.3 distro
|
|
||||||
- include/GL/mesa_wgl.h file was missing from 3.3 distro
|
|
||||||
- fixed some Win32 compile problems
|
|
||||||
- texture object priorities weren't getting initialized to 1.0
|
|
||||||
- glAreTexturesResident return value was wrong when using hardware
|
|
||||||
- glXUseXFont segfaulted when using 3dfx driver (via MESA_GLX_FX)
|
|
||||||
- glReadPixels with GLushort packed types was broken
|
|
||||||
- fixed a few bugs in the GL_EXT_texture_env_combine texture code
|
|
||||||
- glPush/PopAttrib(GL_ENABLE_BIT) mishandled multi-texture enables
|
|
||||||
- fixed some typos/bugs in the VB code
|
|
||||||
- glDrawPixels(GL_COLOR_INDEX) to RGB window didn't work
|
|
||||||
- optimized glDrawPixels paths weren't being used
|
|
||||||
- per-fragment fog calculation didn't work without a Z buffer
|
|
||||||
- improved blending accuracy, fixes Glean blendFunc test failures
|
|
||||||
- glPixelStore(GL_PACK/UNPACK_SKIP_IMAGES) wasn't handled correctly
|
|
||||||
- glXGetProcAddressARB() didn't always return the right address
|
|
||||||
- gluBuild[12]DMipmaps() didn't grok the GL_BGR pixel format
|
|
||||||
- texture matrix changes weren't always detected (GLUT projtex demo)
|
|
||||||
- fixed random color problem in vertex fog code
|
|
||||||
- fixed Glide-related bug that let Quake get a 24-bit Z buffer
|
|
||||||
Changes:
|
|
||||||
- finished internal support for compressed textures for DRI
|
|
||||||
|
|
||||||
|
|
||||||
3.4.1 February 14, 2001
|
|
||||||
New:
|
|
||||||
- fixed some Linux build problems
|
|
||||||
- fixed some Windows build problems
|
|
||||||
- GL_EXT_texture_env_dot3 extension (Gareth Hughes)
|
|
||||||
Bug fixes:
|
|
||||||
- added RENDER_START/RENDER_FINISH macros for glCopyTexImage in DRI
|
|
||||||
- various state-update code changes needed for DRI bugs
|
|
||||||
- disabled pixel transfer ops in glColorTable commands, not needed
|
|
||||||
- fixed bugs in glCopyConvolutionFilter1D/2D, glGetConvolutionFilter
|
|
||||||
- updated sources and fixed compile problems in widgets-mesa/
|
|
||||||
- GLX_PBUFFER enum value was wrong in glx.h
|
|
||||||
- fixed a glColorMaterial lighting bug
|
|
||||||
- fixed bad args to Read/WriteStencilSpan in h/w stencil clear function
|
|
||||||
- glXCopySubBufferMESA() Y position was off by one
|
|
||||||
- Error checking of glTexSubImage3D() was broken (bug 128775)
|
|
||||||
- glPopAttrib() didn't restore all derived Mesa state correctly
|
|
||||||
- Better glReadPixels accuracy for 16bpp color - fixes lots of OpenGL
|
|
||||||
conformance problems at 16bpp.
|
|
||||||
- clearing depth buffer with scissoring was broken, would segfault
|
|
||||||
- OSMesaGetDepthBuffer() returned bad bytesPerValue value
|
|
||||||
- fixed a line clipping bug (reported by Craig McDaniel)
|
|
||||||
- fixed RGB color over/underflow bug for very tiny triangles
|
|
||||||
Known problems:
|
|
||||||
- NURBS or evaluator surfaces inside display lists don't always work
|
|
||||||
|
|
||||||
|
|
||||||
3.4.2 May 17, 2001
|
|
||||||
Bug fixes:
|
|
||||||
- deleting the currently bound texture could cause bad problems
|
|
||||||
- using fog could result in random vertex alpha values
|
|
||||||
- AA triangle rendering could touch pixels outside right window bound
|
|
||||||
- fixed byteswapping problem in clear_32bit_ximage() function
|
|
||||||
- fixed bugs in wglUseFontBitmapsA(), by Frank Warmerdam
|
|
||||||
- fixed memory leak in glXUseXFont()
|
|
||||||
- fragment sampling in AA triangle function was off by 1/2 pixel
|
|
||||||
- Windows: reading pixels from framebuffer didn't always work
|
|
||||||
- glConvolutionFilter2D could segfault or cause FP exception
|
|
||||||
- fixed segfaults in FX and X drivers when using tex unit 1 but not 0
|
|
||||||
- GL_NAND logicop didn't work right in RGBA mode
|
|
||||||
- fixed a memory corruption bug in vertex buffer reset code
|
|
||||||
- clearing the softwara alpha buffer with scissoring was broken
|
|
||||||
- fixed a few color index mode fog bugs
|
|
||||||
- fixed some bad assertions in color index mode
|
|
||||||
- fixed FX line 'stipple' bug #420091
|
|
||||||
- fixed stencil buffer clear width/height typo
|
|
||||||
- fixed GL error glitches in gl[Client]ActiveTextureARB()
|
|
||||||
- fixed Windows compilation problem in texutil.c
|
|
||||||
- fixed 1/8-pixel AA triangle sampling error
|
|
||||||
Changes:
|
|
||||||
- optimized writing mono-colored pixel spans to X pixmaps
|
|
||||||
- increased max viewport size to 2048 x 2048
|
|
||||||
|
|
||||||
|
|
||||||
3.5 June 21, 2001
|
|
||||||
New:
|
|
||||||
- internals of Mesa divided into modular pieces (Keith Whitwell)
|
|
||||||
- 100% OpenGL 1.2 conformance (passes all conformance tests)
|
|
||||||
- new AA line algorithm
|
|
||||||
- GL_EXT_convolution extension
|
|
||||||
- GL_ARB_imaging subset
|
|
||||||
- OSMesaCreateContextExt() function
|
|
||||||
- GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add)
|
|
||||||
- GL_MAX_TEXTURE_UNITS_ARB now defaults to eight
|
|
||||||
- GL_EXT_fog_coord extension (Keith Whitwell)
|
|
||||||
- GL_EXT_secondary_color extension (Keith Whitwell)
|
|
||||||
- GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add)
|
|
||||||
- GL_SGIX_depth_texture extension
|
|
||||||
- GL_SGIX_shadow and GL_SGIX_shadow_ambient extensions
|
|
||||||
- demos/shadowtex.c demo of GL_SGIX_depth_texture and GL_SGIX_shadow
|
|
||||||
- GL_ARB_texture_env_combine extension
|
|
||||||
- GL_ARB_texture_env_dot3 extension
|
|
||||||
- GL_ARB_texture_border_clamp (aka GL_SGIS_texture_border_clamp)
|
|
||||||
- OSMesaCreateContextExt() function
|
|
||||||
- libOSMesa.so library, contains the OSMesa driver interface
|
|
||||||
- GL/glxext.h header file for GLX extensions
|
|
||||||
- somewhat faster software texturing, fogging, depth testing
|
|
||||||
- all color-index conformance tests now pass (only 8bpp tested)
|
|
||||||
- SPARC assembly language TCL optimizations (David Miller)
|
|
||||||
- GL_SGIS_generate_mipmap extension
|
|
||||||
Bug Fixes:
|
|
||||||
- fbiRev and tmuRev were unitialized when using Glide3
|
|
||||||
- fixed a few color index mode conformance failures; all pass now
|
|
||||||
- now appling antialiasing coverage to alpha after texturing
|
|
||||||
- colors weren't getting clamped to [0,1] before color table lookup
|
|
||||||
- fixed RISC alignment errors caused by COPY_4UBV macro
|
|
||||||
- drawing wide, flat-shaded lines could cause a segfault
|
|
||||||
- vertices now snapped to 1/16 pixel to fix rendering of tiny triangles
|
|
||||||
Changes:
|
|
||||||
- SGI's Sample Implementation (SI) 1.3 GLU library replaces Mesa GLU
|
|
||||||
- new libOSMesa.so library, contains the OSMesa driver interface
|
|
||||||
|
|
||||||
|
|
||||||
4.0 October 22, 2001
|
|
||||||
New:
|
|
||||||
- Mesa 4.0 implements the OpenGL 1.3 specification
|
|
||||||
- GL_IBM_rasterpos_clip extension
|
|
||||||
- GL_EXT_texture_edge_clamp extension (aka GL_SGIS_texture_edge_clamp)
|
|
||||||
- GL_ARB_texture_mirrored_repeat extension
|
|
||||||
- WindML UGL driver (Stephane Raimbault)
|
|
||||||
- added OSMESA_MAX_WIDTH/HEIGHT queries
|
|
||||||
- attempted compiliation fixes for Solaris 5, 7 and 8
|
|
||||||
- updated glext.h and glxext.h files
|
|
||||||
- updated Windows driver (Karl Schultz)
|
|
||||||
Bug fixes:
|
|
||||||
- added some missing GLX 1.3 tokens to include/GL/glx.h
|
|
||||||
- GL_COLOR_MATRIX changes weren't recognized by teximage functions
|
|
||||||
- glCopyPixels with scale and bias was broken
|
|
||||||
- glRasterPos with lighting could segfault
|
|
||||||
- glDeleteTextures could leave a dangling pointer
|
|
||||||
- Proxy textures for cube maps didn't work
|
|
||||||
- fixed a number of 16-bit color channel bugs
|
|
||||||
- fixed a few minor memory leaks
|
|
||||||
- GLX context sharing was broken in 3.5
|
|
||||||
- fixed state-update bugs in glPopClientAttrib()
|
|
||||||
- fixed glDrawRangeElements() bug
|
|
||||||
- fixed a glPush/PopAttrib() bug related to texture binding
|
|
||||||
- flat-shaded, textured lines were broken
|
|
||||||
- fixed a dangling pointer problem in the XMesa code (Chris Burghart)
|
|
||||||
- lighting didn't always produce the correct alpha value
|
|
||||||
- fixed 3DNow! code to not read past end of arrays (Andrew Lewycky)
|
|
||||||
|
|
||||||
|
|
||||||
4.0.1 December 17, 2001
|
|
||||||
New:
|
|
||||||
- better sub-pixel sample positions for AA triangles (Ray Tice)
|
|
||||||
- slightly faster blending for (GL_ZERO, GL_ONE) and (GL_ONE, GL_ZERO)
|
|
||||||
Bug fixes:
|
|
||||||
- added missing break statements in glGet*() for multisample cases
|
|
||||||
- fixed uninitialized hash table mutex bug (display lists / texobjs)
|
|
||||||
- fixed bad teximage error check conditional (bug 476846)
|
|
||||||
- fixed demos readtex.c compilation problem on Windows (Karl Schultz)
|
|
||||||
- added missing glGet() query for GL_MAX_TEXTURE_LOD_BIAS_EXT
|
|
||||||
- silence some compiler warnings (gcc 2.96)
|
|
||||||
- enable the #define GL_VERSION_1_3 in GL/gl.h
|
|
||||||
- added GL 1.3 and GLX 1.4 entries to gl_mangle.h and glx_mangle.h
|
|
||||||
- fixed glu.h typedef problem found with MSDev 6.0
|
|
||||||
- build libGL.so with -Bsymbolic (fixes bug found with Chromium)
|
|
||||||
- added missing 'const' to glXGetContextIDEXT() in glxext.h
|
|
||||||
- fixed a few glXGetProcAddress() errors (texture compression, etc)
|
|
||||||
- fixed start index bug in compiled vertex arrays (Keith)
|
|
||||||
- fixed compilation problems in src/SPARC/glapi_sparc.S
|
|
||||||
- fixed triangle strip "parity" bug found in VTK medical1 demo (Keith)
|
|
||||||
- use glXGetProcAddressARB in GLUT to avoid extension linking problems
|
|
||||||
- provoking vertex of flat-shaded, color-index triangles was wrong
|
|
||||||
- fixed a few display list bugs (GLUT walker, molecule, etc) (Keith)
|
|
||||||
- glTexParameter didn't flush the vertex buffer (Ray Tice)
|
|
||||||
- feedback attributes for glDraw/CopyPixels and glBitmap were wrong
|
|
||||||
- fixed bug in normal length caching (ParaView lighting bug)
|
|
||||||
- fixed separate_specular color bug found in Chimera (18 Dec 2001)
|
|
||||||
|
|
||||||
|
|
||||||
4.0.2 April 2, 2002
|
|
||||||
New:
|
|
||||||
- New DOS (DJGPP) driver written by Daniel Borca
|
|
||||||
- New driver interface functions for TCL drivers (such as Radeon DRI)
|
|
||||||
- GL_RENDERER string returns "Mesa Offscreen16" or "Mesa Offscreen32"
|
|
||||||
if using deep color channels
|
|
||||||
- latest GL/glext.h and GL/glxext.h headers from SGI
|
|
||||||
Bug fixes:
|
|
||||||
- GL_BLEND with non-black texture env color wasn't always correct
|
|
||||||
- GL_REPLACE with GL_RGB texture format wasn't always correct (alpha)
|
|
||||||
- glTexEnviv( pname != GL_TEXTURE_ENV_COLOR ) was broken
|
|
||||||
- glReadPixels was sometimes mistakenly clipped by the scissor box
|
|
||||||
- glDraw/ReadPixels didn't catch all the errors that they should have
|
|
||||||
- Fixed 24bpp rendering problem in Windows driver (Karl Schultz)
|
|
||||||
- 16-bit GLchan mode fixes (m_trans_tmp.h, s_triangle.c)
|
|
||||||
- Fixed 1-bit float->int conversion bug in glDrawPixels(GL_DEPTH_COMP)
|
|
||||||
- glColorMask as sometimes effecting glXSwapBuffers()
|
|
||||||
- fixed a potential bug in XMesaGarbageCollect()
|
|
||||||
- N threads rendering into one window didn't work reliably
|
|
||||||
- glCopyPixels didn't work for deep color channels
|
|
||||||
- improved 8 -> 16bit/channel texture image conversion (Gerk Huisma)
|
|
||||||
- glPopAttrib() didn't correctly restore user clip planes
|
|
||||||
- user clip planes failed for some perspective projections (Chromium)
|
|
||||||
Known bugs:
|
|
||||||
- mipmap LOD computation
|
|
||||||
|
|
||||||
|
|
||||||
4.0.3 June 25, 2002
|
|
||||||
New:
|
|
||||||
- updated GL/glext.h file (version 15)
|
|
||||||
- corrected MMX blend code (Jose Fonseca)
|
|
||||||
- support for software-based alpha planes in Windows driver
|
|
||||||
- updated GGI driver (Filip Spacek)
|
|
||||||
Bug fixes:
|
|
||||||
- glext.h had wrong values for GL_DOT3_RGB[A]_EXT tokens
|
|
||||||
- OSMesaMakeCurrent() didn't recognize buffer size changes
|
|
||||||
- assorted conformance fixes for 16-bit/channel rendering
|
|
||||||
- texcombine alpha subtraction mode was broken
|
|
||||||
- fixed lighting bug with non-uniform scaling and display lists
|
|
||||||
- fixed bug when deleting shared display lists
|
|
||||||
- disabled SPARC cliptest assembly code (Mesa bug 544665)
|
|
||||||
- fixed a couple Solaris compilation/link problems
|
|
||||||
- blending clipped glDrawPixels didn't always work
|
|
||||||
- glGetTexImage() didn't accept packed pixel types
|
|
||||||
- glPixelMapu[is]v() could explode given too large of pixelmap
|
|
||||||
- glGetTexParameter[if]v() didn't accept GL_TEXTURE_MAX_ANISOTROPY_EXT
|
|
||||||
- glXCopyContext() could lead to segfaults
|
|
||||||
- glCullFace(GL_FRONT_AND_BACK) didn't work (bug 572665)
|
|
||||||
Changes:
|
|
||||||
- lots of C++ (g++) code clean-ups
|
|
||||||
- lots of T&L updates for the Radeon DRI driver
|
|
||||||
Known bugs:
|
|
||||||
- mipmap LOD computation (fixed for Mesa 4.1)
|
|
||||||
|
|
||||||
|
|
||||||
4.0.4 October 3, 2002
|
|
||||||
New:
|
|
||||||
- GL_NV_texture_rectangle extension
|
|
||||||
- updated glext.h header (version 17)
|
|
||||||
- updated DOS driver (Daniel Borca)
|
|
||||||
- updated BeOS R5 driver (Philippe Houdoin)
|
|
||||||
- added GL_IBM_texture_mirror_repeat
|
|
||||||
- glxinfo now takes -l option to print interesting OpenGL limits info
|
|
||||||
- GL_MESA_ycbcr_texture extension
|
|
||||||
- GL_APPLE_client_storage extension (for some DRI drivers only)
|
|
||||||
- GL_MESA_pack_invert extension
|
|
||||||
Bug fixes:
|
|
||||||
- fixed GL_LINEAR fog bug by adding clamping
|
|
||||||
- fixed FP exceptions found using Alpha CPU
|
|
||||||
- 3dfx MESA_GLX_FX=window (render to window) didn't work
|
|
||||||
- fixed memory leak in wglCreateContest (Karl Schultz)
|
|
||||||
- define GLAPIENTRY and GLAPI if undefined in glu.h
|
|
||||||
- wglGetProcAddress didn't handle all API functions
|
|
||||||
- when testing for OpenGL 1.2 vs 1.3, check for GL_ARB_texture_cube_map
|
|
||||||
- removed GL_MAX_CONVOLUTION_WIDTH/HEIGHT from glGetInteger/Float/etc()
|
|
||||||
- error checking in compressed tex image functions had some glitches
|
|
||||||
- fixed AIX compile problem in src/config.c
|
|
||||||
- glGetTexImage was using pixel unpacking instead of packing params
|
|
||||||
- auto-mipmap generation for cube maps was incorrect
|
|
||||||
Changes:
|
|
||||||
- max texture units reduced to six to accomodate texture rectangles
|
|
||||||
- removed unfinished GL_MESA_sprite_point extension code
|
|
||||||
|
|
||||||
|
|
||||||
4.1 October 29, 2002
|
|
||||||
New:
|
|
||||||
- GL_NV_vertex_program extension
|
|
||||||
- GL_NV_vertex_program1_1 extension
|
|
||||||
- GL_ARB_window_pos extension
|
|
||||||
- GL_ARB_depth_texture extension
|
|
||||||
- GL_ARB_shadow extension
|
|
||||||
- GL_ARB_shadow_ambient extension
|
|
||||||
- GL_EXT_shadow_funcs extension
|
|
||||||
- GL_ARB_point_parameters extension
|
|
||||||
- GL_ARB_texture_env_crossbar
|
|
||||||
- GL_NV_point_sprite extension
|
|
||||||
- GL_NV_texture_rectangle extension
|
|
||||||
- GL_EXT_multi_draw_arrays extension
|
|
||||||
- GL_EXT_stencil_two_side extension
|
|
||||||
- GLX_SGIX_fbconfig and GLX_SGIX_pbuffer extensions
|
|
||||||
- GL_ATI_texture_mirror_once extension (Ian Romanick)
|
|
||||||
- massive overhaul/simplification of software rasterizer module,
|
|
||||||
many contributions from Klaus Niederkrueger
|
|
||||||
- faster software texturing in some cases (i.e. trilinear filtering)
|
|
||||||
- new OSMesaGetProcAddress() function
|
|
||||||
- more blend modes implemented with MMX code (Jose Fonseca)
|
|
||||||
- added glutGetProcAddress() to GLUT
|
|
||||||
- added GLUT_FPS env var to compute frames/second in glutSwapBuffers()
|
|
||||||
- pbinfo and pbdemo PBuffer programs
|
|
||||||
- glxinfo -v prints transprent pixel info (Gerd Sussner)
|
|
||||||
Bug fixes:
|
|
||||||
- better mipmap LOD computation (prevents excessive blurriness)
|
|
||||||
- OSMesaMakeCurrent() didn't recognize buffer size changes
|
|
||||||
- assorted conformance fixes for 16-bit/channel rendering
|
|
||||||
- texcombine alpha subtraction mode was broken
|
|
||||||
- fixed some blend problems when GLchan==GLfloat (Gerk Huisma)
|
|
||||||
- clamp colors to [0,1] in OSMesa if GLchan==GLfloat (Gerk Huisma)
|
|
||||||
- fixed divide by zero error in NURBS tessellator (Jon Perry)
|
|
||||||
- fixed GL_LINEAR fog bug by adding clamping
|
|
||||||
- fixed FP exceptions found using Alpha CPU
|
|
||||||
- 3dfx/glide driver render-to-window feature was broken
|
|
||||||
- added missing GLX_TRANSPARENT_RGB token to glx.h
|
|
||||||
- fixed error checking related to paletted textures
|
|
||||||
- fixed reference count error in glDeleteTextures (Randy Fayan)
|
|
||||||
Changes:
|
|
||||||
- New spec file and Python code to generate some GL dispatch files
|
|
||||||
- Glide driver defaults to "no" with autoconf/automake
|
|
||||||
- floating point color channels now clamped to [0,inf)
|
|
||||||
- updated demos/stex3d with new options
|
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
|
|
||||||
This directory is for doxygen (a source code documentation system).
|
|
||||||
|
|
||||||
See http://www.doxygen.org/ for more info.
|
|
||||||
|
|
||||||
Either run 'make' (Unix) or 'doxy.bat' (Windows) to run doxygen
|
|
||||||
and generate souce code documentation.
|
|
||||||
@@ -1,183 +0,0 @@
|
|||||||
# Doxyfile 0.1
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# General configuration options
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
PROJECT_NAME = "Mesa array_cache"
|
|
||||||
PROJECT_NUMBER = 4.1
|
|
||||||
OUTPUT_DIRECTORY = .
|
|
||||||
OUTPUT_LANGUAGE = English
|
|
||||||
EXTRACT_ALL = YES
|
|
||||||
EXTRACT_PRIVATE = NO
|
|
||||||
EXTRACT_STATIC = NO
|
|
||||||
EXTRACT_LOCAL_CLASSES = YES
|
|
||||||
HIDE_UNDOC_MEMBERS = NO
|
|
||||||
HIDE_UNDOC_CLASSES = NO
|
|
||||||
BRIEF_MEMBER_DESC = YES
|
|
||||||
REPEAT_BRIEF = YES
|
|
||||||
ALWAYS_DETAILED_SEC = NO
|
|
||||||
INLINE_INHERITED_MEMB = NO
|
|
||||||
FULL_PATH_NAMES = NO
|
|
||||||
STRIP_FROM_PATH =
|
|
||||||
INTERNAL_DOCS = NO
|
|
||||||
STRIP_CODE_COMMENTS = YES
|
|
||||||
CASE_SENSE_NAMES = YES
|
|
||||||
SHORT_NAMES = NO
|
|
||||||
HIDE_SCOPE_NAMES = NO
|
|
||||||
VERBATIM_HEADERS = YES
|
|
||||||
SHOW_INCLUDE_FILES = YES
|
|
||||||
JAVADOC_AUTOBRIEF = NO
|
|
||||||
INHERIT_DOCS = YES
|
|
||||||
INLINE_INFO = YES
|
|
||||||
SORT_MEMBER_DOCS = NO
|
|
||||||
DISTRIBUTE_GROUP_DOC = NO
|
|
||||||
TAB_SIZE = 8
|
|
||||||
GENERATE_TODOLIST = YES
|
|
||||||
GENERATE_TESTLIST = YES
|
|
||||||
GENERATE_BUGLIST = YES
|
|
||||||
ALIASES =
|
|
||||||
ENABLED_SECTIONS =
|
|
||||||
MAX_INITIALIZER_LINES = 30
|
|
||||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
|
||||||
SHOW_USED_FILES = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to warning and progress messages
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
QUIET = YES
|
|
||||||
WARNINGS = YES
|
|
||||||
WARN_IF_UNDOCUMENTED = YES
|
|
||||||
WARN_FORMAT =
|
|
||||||
WARN_LOGFILE =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the input files
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
INPUT = ../src/array_cache/
|
|
||||||
FILE_PATTERNS = *.c \
|
|
||||||
*.h
|
|
||||||
RECURSIVE = NO
|
|
||||||
EXCLUDE =
|
|
||||||
EXCLUDE_PATTERNS =
|
|
||||||
EXAMPLE_PATH =
|
|
||||||
EXAMPLE_PATTERNS =
|
|
||||||
EXAMPLE_RECURSIVE = NO
|
|
||||||
IMAGE_PATH =
|
|
||||||
INPUT_FILTER =
|
|
||||||
FILTER_SOURCE_FILES = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to source browsing
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SOURCE_BROWSER = NO
|
|
||||||
INLINE_SOURCES = NO
|
|
||||||
REFERENCED_BY_RELATION = YES
|
|
||||||
REFERENCES_RELATION = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the alphabetical class index
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ALPHABETICAL_INDEX = YES
|
|
||||||
COLS_IN_ALPHA_INDEX = 5
|
|
||||||
IGNORE_PREFIX =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the HTML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_HTML = YES
|
|
||||||
HTML_OUTPUT = array_cache
|
|
||||||
HTML_HEADER = header.html
|
|
||||||
HTML_FOOTER =
|
|
||||||
HTML_STYLESHEET =
|
|
||||||
HTML_ALIGN_MEMBERS = YES
|
|
||||||
GENERATE_HTMLHELP = NO
|
|
||||||
GENERATE_CHI = NO
|
|
||||||
BINARY_TOC = NO
|
|
||||||
TOC_EXPAND = NO
|
|
||||||
DISABLE_INDEX = NO
|
|
||||||
ENUM_VALUES_PER_LINE = 4
|
|
||||||
GENERATE_TREEVIEW = NO
|
|
||||||
TREEVIEW_WIDTH = 250
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the LaTeX output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_LATEX = NO
|
|
||||||
LATEX_OUTPUT =
|
|
||||||
COMPACT_LATEX = NO
|
|
||||||
PAPER_TYPE = a4wide
|
|
||||||
EXTRA_PACKAGES =
|
|
||||||
LATEX_HEADER =
|
|
||||||
PDF_HYPERLINKS = NO
|
|
||||||
USE_PDFLATEX = NO
|
|
||||||
LATEX_BATCHMODE = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the RTF output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_RTF = NO
|
|
||||||
RTF_OUTPUT =
|
|
||||||
COMPACT_RTF = NO
|
|
||||||
RTF_HYPERLINKS = NO
|
|
||||||
RTF_STYLESHEET_FILE =
|
|
||||||
RTF_EXTENSIONS_FILE =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the man page output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_MAN = NO
|
|
||||||
MAN_OUTPUT =
|
|
||||||
MAN_EXTENSION =
|
|
||||||
MAN_LINKS = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the XML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_XML = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options for the AutoGen Definitions output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_AUTOGEN_DEF = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the preprocessor
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ENABLE_PREPROCESSING = YES
|
|
||||||
MACRO_EXPANSION = NO
|
|
||||||
EXPAND_ONLY_PREDEF = NO
|
|
||||||
SEARCH_INCLUDES = YES
|
|
||||||
INCLUDE_PATH =
|
|
||||||
INCLUDE_FILE_PATTERNS =
|
|
||||||
PREDEFINED =
|
|
||||||
EXPAND_AS_DEFINED =
|
|
||||||
SKIP_FUNCTION_MACROS = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::addtions related to external references
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
TAGFILES = core.tag=../core \
|
|
||||||
tnl.tag=../tnl \
|
|
||||||
swrast_setup.tag=../swrast_setup \
|
|
||||||
swrast.tag=../swrast \
|
|
||||||
math.tag=../math \
|
|
||||||
tnl_dd.tag=../tnl_dd
|
|
||||||
GENERATE_TAGFILE = array_cache.tag
|
|
||||||
ALLEXTERNALS = NO
|
|
||||||
PERL_PATH =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the dot tool
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
CLASS_DIAGRAMS = YES
|
|
||||||
HAVE_DOT = NO
|
|
||||||
CLASS_GRAPH = YES
|
|
||||||
COLLABORATION_GRAPH = YES
|
|
||||||
TEMPLATE_RELATIONS = YES
|
|
||||||
HIDE_UNDOC_RELATIONS = YES
|
|
||||||
INCLUDE_GRAPH = YES
|
|
||||||
INCLUDED_BY_GRAPH = YES
|
|
||||||
GRAPHICAL_HIERARCHY = YES
|
|
||||||
DOT_PATH =
|
|
||||||
DOTFILE_DIRS =
|
|
||||||
MAX_DOT_GRAPH_WIDTH = 1024
|
|
||||||
MAX_DOT_GRAPH_HEIGHT = 1024
|
|
||||||
GENERATE_LEGEND = YES
|
|
||||||
DOT_CLEANUP = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::addtions related to the search engine
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SEARCHENGINE = NO
|
|
||||||
CGI_NAME =
|
|
||||||
CGI_URL =
|
|
||||||
DOC_URL =
|
|
||||||
DOC_ABSPATH =
|
|
||||||
BIN_ABSPATH =
|
|
||||||
EXT_DOC_PATHS =
|
|
||||||
@@ -1,183 +0,0 @@
|
|||||||
# Doxyfile 0.1
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# General configuration options
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
PROJECT_NAME = "Mesa Core"
|
|
||||||
PROJECT_NUMBER = 4.1
|
|
||||||
OUTPUT_DIRECTORY =
|
|
||||||
OUTPUT_LANGUAGE = English
|
|
||||||
EXTRACT_ALL = YES
|
|
||||||
EXTRACT_PRIVATE = NO
|
|
||||||
EXTRACT_STATIC = NO
|
|
||||||
EXTRACT_LOCAL_CLASSES = YES
|
|
||||||
HIDE_UNDOC_MEMBERS = NO
|
|
||||||
HIDE_UNDOC_CLASSES = NO
|
|
||||||
BRIEF_MEMBER_DESC = YES
|
|
||||||
REPEAT_BRIEF = YES
|
|
||||||
ALWAYS_DETAILED_SEC = NO
|
|
||||||
INLINE_INHERITED_MEMB = NO
|
|
||||||
FULL_PATH_NAMES = NO
|
|
||||||
STRIP_FROM_PATH =
|
|
||||||
INTERNAL_DOCS = NO
|
|
||||||
STRIP_CODE_COMMENTS = YES
|
|
||||||
CASE_SENSE_NAMES = YES
|
|
||||||
SHORT_NAMES = NO
|
|
||||||
HIDE_SCOPE_NAMES = NO
|
|
||||||
VERBATIM_HEADERS = YES
|
|
||||||
SHOW_INCLUDE_FILES = YES
|
|
||||||
JAVADOC_AUTOBRIEF = NO
|
|
||||||
INHERIT_DOCS = YES
|
|
||||||
INLINE_INFO = YES
|
|
||||||
SORT_MEMBER_DOCS = NO
|
|
||||||
DISTRIBUTE_GROUP_DOC = NO
|
|
||||||
TAB_SIZE = 8
|
|
||||||
GENERATE_TODOLIST = YES
|
|
||||||
GENERATE_TESTLIST = YES
|
|
||||||
GENERATE_BUGLIST = YES
|
|
||||||
ALIASES =
|
|
||||||
ENABLED_SECTIONS =
|
|
||||||
MAX_INITIALIZER_LINES = 30
|
|
||||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
|
||||||
SHOW_USED_FILES = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to warning and progress messages
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
QUIET = YES
|
|
||||||
WARNINGS = YES
|
|
||||||
WARN_IF_UNDOCUMENTED = YES
|
|
||||||
WARN_FORMAT =
|
|
||||||
WARN_LOGFILE =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the input files
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
INPUT = ../src/
|
|
||||||
FILE_PATTERNS = *.h *.c
|
|
||||||
RECURSIVE = NO
|
|
||||||
EXCLUDE = ../src/glapitemp.h ../src/glapioffsets.h
|
|
||||||
EXCLUDE_PATTERNS =
|
|
||||||
EXAMPLE_PATH =
|
|
||||||
EXAMPLE_PATTERNS =
|
|
||||||
EXAMPLE_RECURSIVE = NO
|
|
||||||
IMAGE_PATH =
|
|
||||||
INPUT_FILTER =
|
|
||||||
FILTER_SOURCE_FILES = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to source browsing
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SOURCE_BROWSER = NO
|
|
||||||
INLINE_SOURCES = NO
|
|
||||||
REFERENCED_BY_RELATION = YES
|
|
||||||
REFERENCES_RELATION = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the alphabetical class index
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ALPHABETICAL_INDEX = YES
|
|
||||||
COLS_IN_ALPHA_INDEX = 5
|
|
||||||
IGNORE_PREFIX = _
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the HTML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_HTML = YES
|
|
||||||
HTML_OUTPUT = core
|
|
||||||
HTML_HEADER = header.html
|
|
||||||
HTML_FOOTER =
|
|
||||||
HTML_STYLESHEET =
|
|
||||||
HTML_ALIGN_MEMBERS = YES
|
|
||||||
GENERATE_HTMLHELP = NO
|
|
||||||
GENERATE_CHI = NO
|
|
||||||
BINARY_TOC = NO
|
|
||||||
TOC_EXPAND = NO
|
|
||||||
DISABLE_INDEX = NO
|
|
||||||
ENUM_VALUES_PER_LINE = 4
|
|
||||||
GENERATE_TREEVIEW = NO
|
|
||||||
TREEVIEW_WIDTH = 250
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the LaTeX output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_LATEX = NO
|
|
||||||
LATEX_OUTPUT =
|
|
||||||
COMPACT_LATEX = NO
|
|
||||||
PAPER_TYPE = a4wide
|
|
||||||
EXTRA_PACKAGES =
|
|
||||||
LATEX_HEADER =
|
|
||||||
PDF_HYPERLINKS = NO
|
|
||||||
USE_PDFLATEX = NO
|
|
||||||
LATEX_BATCHMODE = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the RTF output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_RTF = NO
|
|
||||||
RTF_OUTPUT =
|
|
||||||
COMPACT_RTF = NO
|
|
||||||
RTF_HYPERLINKS = NO
|
|
||||||
RTF_STYLESHEET_FILE =
|
|
||||||
RTF_EXTENSIONS_FILE =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the man page output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_MAN = NO
|
|
||||||
MAN_OUTPUT =
|
|
||||||
MAN_EXTENSION =
|
|
||||||
MAN_LINKS = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the XML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_XML = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options for the AutoGen Definitions output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_AUTOGEN_DEF = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the preprocessor
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ENABLE_PREPROCESSING = YES
|
|
||||||
MACRO_EXPANSION = NO
|
|
||||||
EXPAND_ONLY_PREDEF = NO
|
|
||||||
SEARCH_INCLUDES = YES
|
|
||||||
INCLUDE_PATH = ../include/
|
|
||||||
INCLUDE_FILE_PATTERNS =
|
|
||||||
PREDEFINED =
|
|
||||||
EXPAND_AS_DEFINED =
|
|
||||||
SKIP_FUNCTION_MACROS = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::addtions related to external references
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
TAGFILES = tnl_dd.tag=../tnl_dd \
|
|
||||||
array_cache.tag=../array_cache \
|
|
||||||
math.tag=../math \
|
|
||||||
swrast.tag=../swrast \
|
|
||||||
swrast_setup.tag=../swrast_setup \
|
|
||||||
tnl.tag=../tnl \
|
|
||||||
array_cache.tag=array_cache
|
|
||||||
GENERATE_TAGFILE = core.tag
|
|
||||||
ALLEXTERNALS = NO
|
|
||||||
PERL_PATH =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the dot tool
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
CLASS_DIAGRAMS = NO
|
|
||||||
HAVE_DOT = NO
|
|
||||||
CLASS_GRAPH = YES
|
|
||||||
COLLABORATION_GRAPH = YES
|
|
||||||
TEMPLATE_RELATIONS = YES
|
|
||||||
HIDE_UNDOC_RELATIONS = YES
|
|
||||||
INCLUDE_GRAPH = YES
|
|
||||||
INCLUDED_BY_GRAPH = YES
|
|
||||||
GRAPHICAL_HIERARCHY = YES
|
|
||||||
DOT_PATH =
|
|
||||||
DOTFILE_DIRS =
|
|
||||||
MAX_DOT_GRAPH_WIDTH = 1024
|
|
||||||
MAX_DOT_GRAPH_HEIGHT = 1024
|
|
||||||
GENERATE_LEGEND = YES
|
|
||||||
DOT_CLEANUP = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::addtions related to the search engine
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SEARCHENGINE = NO
|
|
||||||
CGI_NAME =
|
|
||||||
CGI_URL =
|
|
||||||
DOC_URL =
|
|
||||||
DOC_ABSPATH =
|
|
||||||
BIN_ABSPATH =
|
|
||||||
EXT_DOC_PATHS =
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
doxygen tnl_dd.doxy
|
|
||||||
doxygen array_cache.doxy
|
|
||||||
doxygen math.doxy
|
|
||||||
doxygen swrast.doxy
|
|
||||||
doxygen swrast_setup.doxy
|
|
||||||
doxygen tnl.doxy
|
|
||||||
doxygen core.doxy
|
|
||||||
echo Building again, to resolve tags
|
|
||||||
doxygen tnl_dd.doxy
|
|
||||||
doxygen array_cache.doxy
|
|
||||||
doxygen math.doxy
|
|
||||||
doxygen swrast.doxy
|
|
||||||
doxygen swrast_setup.doxy
|
|
||||||
doxygen tnl.doxy
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<html><head><title>Mesa API docs</title>
|
|
||||||
<link href="doxygen.css" rel="stylesheet" type="text/css">
|
|
||||||
</head>
|
|
||||||
<body><center>
|
|
||||||
<a href="../array_cache/index.html">array_cache</a>
|
|
||||||
<a href="../core/index.html">core</a>
|
|
||||||
<a href="../math/index.html">math</a>
|
|
||||||
<a href="../swrast/index.html">swrast</a>
|
|
||||||
<a href="../swrast_setup/index.html">swrast_setup</a>
|
|
||||||
<a href="../tnl/index.html">tnl</a>
|
|
||||||
<a href="../tnl_dd/index.html">tnl_dd</a>
|
|
||||||
</center>
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
default:
|
|
||||||
doxygen tnl_dd.doxy
|
|
||||||
doxygen array_cache.doxy
|
|
||||||
doxygen math.doxy
|
|
||||||
doxygen swrast.doxy
|
|
||||||
doxygen swrast_setup.doxy
|
|
||||||
doxygen tnl.doxy
|
|
||||||
doxygen core.doxy
|
|
||||||
echo "Building again, to resolve tags"
|
|
||||||
doxygen tnl_dd.doxy
|
|
||||||
doxygen array_cache.doxy
|
|
||||||
doxygen math.doxy
|
|
||||||
doxygen swrast.doxy
|
|
||||||
doxygen swrast_setup.doxy
|
|
||||||
doxygen tnl.doxy
|
|
||||||
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -rf array_cache core math swrast swrast_setup tnl_dd tnl
|
|
||||||
rm -rf *.tag
|
|
||||||
|
|
||||||
@@ -1,183 +0,0 @@
|
|||||||
# Doxyfile 0.1
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# General configuration options
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
PROJECT_NAME = "Mesa math"
|
|
||||||
PROJECT_NUMBER = 4.1
|
|
||||||
OUTPUT_DIRECTORY = .
|
|
||||||
OUTPUT_LANGUAGE = English
|
|
||||||
EXTRACT_ALL = YES
|
|
||||||
EXTRACT_PRIVATE = NO
|
|
||||||
EXTRACT_STATIC = NO
|
|
||||||
EXTRACT_LOCAL_CLASSES = YES
|
|
||||||
HIDE_UNDOC_MEMBERS = NO
|
|
||||||
HIDE_UNDOC_CLASSES = NO
|
|
||||||
BRIEF_MEMBER_DESC = YES
|
|
||||||
REPEAT_BRIEF = YES
|
|
||||||
ALWAYS_DETAILED_SEC = NO
|
|
||||||
INLINE_INHERITED_MEMB = NO
|
|
||||||
FULL_PATH_NAMES = NO
|
|
||||||
STRIP_FROM_PATH =
|
|
||||||
INTERNAL_DOCS = NO
|
|
||||||
STRIP_CODE_COMMENTS = YES
|
|
||||||
CASE_SENSE_NAMES = YES
|
|
||||||
SHORT_NAMES = NO
|
|
||||||
HIDE_SCOPE_NAMES = NO
|
|
||||||
VERBATIM_HEADERS = YES
|
|
||||||
SHOW_INCLUDE_FILES = YES
|
|
||||||
JAVADOC_AUTOBRIEF = NO
|
|
||||||
INHERIT_DOCS = YES
|
|
||||||
INLINE_INFO = YES
|
|
||||||
SORT_MEMBER_DOCS = NO
|
|
||||||
DISTRIBUTE_GROUP_DOC = NO
|
|
||||||
TAB_SIZE = 8
|
|
||||||
GENERATE_TODOLIST = YES
|
|
||||||
GENERATE_TESTLIST = YES
|
|
||||||
GENERATE_BUGLIST = YES
|
|
||||||
ALIASES =
|
|
||||||
ENABLED_SECTIONS =
|
|
||||||
MAX_INITIALIZER_LINES = 30
|
|
||||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
|
||||||
SHOW_USED_FILES = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to warning and progress messages
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
QUIET = YES
|
|
||||||
WARNINGS = YES
|
|
||||||
WARN_IF_UNDOCUMENTED = YES
|
|
||||||
WARN_FORMAT =
|
|
||||||
WARN_LOGFILE =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the input files
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
INPUT = ../src/math/
|
|
||||||
FILE_PATTERNS = *.c \
|
|
||||||
*.h
|
|
||||||
RECURSIVE = NO
|
|
||||||
EXCLUDE =
|
|
||||||
EXCLUDE_PATTERNS =
|
|
||||||
EXAMPLE_PATH =
|
|
||||||
EXAMPLE_PATTERNS =
|
|
||||||
EXAMPLE_RECURSIVE = NO
|
|
||||||
IMAGE_PATH =
|
|
||||||
INPUT_FILTER =
|
|
||||||
FILTER_SOURCE_FILES = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to source browsing
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SOURCE_BROWSER = NO
|
|
||||||
INLINE_SOURCES = NO
|
|
||||||
REFERENCED_BY_RELATION = YES
|
|
||||||
REFERENCES_RELATION = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the alphabetical class index
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ALPHABETICAL_INDEX = YES
|
|
||||||
COLS_IN_ALPHA_INDEX = 5
|
|
||||||
IGNORE_PREFIX =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the HTML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_HTML = YES
|
|
||||||
HTML_OUTPUT = math
|
|
||||||
HTML_HEADER = header.html
|
|
||||||
HTML_FOOTER =
|
|
||||||
HTML_STYLESHEET =
|
|
||||||
HTML_ALIGN_MEMBERS = YES
|
|
||||||
GENERATE_HTMLHELP = NO
|
|
||||||
GENERATE_CHI = NO
|
|
||||||
BINARY_TOC = NO
|
|
||||||
TOC_EXPAND = NO
|
|
||||||
DISABLE_INDEX = NO
|
|
||||||
ENUM_VALUES_PER_LINE = 4
|
|
||||||
GENERATE_TREEVIEW = NO
|
|
||||||
TREEVIEW_WIDTH = 250
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the LaTeX output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_LATEX = NO
|
|
||||||
LATEX_OUTPUT =
|
|
||||||
COMPACT_LATEX = NO
|
|
||||||
PAPER_TYPE = a4wide
|
|
||||||
EXTRA_PACKAGES =
|
|
||||||
LATEX_HEADER =
|
|
||||||
PDF_HYPERLINKS = NO
|
|
||||||
USE_PDFLATEX = NO
|
|
||||||
LATEX_BATCHMODE = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the RTF output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_RTF = NO
|
|
||||||
RTF_OUTPUT =
|
|
||||||
COMPACT_RTF = NO
|
|
||||||
RTF_HYPERLINKS = NO
|
|
||||||
RTF_STYLESHEET_FILE =
|
|
||||||
RTF_EXTENSIONS_FILE =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the man page output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_MAN = NO
|
|
||||||
MAN_OUTPUT =
|
|
||||||
MAN_EXTENSION =
|
|
||||||
MAN_LINKS = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the XML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_XML = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options for the AutoGen Definitions output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_AUTOGEN_DEF = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the preprocessor
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ENABLE_PREPROCESSING = YES
|
|
||||||
MACRO_EXPANSION = NO
|
|
||||||
EXPAND_ONLY_PREDEF = NO
|
|
||||||
SEARCH_INCLUDES = YES
|
|
||||||
INCLUDE_PATH =
|
|
||||||
INCLUDE_FILE_PATTERNS =
|
|
||||||
PREDEFINED =
|
|
||||||
EXPAND_AS_DEFINED =
|
|
||||||
SKIP_FUNCTION_MACROS = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::addtions related to external references
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
TAGFILES = tnl_dd.tag=../tnl_dd \
|
|
||||||
core.tag=../core \
|
|
||||||
swrast.tag=../swrast \
|
|
||||||
swrast_setup.tag=../swrast_setup \
|
|
||||||
tnl.tag=../tnl \
|
|
||||||
array_cache.tag=../array_cache
|
|
||||||
GENERATE_TAGFILE = math.tag
|
|
||||||
ALLEXTERNALS = NO
|
|
||||||
PERL_PATH =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the dot tool
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
CLASS_DIAGRAMS = YES
|
|
||||||
HAVE_DOT = NO
|
|
||||||
CLASS_GRAPH = YES
|
|
||||||
COLLABORATION_GRAPH = YES
|
|
||||||
TEMPLATE_RELATIONS = YES
|
|
||||||
HIDE_UNDOC_RELATIONS = YES
|
|
||||||
INCLUDE_GRAPH = YES
|
|
||||||
INCLUDED_BY_GRAPH = YES
|
|
||||||
GRAPHICAL_HIERARCHY = YES
|
|
||||||
DOT_PATH =
|
|
||||||
DOTFILE_DIRS =
|
|
||||||
MAX_DOT_GRAPH_WIDTH = 1024
|
|
||||||
MAX_DOT_GRAPH_HEIGHT = 1024
|
|
||||||
GENERATE_LEGEND = YES
|
|
||||||
DOT_CLEANUP = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::addtions related to the search engine
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SEARCHENGINE = NO
|
|
||||||
CGI_NAME =
|
|
||||||
CGI_URL =
|
|
||||||
DOC_URL =
|
|
||||||
DOC_ABSPATH =
|
|
||||||
BIN_ABSPATH =
|
|
||||||
EXT_DOC_PATHS =
|
|
||||||
@@ -1,183 +0,0 @@
|
|||||||
# Doxyfile 0.1
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# General configuration options
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
PROJECT_NAME = "Mesa swrast"
|
|
||||||
PROJECT_NUMBER = 4.1
|
|
||||||
OUTPUT_DIRECTORY =
|
|
||||||
OUTPUT_LANGUAGE = English
|
|
||||||
EXTRACT_ALL = NO
|
|
||||||
EXTRACT_PRIVATE = NO
|
|
||||||
EXTRACT_STATIC = NO
|
|
||||||
EXTRACT_LOCAL_CLASSES = YES
|
|
||||||
HIDE_UNDOC_MEMBERS = NO
|
|
||||||
HIDE_UNDOC_CLASSES = NO
|
|
||||||
BRIEF_MEMBER_DESC = YES
|
|
||||||
REPEAT_BRIEF = YES
|
|
||||||
ALWAYS_DETAILED_SEC = NO
|
|
||||||
INLINE_INHERITED_MEMB = NO
|
|
||||||
FULL_PATH_NAMES = NO
|
|
||||||
STRIP_FROM_PATH =
|
|
||||||
INTERNAL_DOCS = NO
|
|
||||||
STRIP_CODE_COMMENTS = YES
|
|
||||||
CASE_SENSE_NAMES = YES
|
|
||||||
SHORT_NAMES = NO
|
|
||||||
HIDE_SCOPE_NAMES = NO
|
|
||||||
VERBATIM_HEADERS = YES
|
|
||||||
SHOW_INCLUDE_FILES = YES
|
|
||||||
JAVADOC_AUTOBRIEF = NO
|
|
||||||
INHERIT_DOCS = YES
|
|
||||||
INLINE_INFO = YES
|
|
||||||
SORT_MEMBER_DOCS = NO
|
|
||||||
DISTRIBUTE_GROUP_DOC = NO
|
|
||||||
TAB_SIZE = 8
|
|
||||||
GENERATE_TODOLIST = YES
|
|
||||||
GENERATE_TESTLIST = YES
|
|
||||||
GENERATE_BUGLIST = YES
|
|
||||||
ALIASES =
|
|
||||||
ENABLED_SECTIONS =
|
|
||||||
MAX_INITIALIZER_LINES = 30
|
|
||||||
OPTIMIZE_OUTPUT_FOR_C = NO
|
|
||||||
SHOW_USED_FILES = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to warning and progress messages
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
QUIET = YES
|
|
||||||
WARNINGS = YES
|
|
||||||
WARN_IF_UNDOCUMENTED = YES
|
|
||||||
WARN_FORMAT =
|
|
||||||
WARN_LOGFILE =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the input files
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
INPUT = ../src/swrast/
|
|
||||||
FILE_PATTERNS = *.c \
|
|
||||||
*.h
|
|
||||||
RECURSIVE = NO
|
|
||||||
EXCLUDE =
|
|
||||||
EXCLUDE_PATTERNS =
|
|
||||||
EXAMPLE_PATH =
|
|
||||||
EXAMPLE_PATTERNS =
|
|
||||||
EXAMPLE_RECURSIVE = NO
|
|
||||||
IMAGE_PATH =
|
|
||||||
INPUT_FILTER =
|
|
||||||
FILTER_SOURCE_FILES = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to source browsing
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SOURCE_BROWSER = NO
|
|
||||||
INLINE_SOURCES = NO
|
|
||||||
REFERENCED_BY_RELATION = YES
|
|
||||||
REFERENCES_RELATION = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the alphabetical class index
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ALPHABETICAL_INDEX = YES
|
|
||||||
COLS_IN_ALPHA_INDEX = 5
|
|
||||||
IGNORE_PREFIX =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the HTML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_HTML = YES
|
|
||||||
HTML_OUTPUT = swrast
|
|
||||||
HTML_HEADER = header.html
|
|
||||||
HTML_FOOTER =
|
|
||||||
HTML_STYLESHEET =
|
|
||||||
HTML_ALIGN_MEMBERS = YES
|
|
||||||
GENERATE_HTMLHELP = NO
|
|
||||||
GENERATE_CHI = NO
|
|
||||||
BINARY_TOC = NO
|
|
||||||
TOC_EXPAND = NO
|
|
||||||
DISABLE_INDEX = NO
|
|
||||||
ENUM_VALUES_PER_LINE = 4
|
|
||||||
GENERATE_TREEVIEW = NO
|
|
||||||
TREEVIEW_WIDTH = 250
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the LaTeX output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_LATEX = NO
|
|
||||||
LATEX_OUTPUT =
|
|
||||||
COMPACT_LATEX = NO
|
|
||||||
PAPER_TYPE = a4wide
|
|
||||||
EXTRA_PACKAGES =
|
|
||||||
LATEX_HEADER =
|
|
||||||
PDF_HYPERLINKS = NO
|
|
||||||
USE_PDFLATEX = NO
|
|
||||||
LATEX_BATCHMODE = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the RTF output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_RTF = NO
|
|
||||||
RTF_OUTPUT =
|
|
||||||
COMPACT_RTF = NO
|
|
||||||
RTF_HYPERLINKS = NO
|
|
||||||
RTF_STYLESHEET_FILE =
|
|
||||||
RTF_EXTENSIONS_FILE =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the man page output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_MAN = NO
|
|
||||||
MAN_OUTPUT =
|
|
||||||
MAN_EXTENSION =
|
|
||||||
MAN_LINKS = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the XML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_XML = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options for the AutoGen Definitions output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_AUTOGEN_DEF = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the preprocessor
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ENABLE_PREPROCESSING = YES
|
|
||||||
MACRO_EXPANSION = NO
|
|
||||||
EXPAND_ONLY_PREDEF = NO
|
|
||||||
SEARCH_INCLUDES = YES
|
|
||||||
INCLUDE_PATH =
|
|
||||||
INCLUDE_FILE_PATTERNS =
|
|
||||||
PREDEFINED =
|
|
||||||
EXPAND_AS_DEFINED =
|
|
||||||
SKIP_FUNCTION_MACROS = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::addtions related to external references
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
TAGFILES = core.tag=../core \
|
|
||||||
math.tag=../math \
|
|
||||||
tnl_dd.tag=../tnl_dd \
|
|
||||||
swrast_setup.tag=../swrast_setup \
|
|
||||||
tnl.tag=../tnl \
|
|
||||||
array_cache.tag=array_cache
|
|
||||||
GENERATE_TAGFILE = swrast.tag
|
|
||||||
ALLEXTERNALS = NO
|
|
||||||
PERL_PATH =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the dot tool
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
CLASS_DIAGRAMS = YES
|
|
||||||
HAVE_DOT = NO
|
|
||||||
CLASS_GRAPH = YES
|
|
||||||
COLLABORATION_GRAPH = YES
|
|
||||||
TEMPLATE_RELATIONS = YES
|
|
||||||
HIDE_UNDOC_RELATIONS = YES
|
|
||||||
INCLUDE_GRAPH = YES
|
|
||||||
INCLUDED_BY_GRAPH = YES
|
|
||||||
GRAPHICAL_HIERARCHY = YES
|
|
||||||
DOT_PATH =
|
|
||||||
DOTFILE_DIRS =
|
|
||||||
MAX_DOT_GRAPH_WIDTH = 1024
|
|
||||||
MAX_DOT_GRAPH_HEIGHT = 1024
|
|
||||||
GENERATE_LEGEND = YES
|
|
||||||
DOT_CLEANUP = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::addtions related to the search engine
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SEARCHENGINE = NO
|
|
||||||
CGI_NAME =
|
|
||||||
CGI_URL =
|
|
||||||
DOC_URL =
|
|
||||||
DOC_ABSPATH =
|
|
||||||
BIN_ABSPATH =
|
|
||||||
EXT_DOC_PATHS =
|
|
||||||
@@ -1,183 +0,0 @@
|
|||||||
# Doxyfile 0.1
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# General configuration options
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
PROJECT_NAME = "Mesa swrast_setup"
|
|
||||||
PROJECT_NUMBER = 4.1
|
|
||||||
OUTPUT_DIRECTORY =
|
|
||||||
OUTPUT_LANGUAGE = English
|
|
||||||
EXTRACT_ALL = YES
|
|
||||||
EXTRACT_PRIVATE = NO
|
|
||||||
EXTRACT_STATIC = NO
|
|
||||||
EXTRACT_LOCAL_CLASSES = YES
|
|
||||||
HIDE_UNDOC_MEMBERS = NO
|
|
||||||
HIDE_UNDOC_CLASSES = NO
|
|
||||||
BRIEF_MEMBER_DESC = YES
|
|
||||||
REPEAT_BRIEF = YES
|
|
||||||
ALWAYS_DETAILED_SEC = NO
|
|
||||||
INLINE_INHERITED_MEMB = NO
|
|
||||||
FULL_PATH_NAMES = NO
|
|
||||||
STRIP_FROM_PATH =
|
|
||||||
INTERNAL_DOCS = NO
|
|
||||||
STRIP_CODE_COMMENTS = YES
|
|
||||||
CASE_SENSE_NAMES = YES
|
|
||||||
SHORT_NAMES = NO
|
|
||||||
HIDE_SCOPE_NAMES = NO
|
|
||||||
VERBATIM_HEADERS = YES
|
|
||||||
SHOW_INCLUDE_FILES = YES
|
|
||||||
JAVADOC_AUTOBRIEF = NO
|
|
||||||
INHERIT_DOCS = YES
|
|
||||||
INLINE_INFO = YES
|
|
||||||
SORT_MEMBER_DOCS = NO
|
|
||||||
DISTRIBUTE_GROUP_DOC = NO
|
|
||||||
TAB_SIZE = 8
|
|
||||||
GENERATE_TODOLIST = YES
|
|
||||||
GENERATE_TESTLIST = YES
|
|
||||||
GENERATE_BUGLIST = YES
|
|
||||||
ALIASES =
|
|
||||||
ENABLED_SECTIONS =
|
|
||||||
MAX_INITIALIZER_LINES = 30
|
|
||||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
|
||||||
SHOW_USED_FILES = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to warning and progress messages
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
QUIET = YES
|
|
||||||
WARNINGS = YES
|
|
||||||
WARN_IF_UNDOCUMENTED = YES
|
|
||||||
WARN_FORMAT =
|
|
||||||
WARN_LOGFILE =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the input files
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
INPUT = ../src/swrast_setup/
|
|
||||||
FILE_PATTERNS = *.c \
|
|
||||||
*.h
|
|
||||||
RECURSIVE = NO
|
|
||||||
EXCLUDE =
|
|
||||||
EXCLUDE_PATTERNS =
|
|
||||||
EXAMPLE_PATH =
|
|
||||||
EXAMPLE_PATTERNS =
|
|
||||||
EXAMPLE_RECURSIVE = NO
|
|
||||||
IMAGE_PATH =
|
|
||||||
INPUT_FILTER =
|
|
||||||
FILTER_SOURCE_FILES = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to source browsing
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SOURCE_BROWSER = NO
|
|
||||||
INLINE_SOURCES = NO
|
|
||||||
REFERENCED_BY_RELATION = YES
|
|
||||||
REFERENCES_RELATION = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the alphabetical class index
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ALPHABETICAL_INDEX = YES
|
|
||||||
COLS_IN_ALPHA_INDEX = 5
|
|
||||||
IGNORE_PREFIX =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the HTML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_HTML = YES
|
|
||||||
HTML_OUTPUT = swrast_setup
|
|
||||||
HTML_HEADER = header.html
|
|
||||||
HTML_FOOTER =
|
|
||||||
HTML_STYLESHEET =
|
|
||||||
HTML_ALIGN_MEMBERS = YES
|
|
||||||
GENERATE_HTMLHELP = NO
|
|
||||||
GENERATE_CHI = NO
|
|
||||||
BINARY_TOC = NO
|
|
||||||
TOC_EXPAND = NO
|
|
||||||
DISABLE_INDEX = NO
|
|
||||||
ENUM_VALUES_PER_LINE = 4
|
|
||||||
GENERATE_TREEVIEW = NO
|
|
||||||
TREEVIEW_WIDTH = 250
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the LaTeX output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_LATEX = NO
|
|
||||||
LATEX_OUTPUT =
|
|
||||||
COMPACT_LATEX = NO
|
|
||||||
PAPER_TYPE = a4wide
|
|
||||||
EXTRA_PACKAGES =
|
|
||||||
LATEX_HEADER =
|
|
||||||
PDF_HYPERLINKS = NO
|
|
||||||
USE_PDFLATEX = NO
|
|
||||||
LATEX_BATCHMODE = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the RTF output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_RTF = NO
|
|
||||||
RTF_OUTPUT =
|
|
||||||
COMPACT_RTF = NO
|
|
||||||
RTF_HYPERLINKS = NO
|
|
||||||
RTF_STYLESHEET_FILE =
|
|
||||||
RTF_EXTENSIONS_FILE =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the man page output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_MAN = NO
|
|
||||||
MAN_OUTPUT =
|
|
||||||
MAN_EXTENSION =
|
|
||||||
MAN_LINKS = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the XML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_XML = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options for the AutoGen Definitions output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_AUTOGEN_DEF = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the preprocessor
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ENABLE_PREPROCESSING = YES
|
|
||||||
MACRO_EXPANSION = NO
|
|
||||||
EXPAND_ONLY_PREDEF = NO
|
|
||||||
SEARCH_INCLUDES = YES
|
|
||||||
INCLUDE_PATH =
|
|
||||||
INCLUDE_FILE_PATTERNS =
|
|
||||||
PREDEFINED =
|
|
||||||
EXPAND_AS_DEFINED =
|
|
||||||
SKIP_FUNCTION_MACROS = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::addtions related to external references
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
TAGFILES = tnl_dd.tag=../tnl_dd \
|
|
||||||
core.tag=../core \
|
|
||||||
math.tag=../math \
|
|
||||||
swrast.tag=../swrast \
|
|
||||||
tnl.tag=../tnl \
|
|
||||||
array_cache.tag=../array_cache
|
|
||||||
GENERATE_TAGFILE = swrast_setup.tag
|
|
||||||
ALLEXTERNALS = YES
|
|
||||||
PERL_PATH =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the dot tool
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
CLASS_DIAGRAMS = YES
|
|
||||||
HAVE_DOT = NO
|
|
||||||
CLASS_GRAPH = YES
|
|
||||||
COLLABORATION_GRAPH = YES
|
|
||||||
TEMPLATE_RELATIONS = YES
|
|
||||||
HIDE_UNDOC_RELATIONS = YES
|
|
||||||
INCLUDE_GRAPH = YES
|
|
||||||
INCLUDED_BY_GRAPH = YES
|
|
||||||
GRAPHICAL_HIERARCHY = YES
|
|
||||||
DOT_PATH =
|
|
||||||
DOTFILE_DIRS =
|
|
||||||
MAX_DOT_GRAPH_WIDTH = 1024
|
|
||||||
MAX_DOT_GRAPH_HEIGHT = 1024
|
|
||||||
GENERATE_LEGEND = YES
|
|
||||||
DOT_CLEANUP = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::addtions related to the search engine
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SEARCHENGINE = NO
|
|
||||||
CGI_NAME =
|
|
||||||
CGI_URL =
|
|
||||||
DOC_URL =
|
|
||||||
DOC_ABSPATH =
|
|
||||||
BIN_ABSPATH =
|
|
||||||
EXT_DOC_PATHS =
|
|
||||||
183
doxygen/tnl.doxy
183
doxygen/tnl.doxy
@@ -1,183 +0,0 @@
|
|||||||
# Doxyfile 0.1
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# General configuration options
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
PROJECT_NAME = "Mesa tnl"
|
|
||||||
PROJECT_NUMBER = 4.1
|
|
||||||
OUTPUT_DIRECTORY =
|
|
||||||
OUTPUT_LANGUAGE = English
|
|
||||||
EXTRACT_ALL = YES
|
|
||||||
EXTRACT_PRIVATE = NO
|
|
||||||
EXTRACT_STATIC = NO
|
|
||||||
EXTRACT_LOCAL_CLASSES = YES
|
|
||||||
HIDE_UNDOC_MEMBERS = NO
|
|
||||||
HIDE_UNDOC_CLASSES = NO
|
|
||||||
BRIEF_MEMBER_DESC = YES
|
|
||||||
REPEAT_BRIEF = YES
|
|
||||||
ALWAYS_DETAILED_SEC = NO
|
|
||||||
INLINE_INHERITED_MEMB = NO
|
|
||||||
FULL_PATH_NAMES = NO
|
|
||||||
STRIP_FROM_PATH =
|
|
||||||
INTERNAL_DOCS = NO
|
|
||||||
STRIP_CODE_COMMENTS = YES
|
|
||||||
CASE_SENSE_NAMES = YES
|
|
||||||
SHORT_NAMES = NO
|
|
||||||
HIDE_SCOPE_NAMES = NO
|
|
||||||
VERBATIM_HEADERS = YES
|
|
||||||
SHOW_INCLUDE_FILES = YES
|
|
||||||
JAVADOC_AUTOBRIEF = NO
|
|
||||||
INHERIT_DOCS = YES
|
|
||||||
INLINE_INFO = YES
|
|
||||||
SORT_MEMBER_DOCS = NO
|
|
||||||
DISTRIBUTE_GROUP_DOC = NO
|
|
||||||
TAB_SIZE = 8
|
|
||||||
GENERATE_TODOLIST = YES
|
|
||||||
GENERATE_TESTLIST = YES
|
|
||||||
GENERATE_BUGLIST = YES
|
|
||||||
ALIASES =
|
|
||||||
ENABLED_SECTIONS =
|
|
||||||
MAX_INITIALIZER_LINES = 30
|
|
||||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
|
||||||
SHOW_USED_FILES = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to warning and progress messages
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
QUIET = YES
|
|
||||||
WARNINGS = YES
|
|
||||||
WARN_IF_UNDOCUMENTED = YES
|
|
||||||
WARN_FORMAT =
|
|
||||||
WARN_LOGFILE =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the input files
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
INPUT = ../src/tnl/
|
|
||||||
FILE_PATTERNS = *.c \
|
|
||||||
*.h
|
|
||||||
RECURSIVE = NO
|
|
||||||
EXCLUDE =
|
|
||||||
EXCLUDE_PATTERNS =
|
|
||||||
EXAMPLE_PATH =
|
|
||||||
EXAMPLE_PATTERNS =
|
|
||||||
EXAMPLE_RECURSIVE = NO
|
|
||||||
IMAGE_PATH =
|
|
||||||
INPUT_FILTER =
|
|
||||||
FILTER_SOURCE_FILES = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to source browsing
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SOURCE_BROWSER = NO
|
|
||||||
INLINE_SOURCES = NO
|
|
||||||
REFERENCED_BY_RELATION = YES
|
|
||||||
REFERENCES_RELATION = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the alphabetical class index
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ALPHABETICAL_INDEX = YES
|
|
||||||
COLS_IN_ALPHA_INDEX = 5
|
|
||||||
IGNORE_PREFIX =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the HTML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_HTML = YES
|
|
||||||
HTML_OUTPUT = tnl
|
|
||||||
HTML_HEADER = header.html
|
|
||||||
HTML_FOOTER =
|
|
||||||
HTML_STYLESHEET =
|
|
||||||
HTML_ALIGN_MEMBERS = YES
|
|
||||||
GENERATE_HTMLHELP = NO
|
|
||||||
GENERATE_CHI = NO
|
|
||||||
BINARY_TOC = NO
|
|
||||||
TOC_EXPAND = NO
|
|
||||||
DISABLE_INDEX = NO
|
|
||||||
ENUM_VALUES_PER_LINE = 4
|
|
||||||
GENERATE_TREEVIEW = NO
|
|
||||||
TREEVIEW_WIDTH = 250
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the LaTeX output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_LATEX = NO
|
|
||||||
LATEX_OUTPUT =
|
|
||||||
COMPACT_LATEX = NO
|
|
||||||
PAPER_TYPE = a4wide
|
|
||||||
EXTRA_PACKAGES =
|
|
||||||
LATEX_HEADER =
|
|
||||||
PDF_HYPERLINKS = NO
|
|
||||||
USE_PDFLATEX = NO
|
|
||||||
LATEX_BATCHMODE = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the RTF output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_RTF = NO
|
|
||||||
RTF_OUTPUT =
|
|
||||||
COMPACT_RTF = NO
|
|
||||||
RTF_HYPERLINKS = NO
|
|
||||||
RTF_STYLESHEET_FILE =
|
|
||||||
RTF_EXTENSIONS_FILE =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the man page output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_MAN = NO
|
|
||||||
MAN_OUTPUT =
|
|
||||||
MAN_EXTENSION =
|
|
||||||
MAN_LINKS = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the XML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_XML = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options for the AutoGen Definitions output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_AUTOGEN_DEF = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the preprocessor
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ENABLE_PREPROCESSING = YES
|
|
||||||
MACRO_EXPANSION = NO
|
|
||||||
EXPAND_ONLY_PREDEF = NO
|
|
||||||
SEARCH_INCLUDES = YES
|
|
||||||
INCLUDE_PATH =
|
|
||||||
INCLUDE_FILE_PATTERNS =
|
|
||||||
PREDEFINED =
|
|
||||||
EXPAND_AS_DEFINED =
|
|
||||||
SKIP_FUNCTION_MACROS = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::addtions related to external references
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
TAGFILES = tnl_dd.tag=../tnl \
|
|
||||||
core.tag=../core \
|
|
||||||
math.tag=../math \
|
|
||||||
swrast.tag=../swrast \
|
|
||||||
swrast_setup.tag=swrast_setup \
|
|
||||||
array_cache.tag=array_cache
|
|
||||||
GENERATE_TAGFILE = tnl.tag
|
|
||||||
ALLEXTERNALS = YES
|
|
||||||
PERL_PATH =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the dot tool
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
CLASS_DIAGRAMS = YES
|
|
||||||
HAVE_DOT = NO
|
|
||||||
CLASS_GRAPH = YES
|
|
||||||
COLLABORATION_GRAPH = YES
|
|
||||||
TEMPLATE_RELATIONS = YES
|
|
||||||
HIDE_UNDOC_RELATIONS = YES
|
|
||||||
INCLUDE_GRAPH = YES
|
|
||||||
INCLUDED_BY_GRAPH = YES
|
|
||||||
GRAPHICAL_HIERARCHY = YES
|
|
||||||
DOT_PATH =
|
|
||||||
DOTFILE_DIRS =
|
|
||||||
MAX_DOT_GRAPH_WIDTH = 1024
|
|
||||||
MAX_DOT_GRAPH_HEIGHT = 1024
|
|
||||||
GENERATE_LEGEND = YES
|
|
||||||
DOT_CLEANUP = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::addtions related to the search engine
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SEARCHENGINE = NO
|
|
||||||
CGI_NAME =
|
|
||||||
CGI_URL =
|
|
||||||
DOC_URL =
|
|
||||||
DOC_ABSPATH =
|
|
||||||
BIN_ABSPATH =
|
|
||||||
EXT_DOC_PATHS =
|
|
||||||
@@ -1,182 +0,0 @@
|
|||||||
# Doxyfile 0.1
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# General configuration options
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
PROJECT_NAME = "Mesa tnl_dd"
|
|
||||||
PROJECT_NUMBER = 4.1
|
|
||||||
OUTPUT_DIRECTORY =
|
|
||||||
OUTPUT_LANGUAGE = English
|
|
||||||
EXTRACT_ALL = YES
|
|
||||||
EXTRACT_PRIVATE = NO
|
|
||||||
EXTRACT_STATIC = NO
|
|
||||||
EXTRACT_LOCAL_CLASSES = YES
|
|
||||||
HIDE_UNDOC_MEMBERS = NO
|
|
||||||
HIDE_UNDOC_CLASSES = NO
|
|
||||||
BRIEF_MEMBER_DESC = YES
|
|
||||||
REPEAT_BRIEF = YES
|
|
||||||
ALWAYS_DETAILED_SEC = NO
|
|
||||||
INLINE_INHERITED_MEMB = NO
|
|
||||||
FULL_PATH_NAMES = NO
|
|
||||||
STRIP_FROM_PATH =
|
|
||||||
INTERNAL_DOCS = NO
|
|
||||||
STRIP_CODE_COMMENTS = YES
|
|
||||||
CASE_SENSE_NAMES = YES
|
|
||||||
SHORT_NAMES = NO
|
|
||||||
HIDE_SCOPE_NAMES = NO
|
|
||||||
VERBATIM_HEADERS = YES
|
|
||||||
SHOW_INCLUDE_FILES = YES
|
|
||||||
JAVADOC_AUTOBRIEF = NO
|
|
||||||
INHERIT_DOCS = YES
|
|
||||||
INLINE_INFO = NO
|
|
||||||
SORT_MEMBER_DOCS = NO
|
|
||||||
DISTRIBUTE_GROUP_DOC = NO
|
|
||||||
TAB_SIZE = 8
|
|
||||||
GENERATE_TODOLIST = YES
|
|
||||||
GENERATE_TESTLIST = YES
|
|
||||||
GENERATE_BUGLIST = YES
|
|
||||||
ALIASES =
|
|
||||||
ENABLED_SECTIONS =
|
|
||||||
MAX_INITIALIZER_LINES = 30
|
|
||||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
|
||||||
SHOW_USED_FILES = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to warning and progress messages
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
QUIET = YES
|
|
||||||
WARNINGS = YES
|
|
||||||
WARN_IF_UNDOCUMENTED = YES
|
|
||||||
WARN_FORMAT =
|
|
||||||
WARN_LOGFILE =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the input files
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
INPUT = ../src/tnl_dd/
|
|
||||||
FILE_PATTERNS = *.h
|
|
||||||
RECURSIVE = YES
|
|
||||||
EXCLUDE =
|
|
||||||
EXCLUDE_PATTERNS =
|
|
||||||
EXAMPLE_PATH =
|
|
||||||
EXAMPLE_PATTERNS =
|
|
||||||
EXAMPLE_RECURSIVE = NO
|
|
||||||
IMAGE_PATH =
|
|
||||||
INPUT_FILTER =
|
|
||||||
FILTER_SOURCE_FILES = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to source browsing
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SOURCE_BROWSER = NO
|
|
||||||
INLINE_SOURCES = NO
|
|
||||||
REFERENCED_BY_RELATION = YES
|
|
||||||
REFERENCES_RELATION = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the alphabetical class index
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ALPHABETICAL_INDEX = YES
|
|
||||||
COLS_IN_ALPHA_INDEX = 5
|
|
||||||
IGNORE_PREFIX =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the HTML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_HTML = YES
|
|
||||||
HTML_OUTPUT = tnl_dd
|
|
||||||
HTML_HEADER = header.html
|
|
||||||
HTML_FOOTER =
|
|
||||||
HTML_STYLESHEET =
|
|
||||||
HTML_ALIGN_MEMBERS = YES
|
|
||||||
GENERATE_HTMLHELP = NO
|
|
||||||
GENERATE_CHI = NO
|
|
||||||
BINARY_TOC = NO
|
|
||||||
TOC_EXPAND = NO
|
|
||||||
DISABLE_INDEX = NO
|
|
||||||
ENUM_VALUES_PER_LINE = 4
|
|
||||||
GENERATE_TREEVIEW = NO
|
|
||||||
TREEVIEW_WIDTH = 250
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the LaTeX output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_LATEX = NO
|
|
||||||
LATEX_OUTPUT =
|
|
||||||
COMPACT_LATEX = NO
|
|
||||||
PAPER_TYPE = a4wide
|
|
||||||
EXTRA_PACKAGES =
|
|
||||||
LATEX_HEADER =
|
|
||||||
PDF_HYPERLINKS = NO
|
|
||||||
USE_PDFLATEX = NO
|
|
||||||
LATEX_BATCHMODE = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the RTF output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_RTF = NO
|
|
||||||
RTF_OUTPUT =
|
|
||||||
COMPACT_RTF = NO
|
|
||||||
RTF_HYPERLINKS = NO
|
|
||||||
RTF_STYLESHEET_FILE =
|
|
||||||
RTF_EXTENSIONS_FILE =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the man page output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_MAN = NO
|
|
||||||
MAN_OUTPUT =
|
|
||||||
MAN_EXTENSION =
|
|
||||||
MAN_LINKS = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the XML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_XML = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options for the AutoGen Definitions output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_AUTOGEN_DEF = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the preprocessor
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ENABLE_PREPROCESSING = YES
|
|
||||||
MACRO_EXPANSION = NO
|
|
||||||
EXPAND_ONLY_PREDEF = NO
|
|
||||||
SEARCH_INCLUDES = YES
|
|
||||||
INCLUDE_PATH =
|
|
||||||
INCLUDE_FILE_PATTERNS =
|
|
||||||
PREDEFINED =
|
|
||||||
EXPAND_AS_DEFINED =
|
|
||||||
SKIP_FUNCTION_MACROS = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::addtions related to external references
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
TAGFILES = core.tag=../core \
|
|
||||||
math.tag=../math \
|
|
||||||
swrast.tag=../swrast \
|
|
||||||
swrast_setup.tag=../swrast_setup \
|
|
||||||
tnl.tag=../tnl \
|
|
||||||
array_cache.tag=array_cache
|
|
||||||
GENERATE_TAGFILE = tnl_dd.tag
|
|
||||||
ALLEXTERNALS = NO
|
|
||||||
PERL_PATH =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the dot tool
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
CLASS_DIAGRAMS = YES
|
|
||||||
HAVE_DOT = NO
|
|
||||||
CLASS_GRAPH = YES
|
|
||||||
COLLABORATION_GRAPH = YES
|
|
||||||
TEMPLATE_RELATIONS = YES
|
|
||||||
HIDE_UNDOC_RELATIONS = YES
|
|
||||||
INCLUDE_GRAPH = YES
|
|
||||||
INCLUDED_BY_GRAPH = YES
|
|
||||||
GRAPHICAL_HIERARCHY = YES
|
|
||||||
DOT_PATH =
|
|
||||||
DOTFILE_DIRS =
|
|
||||||
MAX_DOT_GRAPH_WIDTH = 1024
|
|
||||||
MAX_DOT_GRAPH_HEIGHT = 1024
|
|
||||||
GENERATE_LEGEND = YES
|
|
||||||
DOT_CLEANUP = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::addtions related to the search engine
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SEARCHENGINE = NO
|
|
||||||
CGI_NAME =
|
|
||||||
CGI_URL =
|
|
||||||
DOC_URL =
|
|
||||||
DOC_ABSPATH =
|
|
||||||
BIN_ABSPATH =
|
|
||||||
EXT_DOC_PATHS =
|
|
||||||
@@ -2,42 +2,33 @@
|
|||||||
|
|
||||||
GLincludedir = $(includedir)/GL
|
GLincludedir = $(includedir)/GL
|
||||||
|
|
||||||
INC_FX = fxmesa.h
|
|
||||||
INC_GGI = ggimesa.h
|
|
||||||
INC_OSMESA = osmesa.h
|
|
||||||
INC_SVGA = svgamesa.h
|
|
||||||
INC_X11 = glx.h glxext.h glx_mangle.h xmesa.h xmesa_x.h xmesa_xf86.h
|
|
||||||
INC_GLUT = glut.h glutf90.h
|
|
||||||
|
|
||||||
if HAVE_FX
|
if HAVE_FX
|
||||||
sel_inc_fx = $(INC_FX)
|
INC_FX = fxmesa.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if HAVE_GGI
|
if HAVE_GGI
|
||||||
sel_inc_ggi = $(INC_GGI)
|
INC_GGI = ggimesa.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if HAVE_OSMESA
|
if HAVE_OSMESA
|
||||||
sel_inc_osmesa = $(INC_OSMESA)
|
INC_OSMESA = osmesa.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if HAVE_SVGA
|
if HAVE_SVGA
|
||||||
sel_inc_svga = $(INC_SVGA)
|
INC_SVGA = svgamesa.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if HAVE_X11
|
if HAVE_X11
|
||||||
sel_inc_x11 = $(INC_X11)
|
INC_X11 = glx.h glx_mangle.h xmesa.h xmesa_x.h xmesa_xf86.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if NEED_GLUT
|
if NEED_GLUT
|
||||||
sel_inc_glut = $(INC_GLUT)
|
INC_GLUT = glut.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
EXTRA_HEADERS = amesa.h dosmesa.h foomesa.h glut_h.dja mesa_wgl.h mglmesa.h \
|
EXTRA_DIST = fxmesa.h ggimesa.h osmesa.h svgamesa.h \
|
||||||
vms_x_fix.h wmesa.h \
|
glx.h glx_mangle.h xmesa.h xmesa_x.h xmesa_xf86.h
|
||||||
|
|
||||||
|
GLinclude_HEADERS = gl.h gl_mangle.h glu.h glu_mangle.h \
|
||||||
$(INC_FX) $(INC_GGI) $(INC_OSMESA) $(INC_SVGA) $(INC_X11) $(INC_GLUT)
|
$(INC_FX) $(INC_GGI) $(INC_OSMESA) $(INC_SVGA) $(INC_X11) $(INC_GLUT)
|
||||||
|
|
||||||
GLinclude_HEADERS = gl.h glext.h gl_mangle.h glu.h glu_mangle.h \
|
|
||||||
$(sel_inc_fx) $(sel_inc_ggi) $(sel_inc_osmesa) $(sel_inc_svga) \
|
|
||||||
$(sel_inc_x11) $(sel_inc_glut)
|
|
||||||
include $(top_srcdir)/common_rules.make
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
/* $Id: amesa.h,v 1.2 2000/02/09 19:03:28 brianp Exp $ */
|
/* $Id: amesa.h,v 1.1.1.1.2.1 2000/02/09 18:53:54 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 3.3
|
* Version: 3.2
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
* Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
||||||
*
|
*
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#define AMESA_MAJOR_VERSION 3
|
#define AMESA_MAJOR_VERSION 3
|
||||||
#define AMESA_MINOR_VERSION 3
|
#define AMESA_MINOR_VERSION 2
|
||||||
|
|
||||||
|
|
||||||
typedef struct amesa_visual *AMesaVisual;
|
typedef struct amesa_visual *AMesaVisual;
|
||||||
|
|||||||
@@ -1,77 +0,0 @@
|
|||||||
/*
|
|
||||||
* Mesa 3-D graphics library
|
|
||||||
* Version: 4.0
|
|
||||||
*
|
|
||||||
* Copyright (C) 1999 Brian Paul All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
* and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is 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 Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS 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
|
|
||||||
* BRIAN PAUL 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* DOS/DJGPP device driver v1.0 for Mesa 4.0
|
|
||||||
*
|
|
||||||
* Copyright (C) 2002 - Borca Daniel
|
|
||||||
* Email : dborca@yahoo.com
|
|
||||||
* Web : http://www.geocities.com/dborca
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef DMESA_included
|
|
||||||
#define DMESA_included
|
|
||||||
|
|
||||||
#define DMESA_MAJOR_VERSION 4
|
|
||||||
#define DMESA_MINOR_VERSION 0
|
|
||||||
|
|
||||||
typedef struct dmesa_context *DMesaContext;
|
|
||||||
typedef struct dmesa_visual *DMesaVisual;
|
|
||||||
typedef struct dmesa_buffer *DMesaBuffer;
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
DMesaVisual DMesaCreateVisual (GLint width, GLint height, GLint colDepth,
|
|
||||||
GLboolean dbFlag, GLint depthSize,
|
|
||||||
GLint stencilSize,
|
|
||||||
GLint accumSize);
|
|
||||||
|
|
||||||
void DMesaDestroyVisual (DMesaVisual v);
|
|
||||||
|
|
||||||
DMesaBuffer DMesaCreateBuffer (DMesaVisual visual,
|
|
||||||
GLint xpos, GLint ypos,
|
|
||||||
GLint width, GLint height);
|
|
||||||
|
|
||||||
void DMesaDestroyBuffer (DMesaBuffer b);
|
|
||||||
|
|
||||||
DMesaContext DMesaCreateContext (DMesaVisual visual, DMesaContext share);
|
|
||||||
|
|
||||||
void DMesaDestroyContext (DMesaContext c);
|
|
||||||
|
|
||||||
GLboolean DMesaViewport (DMesaBuffer b,
|
|
||||||
GLint xpos, GLint ypos,
|
|
||||||
GLint width, GLint height);
|
|
||||||
|
|
||||||
GLboolean DMesaMakeCurrent (DMesaContext c, DMesaBuffer b);
|
|
||||||
|
|
||||||
void DMesaSwapBuffers (DMesaBuffer b);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,23 +1,27 @@
|
|||||||
/* $Id: fxmesa.h,v 1.4 2001/09/23 16:06:13 brianp Exp $ */
|
/* $Id: fxmesa.h,v 1.1.1.1.2.2 2000/02/09 18:53:55 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 4.0
|
* Version: 3.2
|
||||||
* Copyright (C) 1995-2001 Brian Paul
|
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
*
|
||||||
* This library is distributed in the hope that it will be useful,
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
* to deal in the Software without restriction, including without limitation
|
||||||
* Library General Public License for more details.
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Library General Public
|
* The above copyright notice and this permission notice shall be included
|
||||||
* License along with this library; if not, write to the Free
|
* in all copies or substantial portions of the Software.
|
||||||
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
*
|
||||||
|
* THE SOFTWARE IS 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
|
||||||
|
* BRIAN PAUL 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -40,8 +44,8 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define FXMESA_MAJOR_VERSION 4
|
#define FXMESA_MAJOR_VERSION 3
|
||||||
#define FXMESA_MINOR_VERSION 0
|
#define FXMESA_MINOR_VERSION 2
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
/* $Id: ggimesa.h,v 1.4 2002/06/10 15:16:44 brianp Exp $ */
|
/* $Id: ggimesa.h,v 1.2.2.1 2000/02/09 18:53:55 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library GGI bindings (GGIGL [giggle])
|
* Mesa 3-D graphics library
|
||||||
* Version: 4.0
|
* Version: 3.2
|
||||||
* Copyright (C) 1995-2000 Brian Paul
|
* Copyright (C) 1995-1998 Brian Paul
|
||||||
* Copyright (C) 1998 Uwe Maurer
|
* Copyright (C) 1998 Uwe Maurer
|
||||||
* Copyrigth (C) 2001 Filip Spacek
|
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Library General Public
|
* modify it under the terms of the GNU Library General Public
|
||||||
@@ -26,59 +25,34 @@
|
|||||||
#ifndef GGIMESA_H
|
#ifndef GGIMESA_H
|
||||||
#define GGIMESA_H
|
#define GGIMESA_H
|
||||||
|
|
||||||
#define GGIMESA_MAJOR_VERSION 4
|
|
||||||
#define GGIMESA_MINOR_VERSION 0
|
#define GGIMESA_MAJOR_VERSION 3
|
||||||
|
#define GGIMESA_MINOR_VERSION 2
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <ggi/ggi.h>
|
|
||||||
#include "GL/gl.h"
|
#include "GL/gl.h"
|
||||||
|
|
||||||
typedef struct ggi_mesa_context *ggi_mesa_context_t;
|
|
||||||
|
|
||||||
/*
|
typedef struct ggi_mesa_context *GGIMesaContext;
|
||||||
* Initialize Mesa GGI extension
|
|
||||||
*/
|
|
||||||
int ggiMesaInit(void);
|
|
||||||
/*
|
|
||||||
* Clean up Mesa GGI exension
|
|
||||||
*/
|
|
||||||
int ggiMesaExit(void);
|
|
||||||
|
|
||||||
/*
|
#include <ggi/ggi.h>
|
||||||
* Attach Mesa GGI extension to the visual 'vis'
|
|
||||||
*/
|
|
||||||
int ggiMesaAttach(ggi_visual_t vis);
|
|
||||||
/*
|
|
||||||
* Detach Mesa GGI extension from the visual 'vis'
|
|
||||||
*/
|
|
||||||
int ggiMesaDetach(ggi_visual_t vis);
|
|
||||||
|
|
||||||
int ggiMesaExtendVisual(ggi_visual_t vis, GLboolean alpha_flag,
|
extern GGIMesaContext GGIMesaCreateContext(void);
|
||||||
GLboolean stereo_flag, GLint depth_size,
|
|
||||||
GLint stencil_size, GLint accum_red_size,
|
|
||||||
GLint accum_green_size, GLint accum_blue_size,
|
|
||||||
GLint accum_alpha_size, GLint num_samples);
|
|
||||||
|
|
||||||
/*
|
extern void GGIMesaDestroyContext(GGIMesaContext ctx);
|
||||||
* Create a new context capable of displaying on the visual vis.
|
|
||||||
*/
|
|
||||||
ggi_mesa_context_t ggiMesaCreateContext(ggi_visual_t vis);
|
|
||||||
/*
|
|
||||||
* Destroy the context 'ctx'
|
|
||||||
*/
|
|
||||||
void ggiMesaDestroyContext(ggi_mesa_context_t ctx);
|
|
||||||
|
|
||||||
/*
|
extern void GGIMesaMakeCurrent(GGIMesaContext ctx);
|
||||||
* Make context 'ctx' the current context and bind it to visual 'vis'.
|
|
||||||
* Note that the context must have been created with respect to that visual.
|
|
||||||
*/
|
|
||||||
void ggiMesaMakeCurrent(ggi_mesa_context_t ctx, ggi_visual_t vis);
|
|
||||||
|
|
||||||
void ggiMesaSwapBuffers(void);
|
extern GGIMesaContext GGIMesaGetCurrentContext(void);
|
||||||
|
|
||||||
|
extern void GGIMesaSwapBuffers(void);
|
||||||
|
|
||||||
|
extern int GGIMesaSetVisual(GGIMesaContext ctx, ggi_visual_t vis,
|
||||||
|
GLboolean rgb_flag, GLboolean db_flag);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
3077
include/GL/gl.h
3077
include/GL/gl.h
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
5024
include/GL/glext.h
5024
include/GL/glext.h
File diff suppressed because it is too large
Load Diff
802
include/GL/glu.h
802
include/GL/glu.h
@@ -1,335 +1,515 @@
|
|||||||
/*
|
/* $Id: glu.h,v 1.14.2.2 2000/07/11 01:45:56 brianp Exp $ */
|
||||||
** License Applicability. Except to the extent portions of this file are
|
|
||||||
** made subject to an alternative license as permitted in the SGI Free
|
/*
|
||||||
** Software License B, Version 1.1 (the "License"), the contents of this
|
* Mesa 3-D graphics library
|
||||||
** file are subject only to the provisions of the License. You may not use
|
* Version: 3.2.1
|
||||||
** this file except in compliance with the License. You may obtain a copy
|
* Copyright (C) 1995-2000 Brian Paul
|
||||||
** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
|
*
|
||||||
** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
|
* This library is free software; you can redistribute it and/or
|
||||||
**
|
* modify it under the terms of the GNU Library General Public
|
||||||
** http://oss.sgi.com/projects/FreeB
|
* License as published by the Free Software Foundation; either
|
||||||
**
|
* version 2 of the License, or (at your option) any later version.
|
||||||
** Note that, as provided in the License, the Software is distributed on an
|
*
|
||||||
** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
|
* This library is distributed in the hope that it will be useful,
|
||||||
** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
|
* Library General Public License for more details.
|
||||||
**
|
*
|
||||||
** Original Code. The Original Code is: OpenGL Sample Implementation,
|
* You should have received a copy of the GNU Library General Public
|
||||||
** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
|
* License along with this library; if not, write to the Free
|
||||||
** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
|
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
** Copyright in any portions created by third parties is as indicated
|
*/
|
||||||
** elsewhere herein. All Rights Reserved.
|
|
||||||
**
|
|
||||||
** Additional Notice Provisions: This software was created using the
|
#ifndef GLU_H
|
||||||
** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
|
#define GLU_H
|
||||||
** not been independently verified as being compliant with the OpenGL(R)
|
|
||||||
** version 1.2.1 Specification.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __glu_h__
|
|
||||||
#define __glu_h__
|
|
||||||
|
|
||||||
#if defined(USE_MGL_NAMESPACE)
|
#if defined(USE_MGL_NAMESPACE)
|
||||||
#include "glu_mangle.h"
|
#include "glu_mangle.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <GL/gl.h>
|
|
||||||
|
|
||||||
#ifndef GLAPIENTRY
|
|
||||||
#define GLAPIENTRY
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLAPI
|
|
||||||
#define GLAPI
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*************************************************************/
|
|
||||||
|
|
||||||
/* Extensions */
|
#include "GL/gl.h"
|
||||||
#define GLU_EXT_object_space_tess 1
|
|
||||||
#define GLU_EXT_nurbs_tessellator 1
|
|
||||||
|
|
||||||
/* Boolean */
|
/* to facilitate clean DLL building ... */
|
||||||
#define GLU_FALSE 0
|
#if !defined(OPENSTEP) && (defined(__WIN32__) || defined(__CYGWIN32__))
|
||||||
#define GLU_TRUE 1
|
# if defined(_MSC_VER) && defined(BUILD_GLU32) /* tag specify we're building mesa as a DLL */
|
||||||
|
# define GLUAPI __declspec(dllexport)
|
||||||
/* Version */
|
# elif defined(_MSC_VER) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
|
||||||
#define GLU_VERSION_1_1 1
|
# define GLUAPI __declspec(dllimport)
|
||||||
#define GLU_VERSION_1_2 1
|
# else /* for use with static link lib build of Win32 edition only */
|
||||||
#define GLU_VERSION_1_3 1
|
# define GLUAPI extern
|
||||||
|
# endif /* _STATIC_MESA support */
|
||||||
/* StringName */
|
|
||||||
#define GLU_VERSION 100800
|
|
||||||
#define GLU_EXTENSIONS 100801
|
|
||||||
|
|
||||||
/* ErrorCode */
|
|
||||||
#define GLU_INVALID_ENUM 100900
|
|
||||||
#define GLU_INVALID_VALUE 100901
|
|
||||||
#define GLU_OUT_OF_MEMORY 100902
|
|
||||||
#define GLU_INVALID_OPERATION 100904
|
|
||||||
|
|
||||||
/* NurbsDisplay */
|
|
||||||
/* GLU_FILL */
|
|
||||||
#define GLU_OUTLINE_POLYGON 100240
|
|
||||||
#define GLU_OUTLINE_PATCH 100241
|
|
||||||
|
|
||||||
/* NurbsCallback */
|
|
||||||
#define GLU_NURBS_ERROR 100103
|
|
||||||
#define GLU_ERROR 100103
|
|
||||||
#define GLU_NURBS_BEGIN 100164
|
|
||||||
#define GLU_NURBS_BEGIN_EXT 100164
|
|
||||||
#define GLU_NURBS_VERTEX 100165
|
|
||||||
#define GLU_NURBS_VERTEX_EXT 100165
|
|
||||||
#define GLU_NURBS_NORMAL 100166
|
|
||||||
#define GLU_NURBS_NORMAL_EXT 100166
|
|
||||||
#define GLU_NURBS_COLOR 100167
|
|
||||||
#define GLU_NURBS_COLOR_EXT 100167
|
|
||||||
#define GLU_NURBS_TEXTURE_COORD 100168
|
|
||||||
#define GLU_NURBS_TEX_COORD_EXT 100168
|
|
||||||
#define GLU_NURBS_END 100169
|
|
||||||
#define GLU_NURBS_END_EXT 100169
|
|
||||||
#define GLU_NURBS_BEGIN_DATA 100170
|
|
||||||
#define GLU_NURBS_BEGIN_DATA_EXT 100170
|
|
||||||
#define GLU_NURBS_VERTEX_DATA 100171
|
|
||||||
#define GLU_NURBS_VERTEX_DATA_EXT 100171
|
|
||||||
#define GLU_NURBS_NORMAL_DATA 100172
|
|
||||||
#define GLU_NURBS_NORMAL_DATA_EXT 100172
|
|
||||||
#define GLU_NURBS_COLOR_DATA 100173
|
|
||||||
#define GLU_NURBS_COLOR_DATA_EXT 100173
|
|
||||||
#define GLU_NURBS_TEXTURE_COORD_DATA 100174
|
|
||||||
#define GLU_NURBS_TEX_COORD_DATA_EXT 100174
|
|
||||||
#define GLU_NURBS_END_DATA 100175
|
|
||||||
#define GLU_NURBS_END_DATA_EXT 100175
|
|
||||||
|
|
||||||
/* NurbsError */
|
|
||||||
#define GLU_NURBS_ERROR1 100251
|
|
||||||
#define GLU_NURBS_ERROR2 100252
|
|
||||||
#define GLU_NURBS_ERROR3 100253
|
|
||||||
#define GLU_NURBS_ERROR4 100254
|
|
||||||
#define GLU_NURBS_ERROR5 100255
|
|
||||||
#define GLU_NURBS_ERROR6 100256
|
|
||||||
#define GLU_NURBS_ERROR7 100257
|
|
||||||
#define GLU_NURBS_ERROR8 100258
|
|
||||||
#define GLU_NURBS_ERROR9 100259
|
|
||||||
#define GLU_NURBS_ERROR10 100260
|
|
||||||
#define GLU_NURBS_ERROR11 100261
|
|
||||||
#define GLU_NURBS_ERROR12 100262
|
|
||||||
#define GLU_NURBS_ERROR13 100263
|
|
||||||
#define GLU_NURBS_ERROR14 100264
|
|
||||||
#define GLU_NURBS_ERROR15 100265
|
|
||||||
#define GLU_NURBS_ERROR16 100266
|
|
||||||
#define GLU_NURBS_ERROR17 100267
|
|
||||||
#define GLU_NURBS_ERROR18 100268
|
|
||||||
#define GLU_NURBS_ERROR19 100269
|
|
||||||
#define GLU_NURBS_ERROR20 100270
|
|
||||||
#define GLU_NURBS_ERROR21 100271
|
|
||||||
#define GLU_NURBS_ERROR22 100272
|
|
||||||
#define GLU_NURBS_ERROR23 100273
|
|
||||||
#define GLU_NURBS_ERROR24 100274
|
|
||||||
#define GLU_NURBS_ERROR25 100275
|
|
||||||
#define GLU_NURBS_ERROR26 100276
|
|
||||||
#define GLU_NURBS_ERROR27 100277
|
|
||||||
#define GLU_NURBS_ERROR28 100278
|
|
||||||
#define GLU_NURBS_ERROR29 100279
|
|
||||||
#define GLU_NURBS_ERROR30 100280
|
|
||||||
#define GLU_NURBS_ERROR31 100281
|
|
||||||
#define GLU_NURBS_ERROR32 100282
|
|
||||||
#define GLU_NURBS_ERROR33 100283
|
|
||||||
#define GLU_NURBS_ERROR34 100284
|
|
||||||
#define GLU_NURBS_ERROR35 100285
|
|
||||||
#define GLU_NURBS_ERROR36 100286
|
|
||||||
#define GLU_NURBS_ERROR37 100287
|
|
||||||
|
|
||||||
/* NurbsProperty */
|
|
||||||
#define GLU_AUTO_LOAD_MATRIX 100200
|
|
||||||
#define GLU_CULLING 100201
|
|
||||||
#define GLU_SAMPLING_TOLERANCE 100203
|
|
||||||
#define GLU_DISPLAY_MODE 100204
|
|
||||||
#define GLU_PARAMETRIC_TOLERANCE 100202
|
|
||||||
#define GLU_SAMPLING_METHOD 100205
|
|
||||||
#define GLU_U_STEP 100206
|
|
||||||
#define GLU_V_STEP 100207
|
|
||||||
#define GLU_NURBS_MODE 100160
|
|
||||||
#define GLU_NURBS_MODE_EXT 100160
|
|
||||||
#define GLU_NURBS_TESSELLATOR 100161
|
|
||||||
#define GLU_NURBS_TESSELLATOR_EXT 100161
|
|
||||||
#define GLU_NURBS_RENDERER 100162
|
|
||||||
#define GLU_NURBS_RENDERER_EXT 100162
|
|
||||||
|
|
||||||
/* NurbsSampling */
|
|
||||||
#define GLU_OBJECT_PARAMETRIC_ERROR 100208
|
|
||||||
#define GLU_OBJECT_PARAMETRIC_ERROR_EXT 100208
|
|
||||||
#define GLU_OBJECT_PATH_LENGTH 100209
|
|
||||||
#define GLU_OBJECT_PATH_LENGTH_EXT 100209
|
|
||||||
#define GLU_PATH_LENGTH 100215
|
|
||||||
#define GLU_PARAMETRIC_ERROR 100216
|
|
||||||
#define GLU_DOMAIN_DISTANCE 100217
|
|
||||||
|
|
||||||
/* NurbsTrim */
|
|
||||||
#define GLU_MAP1_TRIM_2 100210
|
|
||||||
#define GLU_MAP1_TRIM_3 100211
|
|
||||||
|
|
||||||
/* QuadricDrawStyle */
|
|
||||||
#define GLU_POINT 100010
|
|
||||||
#define GLU_LINE 100011
|
|
||||||
#define GLU_FILL 100012
|
|
||||||
#define GLU_SILHOUETTE 100013
|
|
||||||
|
|
||||||
/* QuadricCallback */
|
|
||||||
/* GLU_ERROR */
|
|
||||||
|
|
||||||
/* QuadricNormal */
|
|
||||||
#define GLU_SMOOTH 100000
|
|
||||||
#define GLU_FLAT 100001
|
|
||||||
#define GLU_NONE 100002
|
|
||||||
|
|
||||||
/* QuadricOrientation */
|
|
||||||
#define GLU_OUTSIDE 100020
|
|
||||||
#define GLU_INSIDE 100021
|
|
||||||
|
|
||||||
/* TessCallback */
|
|
||||||
#define GLU_TESS_BEGIN 100100
|
|
||||||
#define GLU_BEGIN 100100
|
|
||||||
#define GLU_TESS_VERTEX 100101
|
|
||||||
#define GLU_VERTEX 100101
|
|
||||||
#define GLU_TESS_END 100102
|
|
||||||
#define GLU_END 100102
|
|
||||||
#define GLU_TESS_ERROR 100103
|
|
||||||
#define GLU_TESS_EDGE_FLAG 100104
|
|
||||||
#define GLU_EDGE_FLAG 100104
|
|
||||||
#define GLU_TESS_COMBINE 100105
|
|
||||||
#define GLU_TESS_BEGIN_DATA 100106
|
|
||||||
#define GLU_TESS_VERTEX_DATA 100107
|
|
||||||
#define GLU_TESS_END_DATA 100108
|
|
||||||
#define GLU_TESS_ERROR_DATA 100109
|
|
||||||
#define GLU_TESS_EDGE_FLAG_DATA 100110
|
|
||||||
#define GLU_TESS_COMBINE_DATA 100111
|
|
||||||
|
|
||||||
/* TessContour */
|
|
||||||
#define GLU_CW 100120
|
|
||||||
#define GLU_CCW 100121
|
|
||||||
#define GLU_INTERIOR 100122
|
|
||||||
#define GLU_EXTERIOR 100123
|
|
||||||
#define GLU_UNKNOWN 100124
|
|
||||||
|
|
||||||
/* TessProperty */
|
|
||||||
#define GLU_TESS_WINDING_RULE 100140
|
|
||||||
#define GLU_TESS_BOUNDARY_ONLY 100141
|
|
||||||
#define GLU_TESS_TOLERANCE 100142
|
|
||||||
|
|
||||||
/* TessError */
|
|
||||||
#define GLU_TESS_ERROR1 100151
|
|
||||||
#define GLU_TESS_ERROR2 100152
|
|
||||||
#define GLU_TESS_ERROR3 100153
|
|
||||||
#define GLU_TESS_ERROR4 100154
|
|
||||||
#define GLU_TESS_ERROR5 100155
|
|
||||||
#define GLU_TESS_ERROR6 100156
|
|
||||||
#define GLU_TESS_ERROR7 100157
|
|
||||||
#define GLU_TESS_ERROR8 100158
|
|
||||||
#define GLU_TESS_MISSING_BEGIN_POLYGON 100151
|
|
||||||
#define GLU_TESS_MISSING_BEGIN_CONTOUR 100152
|
|
||||||
#define GLU_TESS_MISSING_END_POLYGON 100153
|
|
||||||
#define GLU_TESS_MISSING_END_CONTOUR 100154
|
|
||||||
#define GLU_TESS_COORD_TOO_LARGE 100155
|
|
||||||
#define GLU_TESS_NEED_COMBINE_CALLBACK 100156
|
|
||||||
|
|
||||||
/* TessWinding */
|
|
||||||
#define GLU_TESS_WINDING_ODD 100130
|
|
||||||
#define GLU_TESS_WINDING_NONZERO 100131
|
|
||||||
#define GLU_TESS_WINDING_POSITIVE 100132
|
|
||||||
#define GLU_TESS_WINDING_NEGATIVE 100133
|
|
||||||
#define GLU_TESS_WINDING_ABS_GEQ_TWO 100134
|
|
||||||
|
|
||||||
/*************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
class GLUnurbs;
|
|
||||||
class GLUquadric;
|
|
||||||
class GLUtesselator;
|
|
||||||
#else
|
#else
|
||||||
typedef struct GLUnurbs GLUnurbs;
|
# define GLUAPI extern
|
||||||
typedef struct GLUquadric GLUquadric;
|
#endif /* WIN32 / CYGWIN32 bracket */
|
||||||
typedef struct GLUtesselator GLUtesselator;
|
|
||||||
|
#ifdef macintosh
|
||||||
|
#pragma enumsalwaysint on
|
||||||
|
#if PRAGMA_IMPORT_SUPPORTED
|
||||||
|
#pragma import on
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef GLUnurbs GLUnurbsObj;
|
#ifndef GLUAPI
|
||||||
typedef GLUquadric GLUquadricObj;
|
#define GLUAPI
|
||||||
typedef GLUtesselator GLUtesselatorObj;
|
#endif
|
||||||
typedef GLUtesselator GLUtriangulatorObj;
|
|
||||||
|
|
||||||
#define GLU_TESS_MAX_COORD 1.0e150
|
#ifndef GLAPIENTRY
|
||||||
|
#define GLAPIENTRY
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Internal convenience typedefs */
|
#ifndef GLCALLBACK
|
||||||
typedef void (GLAPIENTRY *_GLUfuncptr)();
|
#define GLCALLBACK
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define GLU_VERSION_1_1 1
|
||||||
|
|
||||||
|
|
||||||
|
#define GLU_TRUE GL_TRUE
|
||||||
|
#define GLU_FALSE GL_FALSE
|
||||||
|
|
||||||
|
|
||||||
|
enum {
|
||||||
|
/* Normal vectors */
|
||||||
|
GLU_SMOOTH = 100000,
|
||||||
|
GLU_FLAT = 100001,
|
||||||
|
GLU_NONE = 100002,
|
||||||
|
|
||||||
|
/* Quadric draw styles */
|
||||||
|
GLU_POINT = 100010,
|
||||||
|
GLU_LINE = 100011,
|
||||||
|
GLU_FILL = 100012,
|
||||||
|
GLU_SILHOUETTE = 100013,
|
||||||
|
|
||||||
|
/* Quadric orientation */
|
||||||
|
GLU_OUTSIDE = 100020,
|
||||||
|
GLU_INSIDE = 100021,
|
||||||
|
|
||||||
|
/* Tessellator */
|
||||||
|
GLU_TESS_BEGIN = 100100,
|
||||||
|
GLU_TESS_VERTEX = 100101,
|
||||||
|
GLU_TESS_END = 100102,
|
||||||
|
GLU_TESS_ERROR = 100103,
|
||||||
|
GLU_TESS_EDGE_FLAG = 100104,
|
||||||
|
GLU_TESS_COMBINE = 100105,
|
||||||
|
|
||||||
|
GLU_TESS_BEGIN_DATA = 100106,
|
||||||
|
GLU_TESS_VERTEX_DATA = 100107,
|
||||||
|
GLU_TESS_END_DATA = 100108,
|
||||||
|
GLU_TESS_ERROR_DATA = 100109,
|
||||||
|
GLU_TESS_EDGE_FLAG_DATA = 100110,
|
||||||
|
GLU_TESS_COMBINE_DATA = 100111,
|
||||||
|
|
||||||
|
/* Winding rules */
|
||||||
|
GLU_TESS_WINDING_ODD = 100130,
|
||||||
|
GLU_TESS_WINDING_NONZERO = 100131,
|
||||||
|
GLU_TESS_WINDING_POSITIVE = 100132,
|
||||||
|
GLU_TESS_WINDING_NEGATIVE = 100133,
|
||||||
|
GLU_TESS_WINDING_ABS_GEQ_TWO = 100134,
|
||||||
|
|
||||||
|
/* Tessellation properties */
|
||||||
|
GLU_TESS_WINDING_RULE = 100140,
|
||||||
|
GLU_TESS_BOUNDARY_ONLY = 100141,
|
||||||
|
GLU_TESS_TOLERANCE = 100142,
|
||||||
|
|
||||||
|
/* Tessellation errors */
|
||||||
|
GLU_TESS_ERROR1 = 100151, /* Missing gluBeginPolygon */
|
||||||
|
GLU_TESS_ERROR2 = 100152, /* Missing gluBeginContour */
|
||||||
|
GLU_TESS_ERROR3 = 100153, /* Missing gluEndPolygon */
|
||||||
|
GLU_TESS_ERROR4 = 100154, /* Missing gluEndContour */
|
||||||
|
GLU_TESS_ERROR5 = 100155, /* */
|
||||||
|
GLU_TESS_ERROR6 = 100156, /* */
|
||||||
|
GLU_TESS_ERROR7 = 100157, /* */
|
||||||
|
GLU_TESS_ERROR8 = 100158, /* */
|
||||||
|
GLU_TESS_ERROR9 = 100159, /* not coplanar contours */
|
||||||
|
|
||||||
|
/* NURBS */
|
||||||
|
GLU_AUTO_LOAD_MATRIX = 100200,
|
||||||
|
GLU_CULLING = 100201,
|
||||||
|
GLU_PARAMETRIC_TOLERANCE= 100202,
|
||||||
|
GLU_SAMPLING_TOLERANCE = 100203,
|
||||||
|
GLU_DISPLAY_MODE = 100204,
|
||||||
|
GLU_SAMPLING_METHOD = 100205,
|
||||||
|
GLU_U_STEP = 100206,
|
||||||
|
GLU_V_STEP = 100207,
|
||||||
|
|
||||||
|
GLU_PATH_LENGTH = 100215,
|
||||||
|
GLU_PARAMETRIC_ERROR = 100216,
|
||||||
|
GLU_DOMAIN_DISTANCE = 100217,
|
||||||
|
|
||||||
|
GLU_MAP1_TRIM_2 = 100210,
|
||||||
|
GLU_MAP1_TRIM_3 = 100211,
|
||||||
|
|
||||||
|
GLU_OUTLINE_POLYGON = 100240,
|
||||||
|
GLU_OUTLINE_PATCH = 100241,
|
||||||
|
|
||||||
|
GLU_NURBS_ERROR1 = 100251, /* spline order un-supported */
|
||||||
|
GLU_NURBS_ERROR2 = 100252, /* too few knots */
|
||||||
|
GLU_NURBS_ERROR3 = 100253, /* valid knot range is empty */
|
||||||
|
GLU_NURBS_ERROR4 = 100254, /* decreasing knot sequence */
|
||||||
|
GLU_NURBS_ERROR5 = 100255, /* knot multiplicity > spline order */
|
||||||
|
GLU_NURBS_ERROR6 = 100256, /* endcurve() must follow bgncurve() */
|
||||||
|
GLU_NURBS_ERROR7 = 100257, /* bgncurve() must precede endcurve() */
|
||||||
|
GLU_NURBS_ERROR8 = 100258, /* ctrlarray or knot vector is NULL */
|
||||||
|
GLU_NURBS_ERROR9 = 100259, /* can't draw pwlcurves */
|
||||||
|
GLU_NURBS_ERROR10 = 100260, /* missing gluNurbsCurve() */
|
||||||
|
GLU_NURBS_ERROR11 = 100261, /* missing gluNurbsSurface() */
|
||||||
|
GLU_NURBS_ERROR12 = 100262, /* endtrim() must precede endsurface() */
|
||||||
|
GLU_NURBS_ERROR13 = 100263, /* bgnsurface() must precede endsurface() */
|
||||||
|
GLU_NURBS_ERROR14 = 100264, /* curve of improper type passed as trim curve */
|
||||||
|
GLU_NURBS_ERROR15 = 100265, /* bgnsurface() must precede bgntrim() */
|
||||||
|
GLU_NURBS_ERROR16 = 100266, /* endtrim() must follow bgntrim() */
|
||||||
|
GLU_NURBS_ERROR17 = 100267, /* bgntrim() must precede endtrim()*/
|
||||||
|
GLU_NURBS_ERROR18 = 100268, /* invalid or missing trim curve*/
|
||||||
|
GLU_NURBS_ERROR19 = 100269, /* bgntrim() must precede pwlcurve() */
|
||||||
|
GLU_NURBS_ERROR20 = 100270, /* pwlcurve referenced twice*/
|
||||||
|
GLU_NURBS_ERROR21 = 100271, /* pwlcurve and nurbscurve mixed */
|
||||||
|
GLU_NURBS_ERROR22 = 100272, /* improper usage of trim data type */
|
||||||
|
GLU_NURBS_ERROR23 = 100273, /* nurbscurve referenced twice */
|
||||||
|
GLU_NURBS_ERROR24 = 100274, /* nurbscurve and pwlcurve mixed */
|
||||||
|
GLU_NURBS_ERROR25 = 100275, /* nurbssurface referenced twice */
|
||||||
|
GLU_NURBS_ERROR26 = 100276, /* invalid property */
|
||||||
|
GLU_NURBS_ERROR27 = 100277, /* endsurface() must follow bgnsurface() */
|
||||||
|
GLU_NURBS_ERROR28 = 100278, /* intersecting or misoriented trim curves */
|
||||||
|
GLU_NURBS_ERROR29 = 100279, /* intersecting trim curves */
|
||||||
|
GLU_NURBS_ERROR30 = 100280, /* UNUSED */
|
||||||
|
GLU_NURBS_ERROR31 = 100281, /* unconnected trim curves */
|
||||||
|
GLU_NURBS_ERROR32 = 100282, /* unknown knot error */
|
||||||
|
GLU_NURBS_ERROR33 = 100283, /* negative vertex count encountered */
|
||||||
|
GLU_NURBS_ERROR34 = 100284, /* negative byte-stride */
|
||||||
|
GLU_NURBS_ERROR35 = 100285, /* unknown type descriptor */
|
||||||
|
GLU_NURBS_ERROR36 = 100286, /* null control point reference */
|
||||||
|
GLU_NURBS_ERROR37 = 100287, /* duplicate point on pwlcurve */
|
||||||
|
|
||||||
|
/* Errors */
|
||||||
|
GLU_INVALID_ENUM = 100900,
|
||||||
|
GLU_INVALID_VALUE = 100901,
|
||||||
|
GLU_OUT_OF_MEMORY = 100902,
|
||||||
|
GLU_INCOMPATIBLE_GL_VERSION = 100903,
|
||||||
|
|
||||||
|
/* New in GLU 1.1 */
|
||||||
|
GLU_VERSION = 100800,
|
||||||
|
GLU_EXTENSIONS = 100801,
|
||||||
|
|
||||||
|
/*** GLU 1.0 tessellation - obsolete! ***/
|
||||||
|
|
||||||
|
/* Contour types */
|
||||||
|
GLU_CW = 100120,
|
||||||
|
GLU_CCW = 100121,
|
||||||
|
GLU_INTERIOR = 100122,
|
||||||
|
GLU_EXTERIOR = 100123,
|
||||||
|
GLU_UNKNOWN = 100124,
|
||||||
|
|
||||||
|
/* Tessellator */
|
||||||
|
GLU_BEGIN = GLU_TESS_BEGIN,
|
||||||
|
GLU_VERTEX = GLU_TESS_VERTEX,
|
||||||
|
GLU_END = GLU_TESS_END,
|
||||||
|
GLU_ERROR = GLU_TESS_ERROR,
|
||||||
|
GLU_EDGE_FLAG = GLU_TESS_EDGE_FLAG
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(__BEOS__)
|
||||||
|
/* The BeOS does something funky and makes these typedefs in one
|
||||||
|
* of its system headers.
|
||||||
|
*/
|
||||||
|
#else
|
||||||
|
|
||||||
|
#if defined GLU_VERSION_1_2
|
||||||
|
typedef struct GLUquadric GLUquadricObj;
|
||||||
|
typedef struct GLUnurbs GLUnurbsObj;
|
||||||
|
/* FIXME: We need to implement the other 1.3 typedefs - GH */
|
||||||
|
typedef struct GLUtesselator GLUtesselator;
|
||||||
|
typedef GLUtesselator GLUtriangulatorObj;
|
||||||
|
#else
|
||||||
|
/* GLU 1.1 and older */
|
||||||
|
typedef struct GLUquadric GLUquadricObj;
|
||||||
|
typedef struct GLUtriangulatorObj GLUtriangulatorObj;
|
||||||
|
typedef struct GLUnurbs GLUnurbsObj;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(__BEOS__) || defined(__QUICKDRAW__)
|
||||||
|
#pragma export on
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Miscellaneous functions
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluLookAt( GLdouble eyex, GLdouble eyey, GLdouble eyez,
|
||||||
|
GLdouble centerx, GLdouble centery,
|
||||||
|
GLdouble centerz,
|
||||||
|
GLdouble upx, GLdouble upy, GLdouble upz );
|
||||||
|
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluOrtho2D( GLdouble left, GLdouble right,
|
||||||
|
GLdouble bottom, GLdouble top );
|
||||||
|
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluPerspective( GLdouble fovy, GLdouble aspect,
|
||||||
|
GLdouble zNear, GLdouble zFar );
|
||||||
|
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluPickMatrix( GLdouble x, GLdouble y,
|
||||||
|
GLdouble width, GLdouble height,
|
||||||
|
const GLint viewport[4] );
|
||||||
|
|
||||||
|
GLUAPI GLint GLAPIENTRY gluProject( GLdouble objx, GLdouble objy, GLdouble objz,
|
||||||
|
const GLdouble modelMatrix[16],
|
||||||
|
const GLdouble projMatrix[16],
|
||||||
|
const GLint viewport[4],
|
||||||
|
GLdouble *winx, GLdouble *winy,
|
||||||
|
GLdouble *winz );
|
||||||
|
|
||||||
|
GLUAPI GLint GLAPIENTRY gluUnProject( GLdouble winx, GLdouble winy,
|
||||||
|
GLdouble winz,
|
||||||
|
const GLdouble modelMatrix[16],
|
||||||
|
const GLdouble projMatrix[16],
|
||||||
|
const GLint viewport[4],
|
||||||
|
GLdouble *objx, GLdouble *objy,
|
||||||
|
GLdouble *objz );
|
||||||
|
|
||||||
|
GLUAPI const GLubyte* GLAPIENTRY gluErrorString( GLenum errorCode );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Mipmapping and image scaling
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
GLUAPI GLint GLAPIENTRY gluScaleImage( GLenum format,
|
||||||
|
GLsizei widthin, GLsizei heightin,
|
||||||
|
GLenum typein, const void *datain,
|
||||||
|
GLsizei widthout, GLsizei heightout,
|
||||||
|
GLenum typeout, void *dataout );
|
||||||
|
|
||||||
|
GLUAPI GLint GLAPIENTRY gluBuild1DMipmaps( GLenum target, GLint components,
|
||||||
|
GLsizei width, GLenum format,
|
||||||
|
GLenum type, const void *data );
|
||||||
|
|
||||||
|
GLUAPI GLint GLAPIENTRY gluBuild2DMipmaps( GLenum target, GLint components,
|
||||||
|
GLsizei width, GLsizei height,
|
||||||
|
GLenum format,
|
||||||
|
GLenum type, const void *data );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Quadrics
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
GLUAPI GLUquadricObj* GLAPIENTRY gluNewQuadric( void );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluDeleteQuadric( GLUquadricObj *state );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluQuadricDrawStyle( GLUquadricObj *quadObject,
|
||||||
|
GLenum drawStyle );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluQuadricOrientation( GLUquadricObj *quadObject,
|
||||||
|
GLenum orientation );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluQuadricNormals( GLUquadricObj *quadObject,
|
||||||
|
GLenum normals );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluQuadricTexture( GLUquadricObj *quadObject,
|
||||||
|
GLboolean textureCoords );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluQuadricCallback( GLUquadricObj *qobj,
|
||||||
|
GLenum which, void (GLCALLBACK *fn)() );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluCylinder( GLUquadricObj *qobj,
|
||||||
|
GLdouble baseRadius,
|
||||||
|
GLdouble topRadius,
|
||||||
|
GLdouble height,
|
||||||
|
GLint slices, GLint stacks );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluSphere( GLUquadricObj *qobj,
|
||||||
|
GLdouble radius, GLint slices, GLint stacks );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluDisk( GLUquadricObj *qobj,
|
||||||
|
GLdouble innerRadius, GLdouble outerRadius,
|
||||||
|
GLint slices, GLint loops );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluPartialDisk( GLUquadricObj *qobj, GLdouble innerRadius,
|
||||||
|
GLdouble outerRadius, GLint slices,
|
||||||
|
GLint loops, GLdouble startAngle,
|
||||||
|
GLdouble sweepAngle );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Nurbs
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
GLUAPI GLUnurbsObj* GLAPIENTRY gluNewNurbsRenderer( void );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluDeleteNurbsRenderer( GLUnurbsObj *nobj );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluLoadSamplingMatrices( GLUnurbsObj *nobj,
|
||||||
|
const GLfloat modelMatrix[16],
|
||||||
|
const GLfloat projMatrix[16],
|
||||||
|
const GLint viewport[4] );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluNurbsProperty( GLUnurbsObj *nobj, GLenum property,
|
||||||
|
GLfloat value );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluGetNurbsProperty( GLUnurbsObj *nobj, GLenum property,
|
||||||
|
GLfloat *value );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluBeginCurve( GLUnurbsObj *nobj );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluEndCurve( GLUnurbsObj * nobj );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluNurbsCurve( GLUnurbsObj *nobj, GLint nknots,
|
||||||
|
GLfloat *knot, GLint stride,
|
||||||
|
GLfloat *ctlarray, GLint order,
|
||||||
|
GLenum type );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluBeginSurface( GLUnurbsObj *nobj );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluEndSurface( GLUnurbsObj * nobj );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluNurbsSurface( GLUnurbsObj *nobj,
|
||||||
|
GLint sknot_count, GLfloat *sknot,
|
||||||
|
GLint tknot_count, GLfloat *tknot,
|
||||||
|
GLint s_stride, GLint t_stride,
|
||||||
|
GLfloat *ctlarray,
|
||||||
|
GLint sorder, GLint torder,
|
||||||
|
GLenum type );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluBeginTrim( GLUnurbsObj *nobj );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluEndTrim( GLUnurbsObj *nobj );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluPwlCurve( GLUnurbsObj *nobj, GLint count,
|
||||||
|
GLfloat *array, GLint stride, GLenum type );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluNurbsCallback( GLUnurbsObj *nobj, GLenum which,
|
||||||
|
void (GLCALLBACK *fn)() );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Polygon tessellation
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef GLU_VERSION_1_2
|
||||||
|
|
||||||
|
GLUAPI GLUtesselator* GLAPIENTRY gluNewTess( void );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluDeleteTess( GLUtesselator *tobj );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluTessBeginPolygon( GLUtesselator *tobj,
|
||||||
|
void *polygon_data );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluTessBeginContour( GLUtesselator *tobj );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluTessVertex( GLUtesselator *tobj, GLdouble coords[3],
|
||||||
|
void *vertex_data );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluTessEndContour( GLUtesselator *tobj );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluTessEndPolygon( GLUtesselator *tobj );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluTessProperty( GLUtesselator *tobj, GLenum which,
|
||||||
|
GLdouble value );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluTessNormal( GLUtesselator *tobj, GLdouble x,
|
||||||
|
GLdouble y, GLdouble z );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluTessCallback( GLUtesselator *tobj, GLenum which,
|
||||||
|
void (GLCALLBACK *fn)() );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluGetTessProperty( GLUtesselator *tobj, GLenum which,
|
||||||
|
GLdouble *value );
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
GLUAPI GLUtriangulatorObj* GLAPIENTRY gluNewTess( void );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluTessCallback( GLUtriangulatorObj *tobj, GLenum which,
|
||||||
|
void (GLCALLBACK *fn)() );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluDeleteTess( GLUtriangulatorObj *tobj );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluBeginPolygon( GLUtriangulatorObj *tobj );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluEndPolygon( GLUtriangulatorObj *tobj );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluNextContour( GLUtriangulatorObj *tobj, GLenum type );
|
||||||
|
|
||||||
|
GLUAPI void GLAPIENTRY gluTessVertex( GLUtriangulatorObj *tobj, GLdouble v[3],
|
||||||
|
void *data );
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* New functions in GLU 1.1
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
GLUAPI const GLubyte* GLAPIENTRY gluGetString( GLenum name );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* GLU 1.3 functions
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef GLU_VERSION_1_3
|
||||||
|
|
||||||
|
GLUAPI GLboolean GLAPIENTRY
|
||||||
|
gluCheckExtension( const char *extName, const GLubyte *extString );
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(__BEOS__) || defined(__QUICKDRAW__)
|
||||||
|
#pragma export off
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef macintosh
|
||||||
|
#pragma enumsalwaysint reset
|
||||||
|
#if PRAGMA_IMPORT_SUPPORTED
|
||||||
|
#pragma import off
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
GLAPI void GLAPIENTRY gluBeginCurve (GLUnurbs* nurb);
|
|
||||||
GLAPI void GLAPIENTRY gluBeginPolygon (GLUtesselator* tess);
|
|
||||||
GLAPI void GLAPIENTRY gluBeginSurface (GLUnurbs* nurb);
|
|
||||||
GLAPI void GLAPIENTRY gluBeginTrim (GLUnurbs* nurb);
|
|
||||||
GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
|
||||||
GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
|
||||||
GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
|
||||||
GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
|
||||||
GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
|
||||||
GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
|
||||||
GLAPI GLboolean GLAPIENTRY gluCheckExtension (const GLubyte *extName, const GLubyte *extString);
|
|
||||||
GLAPI void GLAPIENTRY gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks);
|
|
||||||
GLAPI void GLAPIENTRY gluDeleteNurbsRenderer (GLUnurbs* nurb);
|
|
||||||
GLAPI void GLAPIENTRY gluDeleteQuadric (GLUquadric* quad);
|
|
||||||
GLAPI void GLAPIENTRY gluDeleteTess (GLUtesselator* tess);
|
|
||||||
GLAPI void GLAPIENTRY gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops);
|
|
||||||
GLAPI void GLAPIENTRY gluEndCurve (GLUnurbs* nurb);
|
|
||||||
GLAPI void GLAPIENTRY gluEndPolygon (GLUtesselator* tess);
|
|
||||||
GLAPI void GLAPIENTRY gluEndSurface (GLUnurbs* nurb);
|
|
||||||
GLAPI void GLAPIENTRY gluEndTrim (GLUnurbs* nurb);
|
|
||||||
GLAPI const GLubyte * GLAPIENTRY gluErrorString (GLenum error);
|
|
||||||
GLAPI void GLAPIENTRY gluGetNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat* data);
|
|
||||||
GLAPI const GLubyte * GLAPIENTRY gluGetString (GLenum name);
|
|
||||||
GLAPI void GLAPIENTRY gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data);
|
|
||||||
GLAPI void GLAPIENTRY gluLoadSamplingMatrices (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view);
|
|
||||||
GLAPI void GLAPIENTRY gluLookAt (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ);
|
|
||||||
GLAPI GLUnurbs* GLAPIENTRY gluNewNurbsRenderer (void);
|
|
||||||
GLAPI GLUquadric* GLAPIENTRY gluNewQuadric (void);
|
|
||||||
GLAPI GLUtesselator* GLAPIENTRY gluNewTess (void);
|
|
||||||
GLAPI void GLAPIENTRY gluNextContour (GLUtesselator* tess, GLenum type);
|
|
||||||
GLAPI void GLAPIENTRY gluNurbsCallback (GLUnurbs* nurb, GLenum which, _GLUfuncptr CallBackFunc);
|
|
||||||
GLAPI void GLAPIENTRY gluNurbsCallbackData (GLUnurbs* nurb, GLvoid* userData);
|
|
||||||
GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
|
||||||
GLAPI void GLAPIENTRY gluNurbsCurve (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type);
|
|
||||||
GLAPI void GLAPIENTRY gluNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat value);
|
|
||||||
GLAPI void GLAPIENTRY gluNurbsSurface (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type);
|
|
||||||
GLAPI void GLAPIENTRY gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
|
|
||||||
GLAPI void GLAPIENTRY gluPartialDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep);
|
|
||||||
GLAPI void GLAPIENTRY gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
|
|
||||||
GLAPI void GLAPIENTRY gluPickMatrix (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport);
|
|
||||||
GLAPI GLint GLAPIENTRY gluProject (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ);
|
|
||||||
GLAPI void GLAPIENTRY gluPwlCurve (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type);
|
|
||||||
GLAPI void GLAPIENTRY gluQuadricCallback (GLUquadric* quad, GLenum which, _GLUfuncptr CallBackFunc);
|
|
||||||
GLAPI void GLAPIENTRY gluQuadricDrawStyle (GLUquadric* quad, GLenum draw);
|
|
||||||
GLAPI void GLAPIENTRY gluQuadricNormals (GLUquadric* quad, GLenum normal);
|
|
||||||
GLAPI void GLAPIENTRY gluQuadricOrientation (GLUquadric* quad, GLenum orientation);
|
|
||||||
GLAPI void GLAPIENTRY gluQuadricTexture (GLUquadric* quad, GLboolean texture);
|
|
||||||
GLAPI GLint GLAPIENTRY gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut);
|
|
||||||
GLAPI void GLAPIENTRY gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks);
|
|
||||||
GLAPI void GLAPIENTRY gluTessBeginContour (GLUtesselator* tess);
|
|
||||||
GLAPI void GLAPIENTRY gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data);
|
|
||||||
GLAPI void GLAPIENTRY gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc);
|
|
||||||
GLAPI void GLAPIENTRY gluTessEndContour (GLUtesselator* tess);
|
|
||||||
GLAPI void GLAPIENTRY gluTessEndPolygon (GLUtesselator* tess);
|
|
||||||
GLAPI void GLAPIENTRY gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ);
|
|
||||||
GLAPI void GLAPIENTRY gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data);
|
|
||||||
GLAPI void GLAPIENTRY gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data);
|
|
||||||
GLAPI GLint GLAPIENTRY gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ);
|
|
||||||
GLAPI GLint GLAPIENTRY gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble nearVal, GLdouble farVal, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* __glu_h__ */
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: glu_mangle.h,v 1.3 2001/09/20 22:18:47 kschultz Exp $ */
|
/* $Id: glu_mangle.h,v 1.2 1999/09/10 02:08:19 gareth Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -23,9 +23,6 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: glu_mangle.h,v $
|
* $Log: glu_mangle.h,v $
|
||||||
* Revision 1.3 2001/09/20 22:18:47 kschultz
|
|
||||||
* add mangling for new entry points
|
|
||||||
*
|
|
||||||
* Revision 1.2 1999/09/10 02:08:19 gareth
|
* Revision 1.2 1999/09/10 02:08:19 gareth
|
||||||
* Added GLU 1.3 tessellation (except winding rule code).
|
* Added GLU 1.3 tessellation (except winding rule code).
|
||||||
*
|
*
|
||||||
@@ -95,11 +92,5 @@
|
|||||||
#define gluNextContour mgluNextContour
|
#define gluNextContour mgluNextContour
|
||||||
#define gluEndPolygon mgluEndPolygon
|
#define gluEndPolygon mgluEndPolygon
|
||||||
#define gluGetString mgluGetString
|
#define gluGetString mgluGetString
|
||||||
#define gluBuild1DMipmapLevels mgluBuild1DMipmapLevels
|
|
||||||
#define gluBuild2DMipmapLevels mgluBuild2DMipmapLevels
|
|
||||||
#define gluBuild3DMipmapLevels mgluBuild3DMipmapLevels
|
|
||||||
#define gluBuild3DMipmaps mgluBuild3DMipmaps
|
|
||||||
#define gluCheckExtension mgluCheckExtension
|
|
||||||
#define gluUnProject4 mgluUnProject4
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -223,11 +223,9 @@ WGLAPI int GLAPIENTRY SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR *);
|
|||||||
video resize subAPI, glutPostWindowRedisplay, glutKeyboardUpFunc,
|
video resize subAPI, glutPostWindowRedisplay, glutKeyboardUpFunc,
|
||||||
glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat,
|
glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat,
|
||||||
glutJoystickFunc, glutForceJoystickFunc (NOT FINALIZED!).
|
glutJoystickFunc, glutForceJoystickFunc (NOT FINALIZED!).
|
||||||
|
|
||||||
GLUT_API_VERSION=5 glutGetProcAddress (added by BrianP)
|
|
||||||
**/
|
**/
|
||||||
#ifndef GLUT_API_VERSION /* allow this to be overriden */
|
#ifndef GLUT_API_VERSION /* allow this to be overriden */
|
||||||
#define GLUT_API_VERSION 5
|
#define GLUT_API_VERSION 3
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -663,9 +661,6 @@ GLUTAPI int GLUTAPIENTRY glutExtensionSupported(const char *name);
|
|||||||
GLUTAPI int GLUTAPIENTRY glutGetModifiers(void);
|
GLUTAPI int GLUTAPIENTRY glutGetModifiers(void);
|
||||||
GLUTAPI int GLUTAPIENTRY glutLayerGet(GLenum type);
|
GLUTAPI int GLUTAPIENTRY glutLayerGet(GLenum type);
|
||||||
#endif
|
#endif
|
||||||
#if (GLUT_API_VERSION >= 5)
|
|
||||||
GLUTAPI void * GLUTAPIENTRY glutGetProcAddress(const char *procName);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* GLUT font sub-API */
|
/* GLUT font sub-API */
|
||||||
GLUTAPI void GLUTAPIENTRY glutBitmapCharacter(void *font, int character);
|
GLUTAPI void GLUTAPIENTRY glutBitmapCharacter(void *font, int character);
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ typedef void (GLUTCALLBACK *GLUTmenuStatusFCB) (int *, int *, int *);
|
|||||||
typedef void (GLUTCALLBACK *GLUTidleFCB) (void);
|
typedef void (GLUTCALLBACK *GLUTidleFCB) (void);
|
||||||
|
|
||||||
/* Functions that set and return Fortran callback functions. */
|
/* Functions that set and return Fortran callback functions. */
|
||||||
GLUTAPI void* APIENTRY __glutGetFCB(int which);
|
extern void* GLUTAPIENTRY __glutGetFCB(int which);
|
||||||
GLUTAPI void APIENTRY __glutSetFCB(int which, void *func);
|
extern void GLUTAPIENTRY __glutSetFCB(int which, void *func);
|
||||||
|
|
||||||
#endif /* __glutf90_h__ */
|
#endif /* __glutf90_h__ */
|
||||||
|
|||||||
414
include/GL/glx.h
414
include/GL/glx.h
@@ -1,10 +1,10 @@
|
|||||||
/* $Id: glx.h,v 1.38 2002/10/14 13:52:27 brianp Exp $ */
|
/* $Id: glx.h,v 1.5.2.3 2000/02/23 23:05:07 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 4.1
|
* Version: 3.2
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
|
* Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
@@ -25,30 +25,21 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef GLX_H
|
#ifndef GLX_H
|
||||||
#define GLX_H
|
#define GLX_H
|
||||||
|
|
||||||
|
|
||||||
#ifdef __VMS
|
|
||||||
#include <GL/vms_x_fix.h>
|
|
||||||
# ifdef __cplusplus
|
|
||||||
/* VMS Xlib.h gives problems with C++.
|
|
||||||
* this avoids a bunch of trivial warnings */
|
|
||||||
#pragma message disable nosimpint
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Xutil.h>
|
#include <X11/Xutil.h>
|
||||||
#ifdef __VMS
|
#include "GL/gl.h"
|
||||||
# ifdef __cplusplus
|
#ifdef MESA
|
||||||
#pragma message enable nosimpint
|
#include "GL/xmesa.h"
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
#include <GL/gl.h>
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(USE_MGL_NAMESPACE)
|
#if defined(USE_MGL_NAMESPACE)
|
||||||
#include <GL/glx_mangle.h>
|
#include "glx_mangle.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -58,34 +49,39 @@ extern "C" {
|
|||||||
|
|
||||||
|
|
||||||
#define GLX_VERSION_1_1 1
|
#define GLX_VERSION_1_1 1
|
||||||
#define GLX_VERSION_1_2 1
|
|
||||||
#define GLX_VERSION_1_3 1
|
|
||||||
#define GLX_VERSION_1_4 1
|
|
||||||
|
|
||||||
#define GLX_EXTENSION_NAME "GLX"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Tokens for glXChooseVisual and glXGetConfig:
|
* Tokens for glXChooseVisual and glXGetConfig:
|
||||||
*/
|
*/
|
||||||
#define GLX_USE_GL 1
|
enum _GLX_CONFIGS {
|
||||||
#define GLX_BUFFER_SIZE 2
|
GLX_USE_GL = 1,
|
||||||
#define GLX_LEVEL 3
|
GLX_BUFFER_SIZE = 2,
|
||||||
#define GLX_RGBA 4
|
GLX_LEVEL = 3,
|
||||||
#define GLX_DOUBLEBUFFER 5
|
GLX_RGBA = 4,
|
||||||
#define GLX_STEREO 6
|
GLX_DOUBLEBUFFER = 5,
|
||||||
#define GLX_AUX_BUFFERS 7
|
GLX_STEREO = 6,
|
||||||
#define GLX_RED_SIZE 8
|
GLX_AUX_BUFFERS = 7,
|
||||||
#define GLX_GREEN_SIZE 9
|
GLX_RED_SIZE = 8,
|
||||||
#define GLX_BLUE_SIZE 10
|
GLX_GREEN_SIZE = 9,
|
||||||
#define GLX_ALPHA_SIZE 11
|
GLX_BLUE_SIZE = 10,
|
||||||
#define GLX_DEPTH_SIZE 12
|
GLX_ALPHA_SIZE = 11,
|
||||||
#define GLX_STENCIL_SIZE 13
|
GLX_DEPTH_SIZE = 12,
|
||||||
#define GLX_ACCUM_RED_SIZE 14
|
GLX_STENCIL_SIZE = 13,
|
||||||
#define GLX_ACCUM_GREEN_SIZE 15
|
GLX_ACCUM_RED_SIZE = 14,
|
||||||
#define GLX_ACCUM_BLUE_SIZE 16
|
GLX_ACCUM_GREEN_SIZE = 15,
|
||||||
#define GLX_ACCUM_ALPHA_SIZE 17
|
GLX_ACCUM_BLUE_SIZE = 16,
|
||||||
|
GLX_ACCUM_ALPHA_SIZE = 17,
|
||||||
|
|
||||||
|
/* GLX_EXT_visual_info extension */
|
||||||
|
GLX_X_VISUAL_TYPE_EXT = 0x22,
|
||||||
|
GLX_TRANSPARENT_TYPE_EXT = 0x23,
|
||||||
|
GLX_TRANSPARENT_INDEX_VALUE_EXT = 0x24,
|
||||||
|
GLX_TRANSPARENT_RED_VALUE_EXT = 0x25,
|
||||||
|
GLX_TRANSPARENT_GREEN_VALUE_EXT = 0x26,
|
||||||
|
GLX_TRANSPARENT_BLUE_VALUE_EXT = 0x27,
|
||||||
|
GLX_TRANSPARENT_ALPHA_VALUE_EXT = 0x28
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -109,84 +105,42 @@ extern "C" {
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* GLX 1.3 and later:
|
* GLX_visual_info extension
|
||||||
*/
|
*/
|
||||||
#define GLX_CONFIG_CAVEAT 0x20
|
#define GLX_TRUE_COLOR_EXT 0x8002
|
||||||
#define GLX_DONT_CARE 0xFFFFFFFF
|
#define GLX_DIRECT_COLOR_EXT 0x8003
|
||||||
#define GLX_SLOW_CONFIG 0x8001
|
#define GLX_PSEUDO_COLOR_EXT 0x8004
|
||||||
#define GLX_NON_CONFORMANT_CONFIG 0x800D
|
#define GLX_STATIC_COLOR_EXT 0x8005
|
||||||
#define GLX_X_VISUAL_TYPE 0x22
|
#define GLX_GRAY_SCALE_EXT 0x8006
|
||||||
#define GLX_TRANSPARENT_TYPE 0x23
|
#define GLX_STATIC_GRAY_EXT 0x8007
|
||||||
#define GLX_TRANSPARENT_INDEX_VALUE 0x24
|
#define GLX_NONE_EXT 0x8000
|
||||||
#define GLX_TRANSPARENT_RED_VALUE 0x25
|
#define GLX_TRANSPARENT_RGB_EXT 0x8008
|
||||||
#define GLX_TRANSPARENT_GREEN_VALUE 0x26
|
#define GLX_TRANSPARENT_INDEX_EXT 0x8009
|
||||||
#define GLX_TRANSPARENT_BLUE_VALUE 0x27
|
|
||||||
#define GLX_TRANSPARENT_ALPHA_VALUE 0x28
|
|
||||||
#define GLX_MAX_PBUFFER_WIDTH 0x8016
|
|
||||||
#define GLX_MAX_PBUFFER_HEIGHT 0x8017
|
|
||||||
#define GLX_MAX_PBUFFER_PIXELS 0x8018
|
|
||||||
#define GLX_PRESERVED_CONTENTS 0x801B
|
|
||||||
#define GLX_LARGEST_PBUFFER 0x801C
|
|
||||||
#define GLX_WIDTH 0x801D
|
|
||||||
#define GLX_HEIGHT 0x801E
|
|
||||||
#define GLX_EVENT_MASK 0x801F
|
|
||||||
#define GLX_DRAWABLE_TYPE 0x8010
|
|
||||||
#define GLX_FBCONFIG_ID 0x8013
|
|
||||||
#define GLX_VISUAL_ID 0x800B
|
|
||||||
#define GLX_WINDOW_BIT 0x00000001
|
|
||||||
#define GLX_PIXMAP_BIT 0x00000002
|
|
||||||
#define GLX_PBUFFER_BIT 0x00000004
|
|
||||||
#define GLX_AUX_BUFFERS_BIT 0x00000010
|
|
||||||
#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001
|
|
||||||
#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
|
|
||||||
#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
|
|
||||||
#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
|
|
||||||
#define GLX_DEPTH_BUFFER_BIT 0x00000020
|
|
||||||
#define GLX_STENCIL_BUFFER_BIT 0x00000040
|
|
||||||
#define GLX_ACCUM_BUFFER_BIT 0x00000080
|
|
||||||
#define GLX_DRAWABLE_TYPE 0x8010
|
|
||||||
#define GLX_RENDER_TYPE 0x8011
|
|
||||||
#define GLX_X_RENDERABLE 0x8012
|
|
||||||
#define GLX_NONE 0x8000
|
|
||||||
#define GLX_TRUE_COLOR 0x8002
|
|
||||||
#define GLX_DIRECT_COLOR 0x8003
|
|
||||||
#define GLX_PSEUDO_COLOR 0x8004
|
|
||||||
#define GLX_STATIC_COLOR 0x8005
|
|
||||||
#define GLX_GRAY_SCALE 0x8006
|
|
||||||
#define GLX_STATIC_GRAY 0x8007
|
|
||||||
#define GLX_TRANSPARENT_RGB 0x8008
|
|
||||||
#define GLX_TRANSPARENT_INDEX 0x8009
|
|
||||||
#define GLX_RGBA_TYPE 0x8014
|
|
||||||
#define GLX_COLOR_INDEX_TYPE 0x8015
|
|
||||||
#define GLX_COLOR_INDEX_BIT 0x00000002
|
|
||||||
#define GLX_RGBA_BIT 0x00000001
|
|
||||||
#define GLX_SCREEN 0x800C
|
|
||||||
#define GLX_PBUFFER_CLOBBER_MASK 0x08000000
|
|
||||||
#define GLX_DAMAGED 0x8020
|
|
||||||
#define GLX_SAVED 0x8021
|
|
||||||
#define GLX_WINDOW 0x8022
|
|
||||||
#define GLX_PBUFFER 0x8023
|
|
||||||
#define GLX_PBUFFER_HEIGHT 0x8040
|
|
||||||
#define GLX_PBUFFER_WIDTH 0x8041
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* GLX 1.4 and later:
|
* Compile-time extension tests
|
||||||
*/
|
*/
|
||||||
#define GLX_SAMPLE_BUFFERS 0x186a0 /*100000*/
|
#define GLX_EXT_visual_info 1
|
||||||
#define GLX_SAMPLES 0x186a1 /*100001*/
|
#define GLX_MESA_pixmap_colormap 1
|
||||||
|
#define GLX_MESA_release_buffers 1
|
||||||
|
#define GLX_MESA_copy_sub_buffer 1
|
||||||
|
#define GLX_MESA_set_3dfx_mode 1
|
||||||
|
#define GLX_SGI_video_sync 1
|
||||||
|
#define GLX_ARB_get_proc_address 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct __GLXcontextRec *GLXContext;
|
#ifdef MESA
|
||||||
typedef XID GLXPixmap;
|
typedef XMesaContext GLXContext;
|
||||||
typedef XID GLXDrawable;
|
typedef Pixmap GLXPixmap;
|
||||||
/* GLX 1.3 and later */
|
typedef Drawable GLXDrawable;
|
||||||
typedef struct __GLXFBConfigRec *GLXFBConfig;
|
#else
|
||||||
typedef XID GLXFBConfigID;
|
typedef void * GLXContext;
|
||||||
|
typedef XID GLXPixmap;
|
||||||
|
typedef XID GLXDrawable;
|
||||||
|
#endif
|
||||||
typedef XID GLXContextID;
|
typedef XID GLXContextID;
|
||||||
typedef XID GLXWindow;
|
|
||||||
typedef XID GLXPbuffer;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -240,250 +194,34 @@ extern const char *glXQueryServerString( Display *dpy, int screen, int name );
|
|||||||
extern const char *glXGetClientString( Display *dpy, int name );
|
extern const char *glXGetClientString( Display *dpy, int name );
|
||||||
|
|
||||||
|
|
||||||
/* GLX 1.2 and later */
|
|
||||||
extern Display *glXGetCurrentDisplay( void );
|
|
||||||
|
|
||||||
|
|
||||||
/* GLX 1.3 and later */
|
|
||||||
extern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen,
|
|
||||||
const int *attribList, int *nitems );
|
|
||||||
|
|
||||||
extern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config,
|
|
||||||
int attribute, int *value );
|
|
||||||
|
|
||||||
extern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen,
|
|
||||||
int *nelements );
|
|
||||||
|
|
||||||
extern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy,
|
|
||||||
GLXFBConfig config );
|
|
||||||
|
|
||||||
extern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config,
|
|
||||||
Window win, const int *attribList );
|
|
||||||
|
|
||||||
extern void glXDestroyWindow( Display *dpy, GLXWindow window );
|
|
||||||
|
|
||||||
extern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config,
|
|
||||||
Pixmap pixmap, const int *attribList );
|
|
||||||
|
|
||||||
extern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap );
|
|
||||||
|
|
||||||
extern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config,
|
|
||||||
const int *attribList );
|
|
||||||
|
|
||||||
extern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf );
|
|
||||||
|
|
||||||
extern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute,
|
|
||||||
unsigned int *value );
|
|
||||||
|
|
||||||
extern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config,
|
|
||||||
int renderType, GLXContext shareList,
|
|
||||||
Bool direct );
|
|
||||||
|
|
||||||
extern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
|
|
||||||
GLXDrawable read, GLXContext ctx );
|
|
||||||
|
|
||||||
extern GLXDrawable glXGetCurrentReadDrawable( void );
|
|
||||||
|
|
||||||
extern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute,
|
|
||||||
int *value );
|
|
||||||
|
|
||||||
extern void glXSelectEvent( Display *dpy, GLXDrawable drawable,
|
|
||||||
unsigned long mask );
|
|
||||||
|
|
||||||
extern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable,
|
|
||||||
unsigned long *mask );
|
|
||||||
|
|
||||||
|
|
||||||
/* GLX 1.4 and later */
|
|
||||||
extern void (*glXGetProcAddress(const GLubyte *procname))();
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef GLX_GLXEXT_LEGACY
|
|
||||||
|
|
||||||
#include <GL/glxext.h>
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 28. GLX_EXT_visual_info extension
|
|
||||||
*/
|
|
||||||
#ifndef GLX_EXT_visual_info
|
|
||||||
#define GLX_EXT_visual_info 1
|
|
||||||
|
|
||||||
#define GLX_X_VISUAL_TYPE_EXT 0x22
|
|
||||||
#define GLX_TRANSPARENT_TYPE_EXT 0x23
|
|
||||||
#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24
|
|
||||||
#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25
|
|
||||||
#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26
|
|
||||||
#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27
|
|
||||||
#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28
|
|
||||||
#define GLX_TRUE_COLOR_EXT 0x8002
|
|
||||||
#define GLX_DIRECT_COLOR_EXT 0x8003
|
|
||||||
#define GLX_PSEUDO_COLOR_EXT 0x8004
|
|
||||||
#define GLX_STATIC_COLOR_EXT 0x8005
|
|
||||||
#define GLX_GRAY_SCALE_EXT 0x8006
|
|
||||||
#define GLX_STATIC_GRAY_EXT 0x8007
|
|
||||||
#define GLX_NONE_EXT 0x8000
|
|
||||||
#define GLX_TRANSPARENT_RGB_EXT 0x8008
|
|
||||||
#define GLX_TRANSPARENT_INDEX_EXT 0x8009
|
|
||||||
|
|
||||||
#endif /* 28. GLX_EXT_visual_info extension */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 41. GLX_SGI_video_sync
|
|
||||||
*/
|
|
||||||
#ifndef GLX_SGI_video_sync
|
|
||||||
#define GLX_SGI_video_sync 1
|
|
||||||
|
|
||||||
extern int glXGetVideoSyncSGI(unsigned int *count);
|
|
||||||
extern int glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count);
|
|
||||||
|
|
||||||
#endif /* GLX_SGI_video_sync */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 42. GLX_EXT_visual_rating
|
|
||||||
*/
|
|
||||||
#ifndef GLX_EXT_visual_rating
|
|
||||||
#define GLX_EXT_visual_rating 1
|
|
||||||
|
|
||||||
#define GLX_VISUAL_CAVEAT_EXT 0x20
|
|
||||||
/*#define GLX_NONE_EXT 0x8000*/
|
|
||||||
#define GLX_SLOW_VISUAL_EXT 0x8001
|
|
||||||
#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D
|
|
||||||
|
|
||||||
#endif /* GLX_EXT_visual_rating */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 47. GLX_EXT_import_context
|
|
||||||
*/
|
|
||||||
#ifndef GLX_EXT_import_context
|
|
||||||
#define GLX_EXT_import_context 1
|
|
||||||
|
|
||||||
#define GLX_SHARE_CONTEXT_EXT 0x800A
|
|
||||||
#define GLX_VISUAL_ID_EXT 0x800B
|
|
||||||
#define GLX_SCREEN_EXT 0x800C
|
|
||||||
|
|
||||||
extern void glXFreeContextEXT(Display *dpy, GLXContext context);
|
|
||||||
|
|
||||||
extern GLXContextID glXGetContextIDEXT(const GLXContext context);
|
|
||||||
|
|
||||||
extern Display *glXGetCurrentDisplayEXT(void);
|
|
||||||
|
|
||||||
extern GLXContext glXImportContextEXT(Display *dpy, GLXContextID contextID);
|
|
||||||
|
|
||||||
extern int glXQueryContextInfoEXT(Display *dpy, GLXContext context,
|
|
||||||
int attribute,int *value);
|
|
||||||
|
|
||||||
#endif /* GLX_EXT_import_context */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 215. GLX_MESA_copy_sub_buffer
|
|
||||||
*/
|
|
||||||
#ifndef GLX_MESA_copy_sub_buffer
|
|
||||||
#define GLX_MESA_copy_sub_buffer 1
|
|
||||||
|
|
||||||
extern void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable,
|
|
||||||
int x, int y, int width, int height );
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 216. GLX_MESA_pixmap_colormap
|
|
||||||
*/
|
|
||||||
#ifndef GLX_MESA_pixmap_colormap
|
|
||||||
#define GLX_MESA_pixmap_colormap 1
|
|
||||||
|
|
||||||
|
/* GLX_MESA_pixmap_colormap */
|
||||||
extern GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
|
extern GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
|
||||||
Pixmap pixmap, Colormap cmap );
|
Pixmap pixmap, Colormap cmap );
|
||||||
|
|
||||||
#endif /* GLX_MESA_pixmap_colormap */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 217. GLX_MESA_release_buffers
|
|
||||||
*/
|
|
||||||
#ifndef GLX_MESA_release_buffers
|
|
||||||
#define GLX_MESA_release_buffers 1
|
|
||||||
|
|
||||||
|
/* GLX_MESA_release_buffers */
|
||||||
extern Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d );
|
extern Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d );
|
||||||
|
|
||||||
#endif /* GLX_MESA_release_buffers */
|
|
||||||
|
/* GLX_MESA_copy_sub_buffer */
|
||||||
|
extern void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable,
|
||||||
|
int x, int y, int width, int height );
|
||||||
|
|
||||||
|
|
||||||
|
/* GLX_MESA_set_3dfx_mode */
|
||||||
/*
|
extern GLboolean glXSet3DfxModeMESA( GLint mode );
|
||||||
* 218. GLX_MESA_set_3dfx_mode
|
|
||||||
*/
|
|
||||||
#ifndef GLX_MESA_set_3dfx_mode
|
|
||||||
#define GLX_MESA_set_3dfx_mode 1
|
|
||||||
|
|
||||||
#define GLX_3DFX_WINDOW_MODE_MESA 0x1
|
|
||||||
#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2
|
|
||||||
|
|
||||||
extern Bool glXSet3DfxModeMESA( int mode );
|
|
||||||
|
|
||||||
#endif /* GLX_MESA_set_3dfx_mode */
|
|
||||||
|
|
||||||
|
|
||||||
|
/* GLX_SGI_video_sync */
|
||||||
|
extern int glXGetVideoSyncSGI(unsigned int *count);
|
||||||
|
extern int glXWaitVideoSyncSGI(int divisor, int remainder,
|
||||||
|
unsigned int *count);
|
||||||
|
|
||||||
/*
|
|
||||||
* ARB 2. GLX_ARB_get_proc_address
|
|
||||||
*/
|
|
||||||
#ifndef GLX_ARB_get_proc_address
|
|
||||||
#define GLX_ARB_get_proc_address 1
|
|
||||||
|
|
||||||
|
/* GLX_ARB_get_proc_address */
|
||||||
extern void (*glXGetProcAddressARB(const GLubyte *procName))();
|
extern void (*glXGetProcAddressARB(const GLubyte *procName))();
|
||||||
|
|
||||||
#endif /* GLX_ARB_get_proc_address */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* GLX_GLXEXT_LEGACY */
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
** The following aren't in glxext.h yet.
|
|
||||||
**/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* ???. GLX_NV_vertex_array_range
|
|
||||||
*/
|
|
||||||
#ifndef GLX_NV_vertex_array_range
|
|
||||||
#define GLX_NV_vertex_array_range
|
|
||||||
|
|
||||||
extern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
|
|
||||||
extern void glXFreeMemoryNV(GLvoid *pointer);
|
|
||||||
typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
|
|
||||||
typedef void ( * PFNGLXFREEMEMORYNVPROC) (GLvoid *pointer);
|
|
||||||
|
|
||||||
#endif /* GLX_NV_vertex_array_range */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* ???. GLX_MESA_agp_offset
|
|
||||||
*/
|
|
||||||
#ifndef GLX_MESA_agp_offset
|
|
||||||
#define GLX_MESA_agp_offset 1
|
|
||||||
|
|
||||||
extern GLuint glXGetAGPOffsetMESA(const GLvoid *pointer);
|
|
||||||
typedef GLuint (* PFNGLXGETAGPOFFSETMESAPROC) (const GLvoid *pointer);
|
|
||||||
|
|
||||||
#endif /* GLX_MESA_agp_offset */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
/* $Id: glx_mangle.h,v 1.2 2001/11/09 22:01:02 brianp Exp $ */
|
/* $Id: glx_mangle.h,v 1.1 1999/08/19 00:55:40 jtg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 4.1
|
* Version: 3.0
|
||||||
* Copyright (C) 1995-1998 Brian Paul
|
* Copyright (C) 1995-1998 Brian Paul
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
@@ -21,6 +21,25 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Log: glx_mangle.h,v $
|
||||||
|
* Revision 1.1 1999/08/19 00:55:40 jtg
|
||||||
|
* Initial revision
|
||||||
|
*
|
||||||
|
* Revision 3.3 1999/06/21 22:01:00 brianp
|
||||||
|
* added #ifndef GLX_MANGLE_H stuff, video sync extension functions
|
||||||
|
*
|
||||||
|
* Revision 3.2 1998/03/26 02:44:53 brianp
|
||||||
|
* removed ^M characters
|
||||||
|
*
|
||||||
|
* Revision 3.1 1998/03/17 02:41:19 brianp
|
||||||
|
* updated by Randy Frank
|
||||||
|
*
|
||||||
|
* Revision 3.0 1998/02/20 05:04:45 brianp
|
||||||
|
* initial rev
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef GLX_MANGLE_H
|
#ifndef GLX_MANGLE_H
|
||||||
#define GLX_MANGLE_H
|
#define GLX_MANGLE_H
|
||||||
|
|
||||||
@@ -50,8 +69,4 @@
|
|||||||
#define glXGetVideoSyncSGI mglXGetVideoSyncSGI
|
#define glXGetVideoSyncSGI mglXGetVideoSyncSGI
|
||||||
#define glXWaitVideoSyncSGI mglXWaitVideoSyncSGI
|
#define glXWaitVideoSyncSGI mglXWaitVideoSyncSGI
|
||||||
|
|
||||||
/* GLX 1.4 */
|
|
||||||
#define glXGetProcAddress mglXGetProcAddress
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,607 +0,0 @@
|
|||||||
#ifndef __glxext_h_
|
|
||||||
#define __glxext_h_
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
** License Applicability. Except to the extent portions of this file are
|
|
||||||
** made subject to an alternative license as permitted in the SGI Free
|
|
||||||
** Software License B, Version 1.1 (the "License"), the contents of this
|
|
||||||
** file are subject only to the provisions of the License. You may not use
|
|
||||||
** this file except in compliance with the License. You may obtain a copy
|
|
||||||
** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
|
|
||||||
** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
|
|
||||||
**
|
|
||||||
** http://oss.sgi.com/projects/FreeB
|
|
||||||
**
|
|
||||||
** Note that, as provided in the License, the Software is distributed on an
|
|
||||||
** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
|
|
||||||
** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
|
|
||||||
** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
|
|
||||||
** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
|
|
||||||
**
|
|
||||||
** Original Code. The Original Code is: OpenGL Sample Implementation,
|
|
||||||
** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
|
|
||||||
** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
|
|
||||||
** Copyright in any portions created by third parties is as indicated
|
|
||||||
** elsewhere herein. All Rights Reserved.
|
|
||||||
**
|
|
||||||
** Additional Notice Provisions: This software was created using the
|
|
||||||
** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
|
|
||||||
** not been independently verified as being compliant with the OpenGL(R)
|
|
||||||
** version 1.2.1 Specification.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__)
|
|
||||||
#define WIN32_LEAN_AND_MEAN 1
|
|
||||||
#include <windows.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef APIENTRY
|
|
||||||
#define APIENTRY
|
|
||||||
#endif
|
|
||||||
#ifndef GLAPI
|
|
||||||
#define GLAPI extern
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*************************************************************/
|
|
||||||
|
|
||||||
/* Header file version number, required by OpenGL ABI for Linux */
|
|
||||||
/* glxext.h last updated 2002/03/22 */
|
|
||||||
/* Current version at http://oss.sgi.com/projects/ogl-sample/registry/ */
|
|
||||||
#define GLX_GLXEXT_VERSION 5
|
|
||||||
|
|
||||||
#ifndef GLX_VERSION_1_3
|
|
||||||
#define GLX_WINDOW_BIT 0x00000001
|
|
||||||
#define GLX_PIXMAP_BIT 0x00000002
|
|
||||||
#define GLX_PBUFFER_BIT 0x00000004
|
|
||||||
#define GLX_RGBA_BIT 0x00000001
|
|
||||||
#define GLX_COLOR_INDEX_BIT 0x00000002
|
|
||||||
#define GLX_PBUFFER_CLOBBER_MASK 0x08000000
|
|
||||||
#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001
|
|
||||||
#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
|
|
||||||
#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
|
|
||||||
#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
|
|
||||||
#define GLX_AUX_BUFFERS_BIT 0x00000010
|
|
||||||
#define GLX_DEPTH_BUFFER_BIT 0x00000020
|
|
||||||
#define GLX_STENCIL_BUFFER_BIT 0x00000040
|
|
||||||
#define GLX_ACCUM_BUFFER_BIT 0x00000080
|
|
||||||
#define GLX_CONFIG_CAVEAT 0x20
|
|
||||||
#define GLX_X_VISUAL_TYPE 0x22
|
|
||||||
#define GLX_TRANSPARENT_TYPE 0x23
|
|
||||||
#define GLX_TRANSPARENT_INDEX_VALUE 0x24
|
|
||||||
#define GLX_TRANSPARENT_RED_VALUE 0x25
|
|
||||||
#define GLX_TRANSPARENT_GREEN_VALUE 0x26
|
|
||||||
#define GLX_TRANSPARENT_BLUE_VALUE 0x27
|
|
||||||
#define GLX_TRANSPARENT_ALPHA_VALUE 0x28
|
|
||||||
#define GLX_DONT_CARE 0xFFFFFFFF
|
|
||||||
#define GLX_NONE 0x8000
|
|
||||||
#define GLX_SLOW_CONFIG 0x8001
|
|
||||||
#define GLX_TRUE_COLOR 0x8002
|
|
||||||
#define GLX_DIRECT_COLOR 0x8003
|
|
||||||
#define GLX_PSEUDO_COLOR 0x8004
|
|
||||||
#define GLX_STATIC_COLOR 0x8005
|
|
||||||
#define GLX_GRAY_SCALE 0x8006
|
|
||||||
#define GLX_STATIC_GRAY 0x8007
|
|
||||||
#define GLX_TRANSPARENT_RGB 0x8008
|
|
||||||
#define GLX_TRANSPARENT_INDEX 0x8009
|
|
||||||
#define GLX_VISUAL_ID 0x800B
|
|
||||||
#define GLX_SCREEN 0x800C
|
|
||||||
#define GLX_NON_CONFORMANT_CONFIG 0x800D
|
|
||||||
#define GLX_DRAWABLE_TYPE 0x8010
|
|
||||||
#define GLX_RENDER_TYPE 0x8011
|
|
||||||
#define GLX_X_RENDERABLE 0x8012
|
|
||||||
#define GLX_FBCONFIG_ID 0x8013
|
|
||||||
#define GLX_RGBA_TYPE 0x8014
|
|
||||||
#define GLX_COLOR_INDEX_TYPE 0x8015
|
|
||||||
#define GLX_MAX_PBUFFER_WIDTH 0x8016
|
|
||||||
#define GLX_MAX_PBUFFER_HEIGHT 0x8017
|
|
||||||
#define GLX_MAX_PBUFFER_PIXELS 0x8018
|
|
||||||
#define GLX_PRESERVED_CONTENTS 0x801B
|
|
||||||
#define GLX_LARGEST_PBUFFER 0x801C
|
|
||||||
#define GLX_WIDTH 0x801D
|
|
||||||
#define GLX_HEIGHT 0x801E
|
|
||||||
#define GLX_EVENT_MASK 0x801F
|
|
||||||
#define GLX_DAMAGED 0x8020
|
|
||||||
#define GLX_SAVED 0x8021
|
|
||||||
#define GLX_WINDOW 0x8022
|
|
||||||
#define GLX_PBUFFER 0x8023
|
|
||||||
#define GLX_PBUFFER_HEIGHT 0x8040
|
|
||||||
#define GLX_PBUFFER_WIDTH 0x8041
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_VERSION_1_4
|
|
||||||
#define GLX_SAMPLE_BUFFERS 100000
|
|
||||||
#define GLX_SAMPLES 100001
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_ARB_get_proc_address
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_ARB_multisample
|
|
||||||
#define GLX_SAMPLE_BUFFERS_ARB 100000
|
|
||||||
#define GLX_SAMPLES_ARB 100001
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIS_multisample
|
|
||||||
#define GLX_SAMPLE_BUFFERS_SGIS 100000
|
|
||||||
#define GLX_SAMPLES_SGIS 100001
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_EXT_visual_info
|
|
||||||
#define GLX_X_VISUAL_TYPE_EXT 0x22
|
|
||||||
#define GLX_TRANSPARENT_TYPE_EXT 0x23
|
|
||||||
#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24
|
|
||||||
#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25
|
|
||||||
#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26
|
|
||||||
#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27
|
|
||||||
#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28
|
|
||||||
#define GLX_NONE_EXT 0x8000
|
|
||||||
#define GLX_TRUE_COLOR_EXT 0x8002
|
|
||||||
#define GLX_DIRECT_COLOR_EXT 0x8003
|
|
||||||
#define GLX_PSEUDO_COLOR_EXT 0x8004
|
|
||||||
#define GLX_STATIC_COLOR_EXT 0x8005
|
|
||||||
#define GLX_GRAY_SCALE_EXT 0x8006
|
|
||||||
#define GLX_STATIC_GRAY_EXT 0x8007
|
|
||||||
#define GLX_TRANSPARENT_RGB_EXT 0x8008
|
|
||||||
#define GLX_TRANSPARENT_INDEX_EXT 0x8009
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGI_swap_control
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGI_video_sync
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGI_make_current_read
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIX_video_source
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_EXT_visual_rating
|
|
||||||
#define GLX_VISUAL_CAVEAT_EXT 0x20
|
|
||||||
#define GLX_SLOW_VISUAL_EXT 0x8001
|
|
||||||
#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D
|
|
||||||
/* reuse GLX_NONE_EXT */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_EXT_import_context
|
|
||||||
#define GLX_SHARE_CONTEXT_EXT 0x800A
|
|
||||||
#define GLX_VISUAL_ID_EXT 0x800B
|
|
||||||
#define GLX_SCREEN_EXT 0x800C
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIX_fbconfig
|
|
||||||
#define GLX_WINDOW_BIT_SGIX 0x00000001
|
|
||||||
#define GLX_PIXMAP_BIT_SGIX 0x00000002
|
|
||||||
#define GLX_RGBA_BIT_SGIX 0x00000001
|
|
||||||
#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002
|
|
||||||
#define GLX_DRAWABLE_TYPE_SGIX 0x8010
|
|
||||||
#define GLX_RENDER_TYPE_SGIX 0x8011
|
|
||||||
#define GLX_X_RENDERABLE_SGIX 0x8012
|
|
||||||
#define GLX_FBCONFIG_ID_SGIX 0x8013
|
|
||||||
#define GLX_RGBA_TYPE_SGIX 0x8014
|
|
||||||
#define GLX_COLOR_INDEX_TYPE_SGIX 0x8015
|
|
||||||
/* reuse GLX_SCREEN_EXT */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIX_pbuffer
|
|
||||||
#define GLX_PBUFFER_BIT_SGIX 0x00000004
|
|
||||||
#define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000
|
|
||||||
#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001
|
|
||||||
#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002
|
|
||||||
#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004
|
|
||||||
#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008
|
|
||||||
#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010
|
|
||||||
#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020
|
|
||||||
#define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040
|
|
||||||
#define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080
|
|
||||||
#define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100
|
|
||||||
#define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016
|
|
||||||
#define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017
|
|
||||||
#define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018
|
|
||||||
#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019
|
|
||||||
#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A
|
|
||||||
#define GLX_PRESERVED_CONTENTS_SGIX 0x801B
|
|
||||||
#define GLX_LARGEST_PBUFFER_SGIX 0x801C
|
|
||||||
#define GLX_WIDTH_SGIX 0x801D
|
|
||||||
#define GLX_HEIGHT_SGIX 0x801E
|
|
||||||
#define GLX_EVENT_MASK_SGIX 0x801F
|
|
||||||
#define GLX_DAMAGED_SGIX 0x8020
|
|
||||||
#define GLX_SAVED_SGIX 0x8021
|
|
||||||
#define GLX_WINDOW_SGIX 0x8022
|
|
||||||
#define GLX_PBUFFER_SGIX 0x8023
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGI_cushion
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIX_video_resize
|
|
||||||
#define GLX_SYNC_FRAME_SGIX 0x00000000
|
|
||||||
#define GLX_SYNC_SWAP_SGIX 0x00000001
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIX_dmbuffer
|
|
||||||
#define GLX_DIGITAL_MEDIA_PBUFFER_SGIX 0x8024
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIX_swap_group
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIX_swap_barrier
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIS_blended_overlay
|
|
||||||
#define GLX_BLENDED_RGBA_SGIS 0x8025
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIS_shared_multisample
|
|
||||||
#define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026
|
|
||||||
#define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SUN_get_transparent_index
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_3DFX_multisample
|
|
||||||
#define GLX_SAMPLE_BUFFERS_3DFX 0x8050
|
|
||||||
#define GLX_SAMPLES_3DFX 0x8051
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_MESA_copy_sub_buffer
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_MESA_pixmap_colormap
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_MESA_release_buffers
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_MESA_set_3dfx_mode
|
|
||||||
#define GLX_3DFX_WINDOW_MODE_MESA 0x1
|
|
||||||
#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIX_visual_select_group
|
|
||||||
#define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_OML_swap_method
|
|
||||||
#define GLX_SWAP_METHOD_OML 0x8060
|
|
||||||
#define GLX_SWAP_EXCHANGE_OML 0x8061
|
|
||||||
#define GLX_SWAP_COPY_OML 0x8062
|
|
||||||
#define GLX_SWAP_UNDEFINED_OML 0x8063
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_OML_sync_control
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************/
|
|
||||||
|
|
||||||
#ifndef GLX_ARB_get_proc_address
|
|
||||||
typedef void (*__GLXextFuncPtr)(void);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIX_video_source
|
|
||||||
typedef XID GLXVideoSourceSGIX;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIX_fbconfig
|
|
||||||
typedef XID GLXFBConfigIDSGIX;
|
|
||||||
typedef struct __GLXFBConfigRec *GLXFBConfigSGIX;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIX_pbuffer
|
|
||||||
typedef XID GLXPbufferSGIX;
|
|
||||||
typedef struct {
|
|
||||||
int type;
|
|
||||||
unsigned long serial; /* # of last request processed by server */
|
|
||||||
Bool send_event; /* true if this came for SendEvent request */
|
|
||||||
Display *display; /* display the event was read from */
|
|
||||||
GLXDrawable drawable; /* i.d. of Drawable */
|
|
||||||
int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */
|
|
||||||
int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */
|
|
||||||
unsigned int mask; /* mask indicating which buffers are affected*/
|
|
||||||
int x, y;
|
|
||||||
int width, height;
|
|
||||||
int count; /* if nonzero, at least this many more */
|
|
||||||
} GLXBufferClobberEventSGIX;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_VERSION_1_3
|
|
||||||
#define GLX_VERSION_1_3 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern GLXFBConfig * glXGetFBConfigs (Display *, int, int *);
|
|
||||||
extern GLXFBConfig * glXChooseFBConfig (Display *, int, const int *, int *);
|
|
||||||
extern int glXGetFBConfigAttrib (Display *, GLXFBConfig, int, int *);
|
|
||||||
extern XVisualInfo * glXGetVisualFromFBConfig (Display *, GLXFBConfig);
|
|
||||||
extern GLXWindow glXCreateWindow (Display *, GLXFBConfig, Window, const int *);
|
|
||||||
extern void glXDestroyWindow (Display *, GLXWindow);
|
|
||||||
extern GLXPixmap glXCreatePixmap (Display *, GLXFBConfig, Pixmap, const int *);
|
|
||||||
extern void glXDestroyPixmap (Display *, GLXPixmap);
|
|
||||||
extern GLXPbuffer glXCreatePbuffer (Display *, GLXFBConfig, const int *);
|
|
||||||
extern void glXDestroyPbuffer (Display *, GLXPbuffer);
|
|
||||||
extern void glXQueryDrawable (Display *, GLXDrawable, int, unsigned int *);
|
|
||||||
extern GLXContext glXCreateNewContext (Display *, GLXFBConfig, int, GLXContext, Bool);
|
|
||||||
extern Bool glXMakeContextCurrent (Display *, GLXDrawable, GLXDrawable, GLXContext);
|
|
||||||
extern GLXDrawable glXGetCurrentReadDrawable (void);
|
|
||||||
extern Display * glXGetCurrentDisplay (void);
|
|
||||||
extern int glXQueryContext (Display *, GLXContext, int, int *);
|
|
||||||
extern void glXSelectEvent (Display *, GLXDrawable, unsigned long);
|
|
||||||
extern void glXGetSelectedEvent (Display *, GLXDrawable, unsigned long *);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef GLXFBConfig * ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements);
|
|
||||||
typedef GLXFBConfig * ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements);
|
|
||||||
typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value);
|
|
||||||
typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config);
|
|
||||||
typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list);
|
|
||||||
typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win);
|
|
||||||
typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list);
|
|
||||||
typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap);
|
|
||||||
typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list);
|
|
||||||
typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf);
|
|
||||||
typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
|
|
||||||
typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
|
|
||||||
typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
|
|
||||||
typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void);
|
|
||||||
typedef Display * ( * PFNGLXGETCURRENTDISPLAYPROC) (void);
|
|
||||||
typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value);
|
|
||||||
typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask);
|
|
||||||
typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_VERSION_1_4
|
|
||||||
#define GLX_VERSION_1_4 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_ARB_get_proc_address
|
|
||||||
#define GLX_ARB_get_proc_address 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_ARB_multisample
|
|
||||||
#define GLX_ARB_multisample 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIS_multisample
|
|
||||||
#define GLX_SGIS_multisample 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_EXT_visual_info
|
|
||||||
#define GLX_EXT_visual_info 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGI_swap_control
|
|
||||||
#define GLX_SGI_swap_control 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern int glXSwapIntervalSGI (int);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGI_video_sync
|
|
||||||
#define GLX_SGI_video_sync 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern int glXGetVideoSyncSGI (unsigned int *);
|
|
||||||
extern int glXWaitVideoSyncSGI (int, int, unsigned int *);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int *count);
|
|
||||||
typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int *count);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGI_make_current_read
|
|
||||||
#define GLX_SGI_make_current_read 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern Bool glXMakeCurrentReadSGI (Display *, GLXDrawable, GLXDrawable, GLXContext);
|
|
||||||
extern GLXDrawable glXGetCurrentReadDrawableSGI (void);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
|
|
||||||
typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef _VL_H
|
|
||||||
#ifndef GLX_SGIX_video_source
|
|
||||||
#define GLX_SGIX_video_source 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern GLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX (Display *, int, VLServer, VLPath, int, VLNode);
|
|
||||||
extern void glXDestroyGLXVideoSourceSGIX (Display *, GLXVideoSourceSGIX);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef GLXVideoSourceSGIX ( * PFNGLXCREATEGLXVIDEOSOURCESGIXPROC) (Display *display, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode);
|
|
||||||
typedef void ( * PFNGLXDESTROYGLXVIDEOSOURCESGIXPROC) (Display *dpy, GLXVideoSourceSGIX glxvideosource);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* _VL_H */
|
|
||||||
#ifndef GLX_EXT_visual_rating
|
|
||||||
#define GLX_EXT_visual_rating 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_EXT_import_context
|
|
||||||
#define GLX_EXT_import_context 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern Display * glXGetCurrentDisplayEXT (void);
|
|
||||||
extern int glXQueryContextInfoEXT (Display *, GLXContext, int, int *);
|
|
||||||
extern GLXContextID glXGetContextIDEXT (const GLXContext);
|
|
||||||
extern GLXContext glXImportContextEXT (Display *, GLXContextID);
|
|
||||||
extern void glXFreeContextEXT (Display *, GLXContext);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef Display * ( * PFNGLXGETCURRENTDISPLAYEXTPROC) (void);
|
|
||||||
typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display *dpy, GLXContext context, int attribute, int *value);
|
|
||||||
typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context);
|
|
||||||
typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display *dpy, GLXContextID contextID);
|
|
||||||
typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display *dpy, GLXContext context);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIX_fbconfig
|
|
||||||
#define GLX_SGIX_fbconfig 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern int glXGetFBConfigAttribSGIX (Display *, GLXFBConfigSGIX, int, int *);
|
|
||||||
extern GLXFBConfigSGIX * glXChooseFBConfigSGIX (Display *, int, int *, int *);
|
|
||||||
extern GLXPixmap glXCreateGLXPixmapWithConfigSGIX (Display *, GLXFBConfigSGIX, Pixmap);
|
|
||||||
extern GLXContext glXCreateContextWithConfigSGIX (Display *, GLXFBConfigSGIX, int, GLXContext, Bool);
|
|
||||||
extern XVisualInfo * glXGetVisualFromFBConfigSGIX (Display *, GLXFBConfigSGIX);
|
|
||||||
extern GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX (Display *, XVisualInfo *);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int attribute, int *value);
|
|
||||||
typedef GLXFBConfigSGIX * ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display *dpy, int screen, int *attrib_list, int *nelements);
|
|
||||||
typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap);
|
|
||||||
typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct);
|
|
||||||
typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config);
|
|
||||||
typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display *dpy, XVisualInfo *vis);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIX_pbuffer
|
|
||||||
#define GLX_SGIX_pbuffer 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern GLXPbufferSGIX glXCreateGLXPbufferSGIX (Display *, GLXFBConfigSGIX, unsigned int, unsigned int, int *);
|
|
||||||
extern void glXDestroyGLXPbufferSGIX (Display *, GLXPbufferSGIX);
|
|
||||||
extern int glXQueryGLXPbufferSGIX (Display *, GLXPbufferSGIX, int, unsigned int *);
|
|
||||||
extern void glXSelectEventSGIX (Display *, GLXDrawable, unsigned long);
|
|
||||||
extern void glXGetSelectedEventSGIX (Display *, GLXDrawable, unsigned long *);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef GLXPbufferSGIX ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list);
|
|
||||||
typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf);
|
|
||||||
typedef int ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value);
|
|
||||||
typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long mask);
|
|
||||||
typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long *mask);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGI_cushion
|
|
||||||
#define GLX_SGI_cushion 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern void glXCushionSGI (Display *, Window, float);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef void ( * PFNGLXCUSHIONSGIPROC) (Display *dpy, Window window, float cushion);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIX_video_resize
|
|
||||||
#define GLX_SGIX_video_resize 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern int glXBindChannelToWindowSGIX (Display *, int, int, Window);
|
|
||||||
extern int glXChannelRectSGIX (Display *, int, int, int, int, int, int);
|
|
||||||
extern int glXQueryChannelRectSGIX (Display *, int, int, int *, int *, int *, int *);
|
|
||||||
extern int glXQueryChannelDeltasSGIX (Display *, int, int, int *, int *, int *, int *);
|
|
||||||
extern int glXChannelRectSyncSGIX (Display *, int, int, GLenum);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display *display, int screen, int channel, Window window);
|
|
||||||
typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int x, int y, int w, int h);
|
|
||||||
typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int *dx, int *dy, int *dw, int *dh);
|
|
||||||
typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display *display, int screen, int channel, int *x, int *y, int *w, int *h);
|
|
||||||
typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display *display, int screen, int channel, GLenum synctype);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef _DM_BUFFER_H_
|
|
||||||
#ifndef GLX_SGIX_dmbuffer
|
|
||||||
#define GLX_SGIX_dmbuffer 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern Bool glXAssociateDMPbufferSGIX (Display *, GLXPbufferSGIX, DMparams *, DMbuffer);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef Bool ( * PFNGLXASSOCIATEDMPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* _DM_BUFFER_H_ */
|
|
||||||
#ifndef GLX_SGIX_swap_group
|
|
||||||
#define GLX_SGIX_swap_group 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern void glXJoinSwapGroupSGIX (Display *, GLXDrawable, GLXDrawable);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display *dpy, GLXDrawable drawable, GLXDrawable member);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIX_swap_barrier
|
|
||||||
#define GLX_SGIX_swap_barrier 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern void glXBindSwapBarrierSGIX (Display *, GLXDrawable, int);
|
|
||||||
extern Bool glXQueryMaxSwapBarriersSGIX (Display *, int, int *);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display *dpy, GLXDrawable drawable, int barrier);
|
|
||||||
typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display *dpy, int screen, int *max);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SUN_get_transparent_index
|
|
||||||
#define GLX_SUN_get_transparent_index 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern Status glXGetTransparentIndexSUN (Display *, Window, Window, long *);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display *dpy, Window overlay, Window underlay, long *pTransparentIndex);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_MESA_copy_sub_buffer
|
|
||||||
#define GLX_MESA_copy_sub_buffer 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern void glXCopySubBufferMESA (Display *, GLXDrawable, int, int, int, int);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display *dpy, GLXDrawable drawable, int x, int y, int width, int height);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_MESA_pixmap_colormap
|
|
||||||
#define GLX_MESA_pixmap_colormap 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern GLXPixmap glXCreateGLXPixmapMESA (Display *, XVisualInfo *, Pixmap, Colormap);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_MESA_release_buffers
|
|
||||||
#define GLX_MESA_release_buffers 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern Bool glXReleaseBuffersMESA (Display *, GLXDrawable);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display *dpy, GLXDrawable drawable);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_MESA_set_3dfx_mode
|
|
||||||
#define GLX_MESA_set_3dfx_mode 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern Bool glXSet3DfxModeMESA (int);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef Bool ( * PFNGLXSET3DFXMODEMESAPROC) (int mode);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_SGIX_visual_select_group
|
|
||||||
#define GLX_SGIX_visual_select_group 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLX_OML_swap_method
|
|
||||||
#define GLX_OML_swap_method 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__STDC_VERSION__)
|
|
||||||
#if __STDC_VERSION__ >= 199901L
|
|
||||||
/* Include ISO C99 integer types for OML_sync_control; need a better test */
|
|
||||||
#include <inttypes.h>
|
|
||||||
|
|
||||||
#ifndef GLX_OML_sync_control
|
|
||||||
#define GLX_OML_sync_control 1
|
|
||||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
|
||||||
extern Bool glXGetSyncValuesOML (Display *, GLXDrawable, int64_t *, int64_t *, int64_t *);
|
|
||||||
extern Bool glXGetMscRateOML (Display *, GLXDrawable, int32_t *, int32_t *);
|
|
||||||
extern int64_t glXSwapBuffersMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t);
|
|
||||||
extern Bool glXWaitForMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t, int64_t *, int64_t *, int64_t *);
|
|
||||||
extern Bool glXWaitForSbcOML (Display *, GLXDrawable, int64_t, int64_t *, int64_t *, int64_t *);
|
|
||||||
#endif /* GLX_GLXEXT_PROTOTYPES */
|
|
||||||
typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t *ust, int64_t *msc, int64_t *sbc);
|
|
||||||
typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator);
|
|
||||||
typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder);
|
|
||||||
typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc);
|
|
||||||
typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_sbc, int64_t *ust, int64_t *msc, int64_t *sbc);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* C99 version test */
|
|
||||||
#endif /* STDC test */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,424 +0,0 @@
|
|||||||
#ifndef __gl_core_h_
|
|
||||||
#define __gl_core_h_
|
|
||||||
|
|
||||||
/*
|
|
||||||
** License Applicability. Except to the extent portions of this file are
|
|
||||||
** made subject to an alternative license as permitted in the SGI Free
|
|
||||||
** Software License B, Version 1.1 (the "License"), the contents of this
|
|
||||||
** file are subject only to the provisions of the License. You may not use
|
|
||||||
** this file except in compliance with the License. You may obtain a copy
|
|
||||||
** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
|
|
||||||
** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
|
|
||||||
**
|
|
||||||
** http://oss.sgi.com/projects/FreeB
|
|
||||||
**
|
|
||||||
** Note that, as provided in the License, the Software is distributed on an
|
|
||||||
** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
|
|
||||||
** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
|
|
||||||
** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
|
|
||||||
** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
|
|
||||||
**
|
|
||||||
** Original Code. The Original Code is: OpenGL Sample Implementation,
|
|
||||||
** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
|
|
||||||
** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
|
|
||||||
** Copyright in any portions created by third parties is as indicated
|
|
||||||
** elsewhere herein. All Rights Reserved.
|
|
||||||
**
|
|
||||||
** Additional Notice Provisions: The application programming interfaces
|
|
||||||
** established by SGI in conjunction with the Original Code are The
|
|
||||||
** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
|
|
||||||
** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
|
|
||||||
** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
|
|
||||||
** Window System(R) (Version 1.3), released October 19, 1998. This software
|
|
||||||
** was created using the OpenGL(R) version 1.2.1 Sample Implementation
|
|
||||||
** published by SGI, but has not been independently verified as being
|
|
||||||
** compliant with the OpenGL(R) version 1.2.1 Specification.
|
|
||||||
**
|
|
||||||
** $Date: 2001/01/08 03:56:53 $ $Revision: 1.1 $
|
|
||||||
** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/include/GL/internal/Attic/glcore-new.h,v 1.1 2001/01/08 03:56:53 keithw Exp $
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef XFree86LOADER
|
|
||||||
#include "xf86_ansic.h"
|
|
||||||
#else
|
|
||||||
#include <sys/types.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct __GLcontextRec __GLcontext;
|
|
||||||
typedef struct __GLinterfaceRec __GLinterface;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** This file defines the interface between the GL core and the surrounding
|
|
||||||
** "operating system" that supports it (currently the GLX or WGL extensions).
|
|
||||||
**
|
|
||||||
** Members (data and function pointers) are documented as imported or
|
|
||||||
** exported according to how they are used by the core rendering functions.
|
|
||||||
** Imported members are initialized by the "operating system" and used by
|
|
||||||
** the core functions. Exported members are initialized by the core functions
|
|
||||||
** and used by the "operating system".
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Mode and limit information for a context. This information is
|
|
||||||
** kept around in the context so that values can be used during
|
|
||||||
** command execution, and for returning information about the
|
|
||||||
** context to the application.
|
|
||||||
*/
|
|
||||||
typedef struct __GLcontextModesRec {
|
|
||||||
GLboolean rgbMode;
|
|
||||||
GLboolean colorIndexMode;
|
|
||||||
GLboolean doubleBufferMode;
|
|
||||||
GLboolean stereoMode;
|
|
||||||
|
|
||||||
GLboolean haveAccumBuffer;
|
|
||||||
GLboolean haveDepthBuffer;
|
|
||||||
GLboolean haveStencilBuffer;
|
|
||||||
|
|
||||||
GLint redBits, greenBits, blueBits, alphaBits; /* bits per comp */
|
|
||||||
GLuint redMask, greenMask, blueMask, alphaMask;
|
|
||||||
GLint rgbBits; /* total bits for rgb */
|
|
||||||
GLint indexBits; /* total bits for colorindex */
|
|
||||||
|
|
||||||
GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits;
|
|
||||||
GLint depthBits;
|
|
||||||
GLint stencilBits;
|
|
||||||
|
|
||||||
GLint numAuxBuffers;
|
|
||||||
|
|
||||||
GLint level;
|
|
||||||
|
|
||||||
GLint pixmapMode;
|
|
||||||
} __GLcontextModes;
|
|
||||||
|
|
||||||
/************************************************************************/
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Structure used for allocating and freeing drawable private memory.
|
|
||||||
** (like software buffers, for example).
|
|
||||||
**
|
|
||||||
** The memory allocation routines are provided by the surrounding
|
|
||||||
** "operating system" code, and they are to be used for allocating
|
|
||||||
** software buffers and things which are associated with the drawable,
|
|
||||||
** and used by any context which draws to that drawable. There are
|
|
||||||
** separate memory allocation functions for drawables and contexts
|
|
||||||
** since drawables and contexts can be created and destroyed independently
|
|
||||||
** of one another, and the "operating system" may want to use separate
|
|
||||||
** allocation arenas for each.
|
|
||||||
**
|
|
||||||
** The freePrivate function is filled in by the core routines when they
|
|
||||||
** allocates software buffers, and stick them in "private". The freePrivate
|
|
||||||
** function will destroy anything allocated to this drawable (to be called
|
|
||||||
** when the drawable is destroyed).
|
|
||||||
*/
|
|
||||||
typedef struct __GLdrawableRegionRec __GLdrawableRegion;
|
|
||||||
typedef struct __GLdrawableBufferRec __GLdrawableBuffer;
|
|
||||||
typedef struct __GLdrawablePrivateRec __GLdrawablePrivate;
|
|
||||||
|
|
||||||
typedef struct __GLregionRectRec {
|
|
||||||
/* lower left (inside the rectangle) */
|
|
||||||
GLint x0, y0;
|
|
||||||
/* upper right (outside the rectangle) */
|
|
||||||
GLint x1, y1;
|
|
||||||
} __GLregionRect;
|
|
||||||
|
|
||||||
struct __GLdrawableRegionRec {
|
|
||||||
GLint numRects;
|
|
||||||
__GLregionRect *rects;
|
|
||||||
__GLregionRect boundingRect;
|
|
||||||
};
|
|
||||||
|
|
||||||
/************************************************************************/
|
|
||||||
|
|
||||||
/* masks for the buffers */
|
|
||||||
#define __GL_FRONT_BUFFER_MASK 0x00000001
|
|
||||||
#define __GL_FRONT_LEFT_BUFFER_MASK 0x00000001
|
|
||||||
#define __GL_FRONT_RIGHT_BUFFER_MASK 0x00000002
|
|
||||||
#define __GL_BACK_BUFFER_MASK 0x00000004
|
|
||||||
#define __GL_BACK_LEFT_BUFFER_MASK 0x00000004
|
|
||||||
#define __GL_BACK_RIGHT_BUFFER_MASK 0x00000008
|
|
||||||
#define __GL_ACCUM_BUFFER_MASK 0x00000010
|
|
||||||
#define __GL_DEPTH_BUFFER_MASK 0x00000020
|
|
||||||
#define __GL_STENCIL_BUFFER_MASK 0x00000040
|
|
||||||
#define __GL_AUX_BUFFER_MASK(i) (0x0000080 << (i))
|
|
||||||
|
|
||||||
#define __GL_ALL_BUFFER_MASK 0xffffffff
|
|
||||||
|
|
||||||
/* what Resize routines return if resize resorted to fallback case */
|
|
||||||
#define __GL_BUFFER_FALLBACK 0x10
|
|
||||||
|
|
||||||
typedef void (*__GLbufFallbackInitFn)(__GLdrawableBuffer *buf,
|
|
||||||
__GLdrawablePrivate *glPriv, GLint bits);
|
|
||||||
typedef void (*__GLbufMainInitFn)(__GLdrawableBuffer *buf,
|
|
||||||
__GLdrawablePrivate *glPriv, GLint bits,
|
|
||||||
__GLbufFallbackInitFn back);
|
|
||||||
|
|
||||||
/*
|
|
||||||
** A drawable buffer
|
|
||||||
**
|
|
||||||
** This data structure describes the context side of a drawable.
|
|
||||||
**
|
|
||||||
** According to the spec there could be multiple contexts bound to the same
|
|
||||||
** drawable at the same time (from different threads). In order to avoid
|
|
||||||
** multiple-access conflicts, locks are used to serialize access. When a
|
|
||||||
** thread needs to access (read or write) a member of the drawable, it takes
|
|
||||||
** a lock first. Some of the entries in the drawable are treated "mostly
|
|
||||||
** constant", so we take the freedom of allowing access to them without
|
|
||||||
** taking a lock (for optimization reasons).
|
|
||||||
**
|
|
||||||
** For more details regarding locking, see buffers.h in the GL core
|
|
||||||
*/
|
|
||||||
struct __GLdrawableBufferRec {
|
|
||||||
/*
|
|
||||||
** Buffer dimensions
|
|
||||||
*/
|
|
||||||
GLint width, height, depth;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Framebuffer base address
|
|
||||||
*/
|
|
||||||
void *base;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Framebuffer size (in bytes)
|
|
||||||
*/
|
|
||||||
GLuint size;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Size (in bytes) of each element in the framebuffer
|
|
||||||
*/
|
|
||||||
GLuint elementSize;
|
|
||||||
GLuint elementSizeLog2;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Element skip from one scanline to the next.
|
|
||||||
** If the buffer is part of another buffer (for example, fullscreen
|
|
||||||
** front buffer), outerWidth is the width of that buffer.
|
|
||||||
*/
|
|
||||||
GLint outerWidth;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** outerWidth * elementSize
|
|
||||||
*/
|
|
||||||
GLint byteWidth;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Allocation/deallocation is done based on this handle. A handle
|
|
||||||
** is conceptually different from the framebuffer 'base'.
|
|
||||||
*/
|
|
||||||
void *handle;
|
|
||||||
|
|
||||||
/* imported */
|
|
||||||
GLboolean (*resize)(__GLdrawableBuffer *buf,
|
|
||||||
GLint x, GLint y, GLuint width, GLuint height,
|
|
||||||
__GLdrawablePrivate *glPriv, GLuint bufferMask);
|
|
||||||
void (*lock)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv);
|
|
||||||
void (*unlock)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv);
|
|
||||||
void (*fill)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv,
|
|
||||||
GLuint val, GLint x, GLint y, GLint w, GLint h);
|
|
||||||
void (*free)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv);
|
|
||||||
|
|
||||||
/* exported */
|
|
||||||
void (*freePrivate)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv);
|
|
||||||
#ifdef __cplusplus
|
|
||||||
void *privatePtr;
|
|
||||||
#else
|
|
||||||
void *private;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* private */
|
|
||||||
void *other; /* implementation private data */
|
|
||||||
__GLbufMainInitFn mainInit;
|
|
||||||
__GLbufFallbackInitFn fallbackInit;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
** The context side of the drawable private
|
|
||||||
*/
|
|
||||||
struct __GLdrawablePrivateRec {
|
|
||||||
/*
|
|
||||||
** Drawable Modes
|
|
||||||
*/
|
|
||||||
__GLcontextModes *modes;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Drawable size
|
|
||||||
*/
|
|
||||||
GLuint width, height;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Origin in screen coordinates of the drawable
|
|
||||||
*/
|
|
||||||
GLint xOrigin, yOrigin;
|
|
||||||
#ifdef __GL_ALIGNED_BUFFERS
|
|
||||||
/*
|
|
||||||
** Drawable offset from screen origin
|
|
||||||
*/
|
|
||||||
GLint xOffset, yOffset;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Alignment restriction
|
|
||||||
*/
|
|
||||||
GLint xAlignment, yAlignment;
|
|
||||||
#endif
|
|
||||||
/*
|
|
||||||
** Should we invert the y axis?
|
|
||||||
*/
|
|
||||||
GLint yInverted;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Mask specifying which buffers are renderable by the hw
|
|
||||||
*/
|
|
||||||
GLuint accelBufferMask;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** the buffers themselves
|
|
||||||
*/
|
|
||||||
__GLdrawableBuffer frontBuffer;
|
|
||||||
__GLdrawableBuffer backBuffer;
|
|
||||||
__GLdrawableBuffer accumBuffer;
|
|
||||||
__GLdrawableBuffer depthBuffer;
|
|
||||||
__GLdrawableBuffer stencilBuffer;
|
|
||||||
#if __GL_NUMBER_OF_AUX_BUFFERS > 0
|
|
||||||
__GLdrawableBuffer *auxBuffer;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
__GLdrawableRegion ownershipRegion;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Lock for the drawable private structure
|
|
||||||
*/
|
|
||||||
void *lock;
|
|
||||||
#ifdef DEBUG
|
|
||||||
/* lock debugging info */
|
|
||||||
int lockRefCount;
|
|
||||||
int lockLine[10];
|
|
||||||
char *lockFile[10];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* imported */
|
|
||||||
void *(*malloc)(size_t size);
|
|
||||||
void *(*calloc)(size_t numElem, size_t elemSize);
|
|
||||||
void *(*realloc)(void *oldAddr, size_t newSize);
|
|
||||||
void (*free)(void *addr);
|
|
||||||
|
|
||||||
GLboolean (*addSwapRect)(__GLdrawablePrivate *glPriv,
|
|
||||||
GLint x, GLint y, GLsizei width, GLsizei height);
|
|
||||||
void (*setClipRect)(__GLdrawablePrivate *glPriv,
|
|
||||||
GLint x, GLint y, GLsizei width, GLsizei height);
|
|
||||||
void (*updateClipRegion)(__GLdrawablePrivate *glPriv);
|
|
||||||
GLboolean (*resize)(__GLdrawablePrivate *glPriv);
|
|
||||||
void (*getDrawableSize)(__GLdrawablePrivate *glPriv,
|
|
||||||
GLint *x, GLint *y, GLuint *width, GLuint *height);
|
|
||||||
|
|
||||||
void (*lockDP)(__GLdrawablePrivate *glPriv, __GLcontext *gc);
|
|
||||||
void (*unlockDP)(__GLdrawablePrivate *glPriv);
|
|
||||||
|
|
||||||
/* exported */
|
|
||||||
void *wsPriv; /* pointer to the window system DrawablePrivate */
|
|
||||||
#ifdef __cplusplus
|
|
||||||
void *privatePtr;
|
|
||||||
#else
|
|
||||||
void *private;
|
|
||||||
#endif
|
|
||||||
void (*freePrivate)(__GLdrawablePrivate *);
|
|
||||||
|
|
||||||
/* client data */
|
|
||||||
void *other;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Macros to lock/unlock the drawable private
|
|
||||||
*/
|
|
||||||
#if defined(DEBUG)
|
|
||||||
#define __GL_LOCK_DP(glPriv,gc) \
|
|
||||||
(*(glPriv)->lockDP)(glPriv,gc); \
|
|
||||||
(glPriv)->lockLine[(glPriv)->lockRefCount] = __LINE__; \
|
|
||||||
(glPriv)->lockFile[(glPriv)->lockRefCount] = __FILE__; \
|
|
||||||
(glPriv)->lockRefCount++
|
|
||||||
#define __GL_UNLOCK_DP(glPriv) \
|
|
||||||
(glPriv)->lockRefCount--; \
|
|
||||||
(glPriv)->lockLine[(glPriv)->lockRefCount] = 0; \
|
|
||||||
(glPriv)->lockFile[(glPriv)->lockRefCount] = NULL; \
|
|
||||||
(*(glPriv)->unlockDP)(glPriv)
|
|
||||||
#else /* DEBUG */
|
|
||||||
#define __GL_LOCK_DP(glPriv,gc) (*(glPriv)->lockDP)(glPriv,gc)
|
|
||||||
#define __GL_UNLOCK_DP(glPriv) (*(glPriv)->unlockDP)(glPriv)
|
|
||||||
#endif /* DEBUG */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Procedures which are imported by the GL from the surrounding
|
|
||||||
** "operating system". Math functions are not considered part of the
|
|
||||||
** "operating system".
|
|
||||||
*/
|
|
||||||
typedef struct __GLimportsRec {
|
|
||||||
/* Memory management */
|
|
||||||
void * (*malloc)(__GLcontext *gc, size_t size);
|
|
||||||
void *(*calloc)(__GLcontext *gc, size_t numElem, size_t elemSize);
|
|
||||||
void *(*realloc)(__GLcontext *gc, void *oldAddr, size_t newSize);
|
|
||||||
void (*free)(__GLcontext *gc, void *addr);
|
|
||||||
|
|
||||||
/* Error handling */
|
|
||||||
void (*warning)(__GLcontext *gc, char *fmt);
|
|
||||||
void (*fatal)(__GLcontext *gc, char *fmt);
|
|
||||||
|
|
||||||
/* other system calls */
|
|
||||||
char *(CAPI *getenv)(__GLcontext *gc, const char *var);
|
|
||||||
int (CAPI *atoi)(__GLcontext *gc, const char *str);
|
|
||||||
int (CAPI *sprintf)(__GLcontext *gc, char *str, const char *fmt, ...);
|
|
||||||
void *(CAPI *fopen)(__GLcontext *gc, const char *path, const char *mode);
|
|
||||||
int (CAPI *fclose)(__GLcontext *gc, void *stream);
|
|
||||||
int (CAPI *fprintf)(__GLcontext *gc, void *stream, const char *fmt, ...);
|
|
||||||
|
|
||||||
/* Drawing surface management */
|
|
||||||
__GLdrawablePrivate *(*getDrawablePrivate)(__GLcontext *gc);
|
|
||||||
|
|
||||||
/* Pointer to the window system context */
|
|
||||||
void *wscx;
|
|
||||||
|
|
||||||
/* Operating system dependent data goes here */
|
|
||||||
void *other;
|
|
||||||
} __GLimports;
|
|
||||||
|
|
||||||
/************************************************************************/
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Procedures which are exported by the GL to the surrounding "operating
|
|
||||||
** system" so that it can manage multiple GL context's.
|
|
||||||
*/
|
|
||||||
typedef struct __GLexportsRec {
|
|
||||||
/* Context management (return GL_FALSE on failure) */
|
|
||||||
GLboolean (*destroyContext)(__GLcontext *gc);
|
|
||||||
GLboolean (*loseCurrent)(__GLcontext *gc);
|
|
||||||
GLboolean (*makeCurrent)(__GLcontext *gc);
|
|
||||||
GLboolean (*shareContext)(__GLcontext *gc, __GLcontext *gcShare);
|
|
||||||
GLboolean (*copyContext)(__GLcontext *dst, const __GLcontext *src, GLuint mask);
|
|
||||||
GLboolean (*forceCurrent)(__GLcontext *gc);
|
|
||||||
|
|
||||||
/* Drawing surface notification callbacks */
|
|
||||||
GLboolean (*notifyResize)(__GLcontext *gc);
|
|
||||||
void (*notifyDestroy)(__GLcontext *gc);
|
|
||||||
void (*notifySwapBuffers)(__GLcontext *gc);
|
|
||||||
|
|
||||||
/* Dispatch table override control for external agents like libGLS */
|
|
||||||
struct __GLdispatchStateRec* (*dispatchExec)(__GLcontext *gc);
|
|
||||||
void (*beginDispatchOverride)(__GLcontext *gc);
|
|
||||||
void (*endDispatchOverride)(__GLcontext *gc);
|
|
||||||
} __GLexports;
|
|
||||||
|
|
||||||
/************************************************************************/
|
|
||||||
|
|
||||||
/*
|
|
||||||
** This must be the first member of a __GLcontext structure. This is the
|
|
||||||
** only part of a context that is exposed to the outside world; everything
|
|
||||||
** else is opaque.
|
|
||||||
*/
|
|
||||||
struct __GLinterfaceRec {
|
|
||||||
__GLimports imports;
|
|
||||||
__GLexports exports;
|
|
||||||
};
|
|
||||||
|
|
||||||
extern __GLcontext *__glCoreCreateContext(__GLimports *, __GLcontextModes *);
|
|
||||||
extern void __glCoreNopDispatch(void);
|
|
||||||
|
|
||||||
#endif /* __gl_core_h_ */
|
|
||||||
@@ -1,431 +0,0 @@
|
|||||||
/* $XFree86: xc/lib/GL/include/GL/internal/glcore.h,v 1.7 2001/03/25 05:32:00 tsi Exp $ */
|
|
||||||
#ifndef __gl_core_h_
|
|
||||||
#define __gl_core_h_
|
|
||||||
|
|
||||||
/*
|
|
||||||
** License Applicability. Except to the extent portions of this file are
|
|
||||||
** made subject to an alternative license as permitted in the SGI Free
|
|
||||||
** Software License B, Version 1.1 (the "License"), the contents of this
|
|
||||||
** file are subject only to the provisions of the License. You may not use
|
|
||||||
** this file except in compliance with the License. You may obtain a copy
|
|
||||||
** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
|
|
||||||
** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
|
|
||||||
**
|
|
||||||
** http://oss.sgi.com/projects/FreeB
|
|
||||||
**
|
|
||||||
** Note that, as provided in the License, the Software is distributed on an
|
|
||||||
** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
|
|
||||||
** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
|
|
||||||
** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
|
|
||||||
** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
|
|
||||||
**
|
|
||||||
** Original Code. The Original Code is: OpenGL Sample Implementation,
|
|
||||||
** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
|
|
||||||
** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
|
|
||||||
** Copyright in any portions created by third parties is as indicated
|
|
||||||
** elsewhere herein. All Rights Reserved.
|
|
||||||
**
|
|
||||||
** Additional Notice Provisions: The application programming interfaces
|
|
||||||
** established by SGI in conjunction with the Original Code are The
|
|
||||||
** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
|
|
||||||
** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
|
|
||||||
** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
|
|
||||||
** Window System(R) (Version 1.3), released October 19, 1998. This software
|
|
||||||
** was created using the OpenGL(R) version 1.2.1 Sample Implementation
|
|
||||||
** published by SGI, but has not been independently verified as being
|
|
||||||
** compliant with the OpenGL(R) version 1.2.1 Specification.
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef XFree86LOADER
|
|
||||||
#include <sys/types.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define GL_CORE_SGI 1
|
|
||||||
#define GL_CORE_MESA 2
|
|
||||||
|
|
||||||
typedef struct __GLcontextRec __GLcontext;
|
|
||||||
typedef struct __GLinterfaceRec __GLinterface;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** This file defines the interface between the GL core and the surrounding
|
|
||||||
** "operating system" that supports it (currently the GLX or WGL extensions).
|
|
||||||
**
|
|
||||||
** Members (data and function pointers) are documented as imported or
|
|
||||||
** exported according to how they are used by the core rendering functions.
|
|
||||||
** Imported members are initialized by the "operating system" and used by
|
|
||||||
** the core functions. Exported members are initialized by the core functions
|
|
||||||
** and used by the "operating system".
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Mode and limit information for a context. This information is
|
|
||||||
** kept around in the context so that values can be used during
|
|
||||||
** command execution, and for returning information about the
|
|
||||||
** context to the application.
|
|
||||||
*/
|
|
||||||
typedef struct __GLcontextModesRec {
|
|
||||||
GLboolean rgbMode;
|
|
||||||
GLboolean colorIndexMode;
|
|
||||||
GLboolean doubleBufferMode;
|
|
||||||
GLboolean stereoMode;
|
|
||||||
|
|
||||||
GLboolean haveAccumBuffer;
|
|
||||||
GLboolean haveDepthBuffer;
|
|
||||||
GLboolean haveStencilBuffer;
|
|
||||||
|
|
||||||
GLint redBits, greenBits, blueBits, alphaBits; /* bits per comp */
|
|
||||||
GLuint redMask, greenMask, blueMask, alphaMask;
|
|
||||||
GLint rgbBits; /* total bits for rgb */
|
|
||||||
GLint indexBits; /* total bits for colorindex */
|
|
||||||
|
|
||||||
GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits;
|
|
||||||
GLint depthBits;
|
|
||||||
GLint stencilBits;
|
|
||||||
|
|
||||||
GLint numAuxBuffers;
|
|
||||||
|
|
||||||
GLint level;
|
|
||||||
|
|
||||||
GLint pixmapMode;
|
|
||||||
} __GLcontextModes;
|
|
||||||
|
|
||||||
/************************************************************************/
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Structure used for allocating and freeing drawable private memory.
|
|
||||||
** (like software buffers, for example).
|
|
||||||
**
|
|
||||||
** The memory allocation routines are provided by the surrounding
|
|
||||||
** "operating system" code, and they are to be used for allocating
|
|
||||||
** software buffers and things which are associated with the drawable,
|
|
||||||
** and used by any context which draws to that drawable. There are
|
|
||||||
** separate memory allocation functions for drawables and contexts
|
|
||||||
** since drawables and contexts can be created and destroyed independently
|
|
||||||
** of one another, and the "operating system" may want to use separate
|
|
||||||
** allocation arenas for each.
|
|
||||||
**
|
|
||||||
** The freePrivate function is filled in by the core routines when they
|
|
||||||
** allocates software buffers, and stick them in "private". The freePrivate
|
|
||||||
** function will destroy anything allocated to this drawable (to be called
|
|
||||||
** when the drawable is destroyed).
|
|
||||||
*/
|
|
||||||
typedef struct __GLdrawableRegionRec __GLdrawableRegion;
|
|
||||||
typedef struct __GLdrawableBufferRec __GLdrawableBuffer;
|
|
||||||
typedef struct __GLdrawablePrivateRec __GLdrawablePrivate;
|
|
||||||
|
|
||||||
typedef struct __GLregionRectRec {
|
|
||||||
/* lower left (inside the rectangle) */
|
|
||||||
GLint x0, y0;
|
|
||||||
/* upper right (outside the rectangle) */
|
|
||||||
GLint x1, y1;
|
|
||||||
} __GLregionRect;
|
|
||||||
|
|
||||||
struct __GLdrawableRegionRec {
|
|
||||||
GLint numRects;
|
|
||||||
__GLregionRect *rects;
|
|
||||||
__GLregionRect boundingRect;
|
|
||||||
};
|
|
||||||
|
|
||||||
/************************************************************************/
|
|
||||||
|
|
||||||
/* masks for the buffers */
|
|
||||||
#define __GL_FRONT_BUFFER_MASK 0x00000001
|
|
||||||
#define __GL_FRONT_LEFT_BUFFER_MASK 0x00000001
|
|
||||||
#define __GL_FRONT_RIGHT_BUFFER_MASK 0x00000002
|
|
||||||
#define __GL_BACK_BUFFER_MASK 0x00000004
|
|
||||||
#define __GL_BACK_LEFT_BUFFER_MASK 0x00000004
|
|
||||||
#define __GL_BACK_RIGHT_BUFFER_MASK 0x00000008
|
|
||||||
#define __GL_ACCUM_BUFFER_MASK 0x00000010
|
|
||||||
#define __GL_DEPTH_BUFFER_MASK 0x00000020
|
|
||||||
#define __GL_STENCIL_BUFFER_MASK 0x00000040
|
|
||||||
#define __GL_AUX_BUFFER_MASK(i) (0x0000080 << (i))
|
|
||||||
|
|
||||||
#define __GL_ALL_BUFFER_MASK 0xffffffff
|
|
||||||
|
|
||||||
/* what Resize routines return if resize resorted to fallback case */
|
|
||||||
#define __GL_BUFFER_FALLBACK 0x10
|
|
||||||
|
|
||||||
typedef void (*__GLbufFallbackInitFn)(__GLdrawableBuffer *buf,
|
|
||||||
__GLdrawablePrivate *glPriv, GLint bits);
|
|
||||||
typedef void (*__GLbufMainInitFn)(__GLdrawableBuffer *buf,
|
|
||||||
__GLdrawablePrivate *glPriv, GLint bits,
|
|
||||||
__GLbufFallbackInitFn back);
|
|
||||||
|
|
||||||
/*
|
|
||||||
** A drawable buffer
|
|
||||||
**
|
|
||||||
** This data structure describes the context side of a drawable.
|
|
||||||
**
|
|
||||||
** According to the spec there could be multiple contexts bound to the same
|
|
||||||
** drawable at the same time (from different threads). In order to avoid
|
|
||||||
** multiple-access conflicts, locks are used to serialize access. When a
|
|
||||||
** thread needs to access (read or write) a member of the drawable, it takes
|
|
||||||
** a lock first. Some of the entries in the drawable are treated "mostly
|
|
||||||
** constant", so we take the freedom of allowing access to them without
|
|
||||||
** taking a lock (for optimization reasons).
|
|
||||||
**
|
|
||||||
** For more details regarding locking, see buffers.h in the GL core
|
|
||||||
*/
|
|
||||||
struct __GLdrawableBufferRec {
|
|
||||||
/*
|
|
||||||
** Buffer dimensions
|
|
||||||
*/
|
|
||||||
GLint width, height, depth;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Framebuffer base address
|
|
||||||
*/
|
|
||||||
void *base;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Framebuffer size (in bytes)
|
|
||||||
*/
|
|
||||||
GLuint size;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Size (in bytes) of each element in the framebuffer
|
|
||||||
*/
|
|
||||||
GLuint elementSize;
|
|
||||||
GLuint elementSizeLog2;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Element skip from one scanline to the next.
|
|
||||||
** If the buffer is part of another buffer (for example, fullscreen
|
|
||||||
** front buffer), outerWidth is the width of that buffer.
|
|
||||||
*/
|
|
||||||
GLint outerWidth;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** outerWidth * elementSize
|
|
||||||
*/
|
|
||||||
GLint byteWidth;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Allocation/deallocation is done based on this handle. A handle
|
|
||||||
** is conceptually different from the framebuffer 'base'.
|
|
||||||
*/
|
|
||||||
void *handle;
|
|
||||||
|
|
||||||
/* imported */
|
|
||||||
GLboolean (*resize)(__GLdrawableBuffer *buf,
|
|
||||||
GLint x, GLint y, GLuint width, GLuint height,
|
|
||||||
__GLdrawablePrivate *glPriv, GLuint bufferMask);
|
|
||||||
void (*lock)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv);
|
|
||||||
void (*unlock)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv);
|
|
||||||
void (*fill)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv,
|
|
||||||
GLuint val, GLint x, GLint y, GLint w, GLint h);
|
|
||||||
void (*free)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv);
|
|
||||||
|
|
||||||
/* exported */
|
|
||||||
void (*freePrivate)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv);
|
|
||||||
#ifdef __cplusplus
|
|
||||||
void *privatePtr;
|
|
||||||
#else
|
|
||||||
void *private;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* private */
|
|
||||||
void *other; /* implementation private data */
|
|
||||||
__GLbufMainInitFn mainInit;
|
|
||||||
__GLbufFallbackInitFn fallbackInit;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
** The context side of the drawable private
|
|
||||||
*/
|
|
||||||
struct __GLdrawablePrivateRec {
|
|
||||||
/*
|
|
||||||
** Drawable Modes
|
|
||||||
*/
|
|
||||||
__GLcontextModes *modes;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Drawable size
|
|
||||||
*/
|
|
||||||
GLuint width, height;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Origin in screen coordinates of the drawable
|
|
||||||
*/
|
|
||||||
GLint xOrigin, yOrigin;
|
|
||||||
#ifdef __GL_ALIGNED_BUFFERS
|
|
||||||
/*
|
|
||||||
** Drawable offset from screen origin
|
|
||||||
*/
|
|
||||||
GLint xOffset, yOffset;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Alignment restriction
|
|
||||||
*/
|
|
||||||
GLint xAlignment, yAlignment;
|
|
||||||
#endif
|
|
||||||
/*
|
|
||||||
** Should we invert the y axis?
|
|
||||||
*/
|
|
||||||
GLint yInverted;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Mask specifying which buffers are renderable by the hw
|
|
||||||
*/
|
|
||||||
GLuint accelBufferMask;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** the buffers themselves
|
|
||||||
*/
|
|
||||||
__GLdrawableBuffer frontBuffer;
|
|
||||||
__GLdrawableBuffer backBuffer;
|
|
||||||
__GLdrawableBuffer accumBuffer;
|
|
||||||
__GLdrawableBuffer depthBuffer;
|
|
||||||
__GLdrawableBuffer stencilBuffer;
|
|
||||||
#if defined(__GL_NUMBER_OF_AUX_BUFFERS) && (__GL_NUMBER_OF_AUX_BUFFERS > 0)
|
|
||||||
__GLdrawableBuffer *auxBuffer;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
__GLdrawableRegion ownershipRegion;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Lock for the drawable private structure
|
|
||||||
*/
|
|
||||||
void *lock;
|
|
||||||
#ifdef DEBUG
|
|
||||||
/* lock debugging info */
|
|
||||||
int lockRefCount;
|
|
||||||
int lockLine[10];
|
|
||||||
char *lockFile[10];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* imported */
|
|
||||||
void *(*malloc)(size_t size);
|
|
||||||
void *(*calloc)(size_t numElem, size_t elemSize);
|
|
||||||
void *(*realloc)(void *oldAddr, size_t newSize);
|
|
||||||
void (*free)(void *addr);
|
|
||||||
|
|
||||||
GLboolean (*addSwapRect)(__GLdrawablePrivate *glPriv,
|
|
||||||
GLint x, GLint y, GLsizei width, GLsizei height);
|
|
||||||
void (*setClipRect)(__GLdrawablePrivate *glPriv,
|
|
||||||
GLint x, GLint y, GLsizei width, GLsizei height);
|
|
||||||
void (*updateClipRegion)(__GLdrawablePrivate *glPriv);
|
|
||||||
GLboolean (*resize)(__GLdrawablePrivate *glPriv);
|
|
||||||
void (*getDrawableSize)(__GLdrawablePrivate *glPriv,
|
|
||||||
GLint *x, GLint *y, GLuint *width, GLuint *height);
|
|
||||||
|
|
||||||
void (*lockDP)(__GLdrawablePrivate *glPriv, __GLcontext *gc);
|
|
||||||
void (*unlockDP)(__GLdrawablePrivate *glPriv);
|
|
||||||
|
|
||||||
/* exported */
|
|
||||||
#if 0 /* disable, just like in __GLimportsRec */
|
|
||||||
void *wsPriv; /* pointer to the window system DrawablePrivate */
|
|
||||||
#endif
|
|
||||||
#ifdef __cplusplus
|
|
||||||
void *privatePtr;
|
|
||||||
#else
|
|
||||||
void *private;
|
|
||||||
#endif
|
|
||||||
void (*freePrivate)(__GLdrawablePrivate *);
|
|
||||||
|
|
||||||
/* client data */
|
|
||||||
void *other;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Macros to lock/unlock the drawable private
|
|
||||||
*/
|
|
||||||
#if defined(DEBUG)
|
|
||||||
#define __GL_LOCK_DP(glPriv,gc) \
|
|
||||||
(*(glPriv)->lockDP)(glPriv,gc); \
|
|
||||||
(glPriv)->lockLine[(glPriv)->lockRefCount] = __LINE__; \
|
|
||||||
(glPriv)->lockFile[(glPriv)->lockRefCount] = __FILE__; \
|
|
||||||
(glPriv)->lockRefCount++
|
|
||||||
#define __GL_UNLOCK_DP(glPriv) \
|
|
||||||
(glPriv)->lockRefCount--; \
|
|
||||||
(glPriv)->lockLine[(glPriv)->lockRefCount] = 0; \
|
|
||||||
(glPriv)->lockFile[(glPriv)->lockRefCount] = NULL; \
|
|
||||||
(*(glPriv)->unlockDP)(glPriv)
|
|
||||||
#else /* DEBUG */
|
|
||||||
#define __GL_LOCK_DP(glPriv,gc) (*(glPriv)->lockDP)(glPriv,gc)
|
|
||||||
#define __GL_UNLOCK_DP(glPriv) (*(glPriv)->unlockDP)(glPriv)
|
|
||||||
#endif /* DEBUG */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Procedures which are imported by the GL from the surrounding
|
|
||||||
** "operating system". Math functions are not considered part of the
|
|
||||||
** "operating system".
|
|
||||||
*/
|
|
||||||
typedef struct __GLimportsRec {
|
|
||||||
/* Memory management */
|
|
||||||
void * (*malloc)(__GLcontext *gc, size_t size);
|
|
||||||
void *(*calloc)(__GLcontext *gc, size_t numElem, size_t elemSize);
|
|
||||||
void *(*realloc)(__GLcontext *gc, void *oldAddr, size_t newSize);
|
|
||||||
void (*free)(__GLcontext *gc, void *addr);
|
|
||||||
|
|
||||||
/* Error handling */
|
|
||||||
void (*warning)(__GLcontext *gc, char *fmt);
|
|
||||||
void (*fatal)(__GLcontext *gc, char *fmt);
|
|
||||||
|
|
||||||
/* other system calls */
|
|
||||||
char *(CAPI *getenv)(__GLcontext *gc, const char *var);
|
|
||||||
int (CAPI *atoi)(__GLcontext *gc, const char *str);
|
|
||||||
int (CAPI *sprintf)(__GLcontext *gc, char *str, const char *fmt, ...);
|
|
||||||
void *(CAPI *fopen)(__GLcontext *gc, const char *path, const char *mode);
|
|
||||||
int (CAPI *fclose)(__GLcontext *gc, void *stream);
|
|
||||||
int (CAPI *fprintf)(__GLcontext *gc, void *stream, const char *fmt, ...);
|
|
||||||
|
|
||||||
/* Drawing surface management */
|
|
||||||
__GLdrawablePrivate *(*getDrawablePrivate)(__GLcontext *gc);
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* At some point, this field got removed from the XFree86 glcore.h file.
|
|
||||||
* we're removing it here to prevent interop problems. (Brian)
|
|
||||||
*/
|
|
||||||
/* Pointer to the window system context */
|
|
||||||
void *wscx;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Operating system dependent data goes here */
|
|
||||||
void *other;
|
|
||||||
} __GLimports;
|
|
||||||
|
|
||||||
/************************************************************************/
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Procedures which are exported by the GL to the surrounding "operating
|
|
||||||
** system" so that it can manage multiple GL context's.
|
|
||||||
*/
|
|
||||||
typedef struct __GLexportsRec {
|
|
||||||
/* Context management (return GL_FALSE on failure) */
|
|
||||||
GLboolean (*destroyContext)(__GLcontext *gc);
|
|
||||||
GLboolean (*loseCurrent)(__GLcontext *gc);
|
|
||||||
GLboolean (*makeCurrent)(__GLcontext *gc);
|
|
||||||
GLboolean (*shareContext)(__GLcontext *gc, __GLcontext *gcShare);
|
|
||||||
GLboolean (*copyContext)(__GLcontext *dst, const __GLcontext *src, GLuint mask);
|
|
||||||
GLboolean (*forceCurrent)(__GLcontext *gc);
|
|
||||||
|
|
||||||
/* Drawing surface notification callbacks */
|
|
||||||
GLboolean (*notifyResize)(__GLcontext *gc);
|
|
||||||
void (*notifyDestroy)(__GLcontext *gc);
|
|
||||||
void (*notifySwapBuffers)(__GLcontext *gc);
|
|
||||||
|
|
||||||
/* Dispatch table override control for external agents like libGLS */
|
|
||||||
struct __GLdispatchStateRec* (*dispatchExec)(__GLcontext *gc);
|
|
||||||
void (*beginDispatchOverride)(__GLcontext *gc);
|
|
||||||
void (*endDispatchOverride)(__GLcontext *gc);
|
|
||||||
} __GLexports;
|
|
||||||
|
|
||||||
/************************************************************************/
|
|
||||||
|
|
||||||
/*
|
|
||||||
** This must be the first member of a __GLcontext structure. This is the
|
|
||||||
** only part of a context that is exposed to the outside world; everything
|
|
||||||
** else is opaque.
|
|
||||||
*/
|
|
||||||
struct __GLinterfaceRec {
|
|
||||||
__GLimports imports;
|
|
||||||
__GLexports exports;
|
|
||||||
};
|
|
||||||
|
|
||||||
extern __GLcontext *__glCoreCreateContext(__GLimports *, __GLcontextModes *);
|
|
||||||
extern void __glCoreNopDispatch(void);
|
|
||||||
|
|
||||||
#endif /* __gl_core_h_ */
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: mesa_wgl.h,v 1.6 2001/05/07 13:58:00 gareth Exp $ */
|
/* $Id: mesa_wgl.h,v 1.2.2.2 1999/11/22 14:05:15 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -28,8 +28,6 @@
|
|||||||
/* prototypes for the Mesa WGL functions */
|
/* prototypes for the Mesa WGL functions */
|
||||||
/* relocated here so that I could make GLUT get them properly */
|
/* relocated here so that I could make GLUT get them properly */
|
||||||
|
|
||||||
#define _mesa_wgl_h_
|
|
||||||
|
|
||||||
#ifndef _mesa_wgl_h_
|
#ifndef _mesa_wgl_h_
|
||||||
#define _mesa_wgl_h_
|
#define _mesa_wgl_h_
|
||||||
|
|
||||||
@@ -41,41 +39,6 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if !defined(OPENSTEP) && (defined(__WIN32__) || defined(__CYGWIN32__))
|
|
||||||
# if defined(_MSC_VER) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
|
|
||||||
# define GLAPI __declspec(dllexport)
|
|
||||||
# define WGLAPI __declspec(dllexport)
|
|
||||||
# elif defined(_MSC_VER) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
|
|
||||||
# define GLAPI __declspec(dllimport)
|
|
||||||
# define WGLAPI __declspec(dllimport)
|
|
||||||
# else /* for use with static link lib build of Win32 edition only */
|
|
||||||
# define GLAPI extern
|
|
||||||
# define WGLAPI __declspec(dllimport)
|
|
||||||
# endif /* _STATIC_MESA support */
|
|
||||||
# define GLAPIENTRY __stdcall
|
|
||||||
#else
|
|
||||||
/* non-Windows compilation */
|
|
||||||
# define GLAPI extern
|
|
||||||
# define GLAPIENTRY
|
|
||||||
#endif /* WIN32 / CYGWIN32 bracket */
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(_WIN32) && !defined(_WINGDI_) && !defined(_GNU_H_WINDOWS32_DEFINES) && !defined(OPENSTEP)
|
|
||||||
#ifndef _GNU_H_WINDOWS32_FUNCTIONS
|
|
||||||
# ifdef UNICODE
|
|
||||||
# define wglUseFontBitmaps wglUseFontBitmapsW
|
|
||||||
# define wglUseFontOutlines wglUseFontOutlinesW
|
|
||||||
# else
|
|
||||||
# define wglUseFontBitmaps wglUseFontBitmapsA
|
|
||||||
# define wglUseFontOutlines wglUseFontOutlinesA
|
|
||||||
# endif /* !UNICODE */
|
|
||||||
#endif /* _GNU_H_WINDOWS32_FUNCTIONS */
|
|
||||||
typedef struct tagLAYERPLANEDESCRIPTOR LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR;
|
|
||||||
typedef struct _GLYPHMETRICSFLOAT GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT;
|
|
||||||
typedef struct tagPIXELFORMATDESCRIPTOR PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR, *LPPIXELFORMATDESCRIPTOR;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
# pragma warning( disable : 4615 ) /* pragma warning : unknown user warning type*/
|
# pragma warning( disable : 4615 ) /* pragma warning : unknown user warning type*/
|
||||||
# pragma warning( push )
|
# pragma warning( push )
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
/* $Id: osmesa.h,v 1.10 2002/04/04 16:58:04 brianp Exp $ */
|
/* $Id: osmesa.h,v 1.1.1.1.2.2 2000/02/09 18:53:55 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 4.1
|
* Version: 3.2
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
|
* Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
@@ -50,21 +50,23 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef OSMESA_H
|
#ifndef OSMESA_H
|
||||||
#define OSMESA_H
|
#define OSMESA_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include <GL/gl.h>
|
#include "GL/gl.h"
|
||||||
|
|
||||||
|
|
||||||
#define OSMESA_MAJOR_VERSION 4
|
|
||||||
#define OSMESA_MINOR_VERSION 1
|
#define OSMESA_MAJOR_VERSION 3
|
||||||
#define OSMESA_PATCH_VERSION 0
|
#define OSMESA_MINOR_VERSION 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -78,7 +80,6 @@ extern "C" {
|
|||||||
#define OSMESA_ARGB 0x2
|
#define OSMESA_ARGB 0x2
|
||||||
#define OSMESA_RGB GL_RGB
|
#define OSMESA_RGB GL_RGB
|
||||||
#define OSMESA_BGR 0x4
|
#define OSMESA_BGR 0x4
|
||||||
#define OSMESA_RGB_565 0x5
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -96,8 +97,7 @@ extern "C" {
|
|||||||
#define OSMESA_HEIGHT 0x21
|
#define OSMESA_HEIGHT 0x21
|
||||||
#define OSMESA_FORMAT 0x22
|
#define OSMESA_FORMAT 0x22
|
||||||
#define OSMESA_TYPE 0x23
|
#define OSMESA_TYPE 0x23
|
||||||
#define OSMESA_MAX_WIDTH 0x24 /* new in 4.0 */
|
|
||||||
#define OSMESA_MAX_HEIGHT 0x25 /* new in 4.0 */
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct osmesa_context *OSMesaContext;
|
typedef struct osmesa_context *OSMesaContext;
|
||||||
@@ -118,31 +118,18 @@ typedef struct osmesa_context *OSMesaContext;
|
|||||||
* display lists. NULL indicates no sharing.
|
* display lists. NULL indicates no sharing.
|
||||||
* Return: an OSMesaContext or 0 if error
|
* Return: an OSMesaContext or 0 if error
|
||||||
*/
|
*/
|
||||||
GLAPI OSMesaContext GLAPIENTRY
|
GLAPI OSMesaContext GLAPIENTRY OSMesaCreateContext( GLenum format,
|
||||||
OSMesaCreateContext( GLenum format, OSMesaContext sharelist );
|
OSMesaContext sharelist );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Create an Off-Screen Mesa rendering context and specify desired
|
|
||||||
* size of depth buffer, stencil buffer and accumulation buffer.
|
|
||||||
* If you specify zero for depthBits, stencilBits, accumBits you
|
|
||||||
* can save some memory.
|
|
||||||
*
|
|
||||||
* New in Mesa 3.5
|
|
||||||
*/
|
|
||||||
GLAPI OSMesaContext GLAPIENTRY
|
|
||||||
OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits,
|
|
||||||
GLint accumBits, OSMesaContext sharelist);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Destroy an Off-Screen Mesa rendering context.
|
* Destroy an Off-Screen Mesa rendering context.
|
||||||
*
|
*
|
||||||
* Input: ctx - the context to destroy
|
* Input: ctx - the context to destroy
|
||||||
*/
|
*/
|
||||||
GLAPI void GLAPIENTRY
|
GLAPI void GLAPIENTRY OSMesaDestroyContext( OSMesaContext ctx );
|
||||||
OSMesaDestroyContext( OSMesaContext ctx );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -173,9 +160,9 @@ OSMesaDestroyContext( OSMesaContext ctx );
|
|||||||
* invalid buffer address, type!=GL_UNSIGNED_BYTE, width<1, height<1,
|
* invalid buffer address, type!=GL_UNSIGNED_BYTE, width<1, height<1,
|
||||||
* width>internal limit or height>internal limit.
|
* width>internal limit or height>internal limit.
|
||||||
*/
|
*/
|
||||||
GLAPI GLboolean GLAPIENTRY
|
GLAPI GLboolean GLAPIENTRY OSMesaMakeCurrent( OSMesaContext ctx,
|
||||||
OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type,
|
void *buffer, GLenum type,
|
||||||
GLsizei width, GLsizei height );
|
GLsizei width, GLsizei height );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -183,8 +170,7 @@ OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type,
|
|||||||
/*
|
/*
|
||||||
* Return the current Off-Screen Mesa rendering context handle.
|
* Return the current Off-Screen Mesa rendering context handle.
|
||||||
*/
|
*/
|
||||||
GLAPI OSMesaContext GLAPIENTRY
|
GLAPI OSMesaContext GLAPIENTRY OSMesaGetCurrentContext( void );
|
||||||
OSMesaGetCurrentContext( void );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -201,13 +187,12 @@ OSMesaGetCurrentContext( void );
|
|||||||
*
|
*
|
||||||
* New in version 2.0.
|
* New in version 2.0.
|
||||||
*/
|
*/
|
||||||
GLAPI void GLAPIENTRY
|
GLAPI void GLAPIENTRY OSMesaPixelStore( GLint pname, GLint value );
|
||||||
OSMesaPixelStore( GLint pname, GLint value );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return an integer value like glGetIntegerv.
|
* Return context info. This is like glGetIntegerv.
|
||||||
* Input: pname -
|
* Input: pname -
|
||||||
* OSMESA_WIDTH return current image width
|
* OSMESA_WIDTH return current image width
|
||||||
* OSMESA_HEIGHT return current image height
|
* OSMESA_HEIGHT return current image height
|
||||||
@@ -217,8 +202,7 @@ OSMesaPixelStore( GLint pname, GLint value );
|
|||||||
* OSMESA_Y_UP returns 1 or 0 to indicate Y axis direction
|
* OSMESA_Y_UP returns 1 or 0 to indicate Y axis direction
|
||||||
* value - pointer to integer in which to return result.
|
* value - pointer to integer in which to return result.
|
||||||
*/
|
*/
|
||||||
GLAPI void GLAPIENTRY
|
GLAPI void GLAPIENTRY OSMesaGetIntegerv( GLint pname, GLint *value );
|
||||||
OSMesaGetIntegerv( GLint pname, GLint *value );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -232,36 +216,12 @@ OSMesaGetIntegerv( GLint pname, GLint *value );
|
|||||||
*
|
*
|
||||||
* New in Mesa 2.4.
|
* New in Mesa 2.4.
|
||||||
*/
|
*/
|
||||||
GLAPI GLboolean GLAPIENTRY
|
GLAPI GLboolean GLAPIENTRY OSMesaGetDepthBuffer( OSMesaContext c,
|
||||||
OSMesaGetDepthBuffer( OSMesaContext c, GLint *width, GLint *height,
|
GLint *width, GLint *height,
|
||||||
GLint *bytesPerValue, void **buffer );
|
GLint *bytesPerValue, void **buffer );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Return the color buffer associated with an OSMesa context.
|
|
||||||
* Input: c - the OSMesa context
|
|
||||||
* Output: width, height - size of buffer in pixels
|
|
||||||
* format - buffer format (OSMESA_FORMAT)
|
|
||||||
* buffer - pointer to depth buffer values
|
|
||||||
* Return: GL_TRUE or GL_FALSE to indicate success or failure.
|
|
||||||
*
|
|
||||||
* New in Mesa 3.3.
|
|
||||||
*/
|
|
||||||
GLAPI GLboolean GLAPIENTRY
|
|
||||||
OSMesaGetColorBuffer( OSMesaContext c, GLint *width, GLint *height,
|
|
||||||
GLint *format, void **buffer );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Return pointer to the named function.
|
|
||||||
*
|
|
||||||
* New in Mesa 4.1
|
|
||||||
*/
|
|
||||||
GLAPI void * GLAPIENTRY
|
|
||||||
OSMesaGetProcAddress( const char *funcName );
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(__BEOS__) || defined(__QUICKDRAW__)
|
#if defined(__BEOS__) || defined(__QUICKDRAW__)
|
||||||
#pragma export off
|
#pragma export off
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
/* $Id: svgamesa.h,v 1.6 2001/09/23 16:06:13 brianp Exp $ */
|
/* $Id: svgamesa.h,v 1.1.1.1.2.2 2000/01/22 19:58:02 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 4.0
|
* Version: 3.2
|
||||||
* Copyright (C) 1995-2001 Brian Paul
|
* Copyright (C) 1995-2000 Brian Paul
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Library General Public
|
* modify it under the terms of the GNU Library General Public
|
||||||
@@ -52,8 +52,8 @@
|
|||||||
#define SVGAMESA_H
|
#define SVGAMESA_H
|
||||||
|
|
||||||
|
|
||||||
#define SVGAMESA_MAJOR_VERSION 4
|
#define SVGAMESA_MAJOR_VERSION 3
|
||||||
#define SVGAMESA_MINOR_VERSION 0
|
#define SVGAMESA_MINOR_VERSION 2
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
/* uglglutshapes.h - Public header GLUT Shapes */
|
|
||||||
|
|
||||||
/* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998. */
|
|
||||||
|
|
||||||
/* This program is freely distributable without licensing fees and is
|
|
||||||
provided without guarantee or warrantee expressed or implied. This
|
|
||||||
program is -not- in the public domain. */
|
|
||||||
|
|
||||||
#ifndef GLUTSHAPES_H
|
|
||||||
#define GLUTSHAPES_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <GL/gl.h>
|
|
||||||
|
|
||||||
void glutWireSphere (GLdouble radius, GLint slices, GLint stacks);
|
|
||||||
void glutSolidSphere (GLdouble radius, GLint slices, GLint stacks);
|
|
||||||
void glutWireCone (GLdouble base, GLdouble height,
|
|
||||||
GLint slices, GLint stacks);
|
|
||||||
void glutSolidCone (GLdouble base, GLdouble height,
|
|
||||||
GLint slices, GLint stacks);
|
|
||||||
void glutWireCube (GLdouble size);
|
|
||||||
void glutSolidCube (GLdouble size);
|
|
||||||
void glutWireTorus (GLdouble innerRadius, GLdouble outerRadius,
|
|
||||||
GLint sides, GLint rings);
|
|
||||||
void glutSolidTorus (GLdouble innerRadius, GLdouble outerRadius,
|
|
||||||
GLint sides, GLint rings);
|
|
||||||
void glutWireDodecahedron (void);
|
|
||||||
void glutSolidDodecahedron (void);
|
|
||||||
void glutWireOctahedron (void);
|
|
||||||
void glutSolidOctahedron (void);
|
|
||||||
void glutWireTetrahedron (void);
|
|
||||||
void glutSolidTetrahedron (void);
|
|
||||||
void glutWireIcosahedron (void);
|
|
||||||
void glutSolidIcosahedron (void);
|
|
||||||
void glutWireTeapot (GLdouble size);
|
|
||||||
void glutSolidTeapot (GLdouble size);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,155 +0,0 @@
|
|||||||
/* uglmesa.h - Public header UGL/Mesa */
|
|
||||||
|
|
||||||
/* Copyright (C) 2001 by Wind River Systems, Inc */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Mesa 3-D graphics library
|
|
||||||
* Version: 4.0
|
|
||||||
*
|
|
||||||
* The MIT License
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
* and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is 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 Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS 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 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 SOFTWARE OR THE USE OR OTHER
|
|
||||||
* DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Author:
|
|
||||||
* Stephane Raimbault <stephane.raimbault@windriver.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef UGLMESA_H
|
|
||||||
#define UGLMESA_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define UGL_MESA_MAJOR_VERSION 4
|
|
||||||
#define UGL_MESA_MINOR_VERSION 0
|
|
||||||
|
|
||||||
#include <GL/gl.h>
|
|
||||||
#include <ugl/ugl.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Values for display mode of uglMesaCreateContext ()
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* With these mask values, it's possible to test double buffer mode
|
|
||||||
* with UGL_MESA_DOUBLE mask
|
|
||||||
*
|
|
||||||
* SINGLE 0000 0001
|
|
||||||
* DOUBLE 0000 0110
|
|
||||||
* - SOFT 0000 0010
|
|
||||||
* - HARD 0000 0100
|
|
||||||
* WINDML 0001 0000
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define UGL_MESA_SINGLE 0x01
|
|
||||||
#define UGL_MESA_DOUBLE 0x06
|
|
||||||
#define UGL_MESA_DOUBLE_SOFTWARE 0x02
|
|
||||||
#define UGL_MESA_DOUBLE_HARDWARE 0x04
|
|
||||||
|
|
||||||
#define UGL_MESA_WINDML_EXCLUSIVE 0x10
|
|
||||||
|
|
||||||
#define UGL_MESA_FULLSCREEN_WIDTH 0x0
|
|
||||||
#define UGL_MESA_FULLSCREEN_HEIGHT 0x0
|
|
||||||
|
|
||||||
/*
|
|
||||||
* uglMesaPixelStore() parameters:
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define UGL_MESA_ROW_LENGTH 0x20
|
|
||||||
#define UGL_MESA_Y_UP 0x21
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Accepted by uglMesaGetIntegerv:
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define UGL_MESA_LEFT_X 0x01
|
|
||||||
#define UGL_MESA_TOP_Y 0x02
|
|
||||||
#define UGL_MESA_WIDTH 0x03
|
|
||||||
#define UGL_MESA_HEIGHT 0x04
|
|
||||||
#define UGL_MESA_DISPLAY_WIDTH 0x05
|
|
||||||
#define UGL_MESA_DISPLAY_HEIGHT 0x06
|
|
||||||
#define UGL_MESA_COLOR_FORMAT 0x07
|
|
||||||
#define UGL_MESA_COLOR_MODEL 0x08
|
|
||||||
#define UGL_MESA_PIXEL_FORMAT 0x09
|
|
||||||
#define UGL_MESA_TYPE 0x0A
|
|
||||||
#define UGL_MESA_RGB 0x0B
|
|
||||||
#define UGL_MESA_COLOR_INDEXED 0x0C
|
|
||||||
#define UGL_MESA_SINGLE_BUFFER 0x0D
|
|
||||||
#define UGL_MESA_DOUBLE_BUFFER 0x0E
|
|
||||||
#define UGL_MESA_DOUBLE_BUFFER_SOFTWARE 0x0F
|
|
||||||
#define UGL_MESA_DOUBLE_BUFFER_HARDWARE 0x10
|
|
||||||
|
|
||||||
/*
|
|
||||||
* typedefs
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef struct uglMesaContext * UGL_MESA_CONTEXT;
|
|
||||||
|
|
||||||
UGL_MESA_CONTEXT uglMesaCreateNewContext (GLenum mode,
|
|
||||||
UGL_MESA_CONTEXT share_list);
|
|
||||||
|
|
||||||
UGL_MESA_CONTEXT uglMesaCreateNewContextExt (GLenum mode,
|
|
||||||
GLint depth_bits,
|
|
||||||
GLint stencil_bits,
|
|
||||||
GLint accum_red_bits,
|
|
||||||
GLint accum_green_bits,
|
|
||||||
GLint accum_blue_bits,
|
|
||||||
GLint accum_alpha_bits,
|
|
||||||
UGL_MESA_CONTEXT share_list);
|
|
||||||
|
|
||||||
GLboolean uglMesaMakeCurrentContext (UGL_MESA_CONTEXT umc,
|
|
||||||
GLsizei left, GLsizei top,
|
|
||||||
GLsizei width, GLsizei height);
|
|
||||||
|
|
||||||
GLboolean uglMesaMoveWindow (GLsizei dx, GLsizei dy);
|
|
||||||
|
|
||||||
GLboolean uglMesaMoveToWindow (GLsizei left, GLsizei top);
|
|
||||||
|
|
||||||
GLboolean uglMesaResizeWindow (GLsizei dw, GLsizei dh);
|
|
||||||
|
|
||||||
GLboolean uglMesaResizeToWindow (GLsizei width, GLsizei height);
|
|
||||||
|
|
||||||
void uglMesaDestroyContext (void);
|
|
||||||
|
|
||||||
UGL_MESA_CONTEXT uglMesaGetCurrentContext (void);
|
|
||||||
|
|
||||||
void uglMesaSwapBuffers (void);
|
|
||||||
|
|
||||||
void uglMesaPixelStore (GLint pname, GLint value);
|
|
||||||
|
|
||||||
void uglMesaGetIntegerv (GLint pname, GLint *value);
|
|
||||||
|
|
||||||
GLboolean uglMesaGetDepthBuffer (GLint *width, GLint *height,
|
|
||||||
GLint *bytesPerValue, void **buffer);
|
|
||||||
|
|
||||||
GLboolean uglMesaGetColorBuffer (GLint *width, GLint *height,
|
|
||||||
GLint *format, void **buffer);
|
|
||||||
|
|
||||||
GLboolean uglMesaSetColor (GLubyte index, GLfloat red,
|
|
||||||
GLfloat green, GLfloat blue);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,880 +0,0 @@
|
|||||||
/***************************************************************************
|
|
||||||
* *
|
|
||||||
* Repair definitions of Xlib when compileing with /name=(as_is) on VMS *
|
|
||||||
* *
|
|
||||||
* Author : Jouk Jansen (joukj@hrem.stm.tudelft.nl) *
|
|
||||||
* *
|
|
||||||
* Last revision : 22 August 2000 *
|
|
||||||
* *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#ifndef VMS_X_FIX
|
|
||||||
#define VMS_X_FIX
|
|
||||||
|
|
||||||
#define _XRegisterFilterByType _XREGISTERFILTERBYTYPE
|
|
||||||
#define XAllocClassHint XALLOCCLASSHINT
|
|
||||||
#define XAllocColor XALLOCCOLOR
|
|
||||||
#define XAllocColorCells XALLOCCOLORCELLS
|
|
||||||
#define XAllocSizeHints XALLOCSIZEHINTS
|
|
||||||
#define XAllocWMHints XALLOCWMHINTS
|
|
||||||
#define XAutoRepeatOff XAUTOREPEATOFF
|
|
||||||
#define XAutoRepeatOn XAUTOREPEATON
|
|
||||||
#define XBaseFontNameListOfFontSet XBASEFONTNAMELISTOFFONTSET
|
|
||||||
#define XBell XBELL
|
|
||||||
#define XBitmapPad XBITMAPPAD
|
|
||||||
#define XChangeActivePointerGrab XCHANGEACTIVEPOINTERGRAB
|
|
||||||
#define XChangeGC XCHANGEGC
|
|
||||||
#define XChangeProperty XCHANGEPROPERTY
|
|
||||||
#define XChangeWindowAttributes XCHANGEWINDOWATTRIBUTES
|
|
||||||
#define XCheckIfEvent XCHECKIFEVENT
|
|
||||||
#define XCheckMaskEvent XCHECKMASKEVENT
|
|
||||||
#define XCheckTypedWindowEvent XCHECKTYPEDWINDOWEVENT
|
|
||||||
#define XCheckWindowEvent XCHECKWINDOWEVENT
|
|
||||||
#define XClearArea XCLEARAREA
|
|
||||||
#define XClearWindow XCLEARWINDOW
|
|
||||||
#define XClipBox XCLIPBOX
|
|
||||||
#define XCloseDisplay XCLOSEDISPLAY
|
|
||||||
#define XCloseIM XCLOSEIM
|
|
||||||
#define XConfigureWindow XCONFIGUREWINDOW
|
|
||||||
#define XConvertSelection XCONVERTSELECTION
|
|
||||||
#define XCopyArea XCOPYAREA
|
|
||||||
#define XCopyGC XCOPYGC
|
|
||||||
#define XCopyPlane XCOPYPLANE
|
|
||||||
#define XCreateBitmapFromData XCREATEBITMAPFROMDATA
|
|
||||||
#define XCreateColormap XCREATECOLORMAP
|
|
||||||
#define XCreateFontCursor XCREATEFONTCURSOR
|
|
||||||
#define XCreateFontSet XCREATEFONTSET
|
|
||||||
#define XCreateGC XCREATEGC
|
|
||||||
#define XCreateIC XCREATEIC
|
|
||||||
#define XCreateImage XCREATEIMAGE
|
|
||||||
#define XCreatePixmap XCREATEPIXMAP
|
|
||||||
#define XCreatePixmapCursor XCREATEPIXMAPCURSOR
|
|
||||||
#define XCreatePixmapFromBitmapData XCREATEPIXMAPFROMBITMAPDATA
|
|
||||||
#define XCreateRegion XCREATEREGION
|
|
||||||
#define XCreateSimpleWindow XCREATESIMPLEWINDOW
|
|
||||||
#define XCreateWindow XCREATEWINDOW
|
|
||||||
#define XDefaultScreenOfDisplay XDEFAULTSCREENOFDISPLAY
|
|
||||||
#define XDefineCursor XDEFINECURSOR
|
|
||||||
#define XDeleteProperty XDELETEPROPERTY
|
|
||||||
#define XDestroyIC XDESTROYIC
|
|
||||||
#define XDestroyRegion XDESTROYREGION
|
|
||||||
#define XDestroyWindow XDESTROYWINDOW
|
|
||||||
#define XDisplayName XDISPLAYNAME
|
|
||||||
#define XDisplayOfScreen XDISPLAYOFSCREEN
|
|
||||||
#define XDrawArc XDRAWARC
|
|
||||||
#define XDrawImageString XDRAWIMAGESTRING
|
|
||||||
#define XDrawImageString16 XDRAWIMAGESTRING16
|
|
||||||
#define XDrawLine XDRAWLINE
|
|
||||||
#define XDrawLines XDRAWLINES
|
|
||||||
#define XDrawPoint XDRAWPOINT
|
|
||||||
#define XDrawPoints XDRAWPOINTS
|
|
||||||
#define XDrawRectangle XDRAWRECTANGLE
|
|
||||||
#define XDrawSegments XDRAWSEGMENTS
|
|
||||||
#define XDrawString XDRAWSTRING
|
|
||||||
#define XDrawString16 XDRAWSTRING16
|
|
||||||
#define XEmptyRegion XEMPTYREGION
|
|
||||||
#define XEqualRegion XEQUALREGION
|
|
||||||
#define XEventsQueued XEVENTSQUEUED
|
|
||||||
#define XExtentsOfFontSet XEXTENTSOFFONTSET
|
|
||||||
#define XFillArc XFILLARC
|
|
||||||
#define XFillPolygon XFILLPOLYGON
|
|
||||||
#define XFillRectangle XFILLRECTANGLE
|
|
||||||
#define XFillRectangles XFILLRECTANGLES
|
|
||||||
#define XFilterEvent XFILTEREVENT
|
|
||||||
#define XFlush XFLUSH
|
|
||||||
#define XFontsOfFontSet XFONTSOFFONTSET
|
|
||||||
#define XFree XFREE
|
|
||||||
#define XFreeColormap XFREECOLORMAP
|
|
||||||
#define XFreeColors XFREECOLORS
|
|
||||||
#define XFreeCursor XFREECURSOR
|
|
||||||
#define XFreeFont XFREEFONT
|
|
||||||
#define XFreeFontInfo XFREEFONTINFO
|
|
||||||
#define XFreeFontNames XFREEFONTNAMES
|
|
||||||
#define XFreeFontSet XFREEFONTSET
|
|
||||||
#define XFreeGC XFREEGC
|
|
||||||
#define XFreeModifiermap XFREEMODIFIERMAP
|
|
||||||
#define XFreePixmap XFREEPIXMAP
|
|
||||||
#define XFreeStringList XFREESTRINGLIST
|
|
||||||
#define XGetAtomName XGETATOMNAME
|
|
||||||
#define XGetDefault XGETDEFAULT
|
|
||||||
#define XGetErrorDatabaseText XGETERRORDATABASETEXT
|
|
||||||
#define XGetErrorText XGETERRORTEXT
|
|
||||||
#define XGetFontProperty XGETFONTPROPERTY
|
|
||||||
#define XGetGCValues XGETGCVALUES
|
|
||||||
#define XGetGeometry XGETGEOMETRY
|
|
||||||
#define XGetICValues XGETICVALUES
|
|
||||||
#define XGetIMValues XGETIMVALUES
|
|
||||||
#define XGetImage XGETIMAGE
|
|
||||||
#define XGetKeyboardControl XGETKEYBOARDCONTROL
|
|
||||||
#define XGetModifierMapping XGETMODIFIERMAPPING
|
|
||||||
#define XGetMotionEvents XGETMOTIONEVENTS
|
|
||||||
#define XGetNormalHints XGETNORMALHINTS
|
|
||||||
#define XGetSelectionOwner XGETSELECTIONOWNER
|
|
||||||
#define XGetSubImage XGETSUBIMAGE
|
|
||||||
#define XGetVisualInfo XGETVISUALINFO
|
|
||||||
#define XGetWMColormapWindows XGETWMCOLORMAPWINDOWS
|
|
||||||
#define XGetWMHints XGETWMHINTS
|
|
||||||
#define XGetWMName XGETWMNAME
|
|
||||||
#define XGetWMNormalHints XGETWMNORMALHINTS
|
|
||||||
#define XGetWindowAttributes XGETWINDOWATTRIBUTES
|
|
||||||
#define XGetWindowProperty XGETWINDOWPROPERTY
|
|
||||||
#define XGrabKeyboard XGRABKEYBOARD
|
|
||||||
#define XGrabPointer XGRABPOINTER
|
|
||||||
#define XGrabServer XGRABSERVER
|
|
||||||
#define XHeightOfScreen XHEIGHTOFSCREEN
|
|
||||||
#define XIfEvent XIFEVENT
|
|
||||||
#define XInternAtom XINTERNATOM
|
|
||||||
#define XIntersectRegion XINTERSECTREGION
|
|
||||||
#define XKeycodeToKeysym XKEYCODETOKEYSYM
|
|
||||||
#define XKeysymToKeycode XKEYSYMTOKEYCODE
|
|
||||||
#define XKeysymToString XKEYSYMTOSTRING
|
|
||||||
#define XListFonts XLISTFONTS
|
|
||||||
#define XListFontsWithInfo XLISTFONTSWITHINFO
|
|
||||||
#define XListPixmapFormats XLISTPIXMAPFORMATS
|
|
||||||
#define XListProperties XLISTPROPERTIES
|
|
||||||
#define XLoadQueryFont XLOADQUERYFONT
|
|
||||||
#define XLookupString XLOOKUPSTRING
|
|
||||||
#define XLowerWindow XLOWERWINDOW
|
|
||||||
#define XMapRaised XMAPRAISED
|
|
||||||
#define XMapWindow XMAPWINDOW
|
|
||||||
#define XMatchVisualInfo XMATCHVISUALINFO
|
|
||||||
#define XMoveResizeWindow XMOVERESIZEWINDOW
|
|
||||||
#define XMoveWindow XMOVEWINDOW
|
|
||||||
#define XNextEvent XNEXTEVENT
|
|
||||||
#define XOffsetRegion XOFFSETREGION
|
|
||||||
#define XOpenDisplay XOPENDISPLAY
|
|
||||||
#define XOpenIM XOPENIM
|
|
||||||
#define XParseColor XPARSECOLOR
|
|
||||||
#define XParseGeometry XPARSEGEOMETRY
|
|
||||||
#define XPeekEvent XPEEKEVENT
|
|
||||||
#define XPending XPENDING
|
|
||||||
#define XPointInRegion XPOINTINREGION
|
|
||||||
#define XPolygonRegion XPOLYGONREGION
|
|
||||||
#define XPutBackEvent XPUTBACKEVENT
|
|
||||||
#define XPutImage XPUTIMAGE
|
|
||||||
#define XQueryColor XQUERYCOLOR
|
|
||||||
#define XQueryColors XQUERYCOLORS
|
|
||||||
#define XQueryExtension XQUERYEXTENSION
|
|
||||||
#define XQueryPointer XQUERYPOINTER
|
|
||||||
#define XQueryTree XQUERYTREE
|
|
||||||
#define XRaiseWindow XRAISEWINDOW
|
|
||||||
#define XReconfigureWMWindow XRECONFIGUREWMWINDOW
|
|
||||||
#define XRectInRegion XRECTINREGION
|
|
||||||
#define XRefreshKeyboardMapping XREFRESHKEYBOARDMAPPING
|
|
||||||
#define XReparentWindow XREPARENTWINDOW
|
|
||||||
#define XResizeWindow XRESIZEWINDOW
|
|
||||||
#define XRestackWindows XRESTACKWINDOWS
|
|
||||||
#define XRootWindowOfScreen XROOTWINDOWOFSCREEN
|
|
||||||
#define XScreenNumberOfScreen XSCREENNUMBEROFSCREEN
|
|
||||||
#define XSelectAsyncEvent XSELECTASYNCEVENT
|
|
||||||
#define XSelectAsyncInput XSELECTASYNCINPUT
|
|
||||||
#define XSelectInput XSELECTINPUT
|
|
||||||
#define XSendEvent XSENDEVENT
|
|
||||||
#define XServerVendor XSERVERVENDOR
|
|
||||||
#define XSetBackground XSETBACKGROUND
|
|
||||||
#define XSetClassHint XSETCLASSHINT
|
|
||||||
#define XSetClipMask XSETCLIPMASK
|
|
||||||
#define XSetClipOrigin XSETCLIPORIGIN
|
|
||||||
#define XSetClipRectangles XSETCLIPRECTANGLES
|
|
||||||
#define XSetCloseDownMode XSETCLOSEDOWNMODE
|
|
||||||
#define XSetCommand XSETCOMMAND
|
|
||||||
#define XSetDashes XSETDASHES
|
|
||||||
#define XSetErrorHandler XSETERRORHANDLER
|
|
||||||
#define XSetFillStyle XSETFILLSTYLE
|
|
||||||
#define XSetFont XSETFONT
|
|
||||||
#define XSetForeground XSETFOREGROUND
|
|
||||||
#define XSetFunction XSETFUNCTION
|
|
||||||
#define XSetGraphicsExposures XSETGRAPHICSEXPOSURES
|
|
||||||
#define XSetICFocus XSETICFOCUS
|
|
||||||
#define XSetICValues XSETICVALUES
|
|
||||||
#define XSetIOErrorHandler XSETIOERRORHANDLER
|
|
||||||
#define XSetInputFocus XSETINPUTFOCUS
|
|
||||||
#define XSetLineAttributes XSETLINEATTRIBUTES
|
|
||||||
#define XSetLocaleModifiers XSETLOCALEMODIFIERS
|
|
||||||
#define XSetNormalHints XSETNORMALHINTS
|
|
||||||
#define XSetRegion XSETREGION
|
|
||||||
#define XSetSelectionOwner XSETSELECTIONOWNER
|
|
||||||
#define XSetStipple XSETSTIPPLE
|
|
||||||
#define XSetSubwindowMode XSETSUBWINDOWMODE
|
|
||||||
#define XSetTSOrigin XSETTSORIGIN
|
|
||||||
#define XSetTile XSETTILE
|
|
||||||
#define XSetTransientForHint XSETTRANSIENTFORHINT
|
|
||||||
#define XSetWMColormapWindows XSETWMCOLORMAPWINDOWS
|
|
||||||
#define XSetWMHints XSETWMHINTS
|
|
||||||
#define XSetWMIconName XSETWMICONNAME
|
|
||||||
#define XSetWMName XSETWMNAME
|
|
||||||
#define XSetWMNormalHints XSETWMNORMALHINTS
|
|
||||||
#define XSetWMProperties XSETWMPROPERTIES
|
|
||||||
#define XSetWMProtocols XSETWMPROTOCOLS
|
|
||||||
#define XSetWindowBackground XSETWINDOWBACKGROUND
|
|
||||||
#define XSetWindowBackgroundPixmap XSETWINDOWBACKGROUNDPIXMAP
|
|
||||||
#define XSetWindowColormap XSETWINDOWCOLORMAP
|
|
||||||
#define XShapeCombineMask XSHAPECOMBINEMASK
|
|
||||||
#define XShapeCombineRectangles XSHAPECOMBINERECTANGLES
|
|
||||||
#define XShapeGetRectangles XSHAPEGETRECTANGLES
|
|
||||||
#define XShrinkRegion XSHRINKREGION
|
|
||||||
#define XStoreColor XSTORECOLOR
|
|
||||||
#define XStoreColors XSTORECOLORS
|
|
||||||
#define XStoreName XSTORENAME
|
|
||||||
#define XStringToKeysym XSTRINGTOKEYSYM
|
|
||||||
#define XSubtractRegion XSUBTRACTREGION
|
|
||||||
#define XSupportsLocale XSUPPORTSLOCALE
|
|
||||||
#define XSync XSYNC
|
|
||||||
#define XSynchronize XSYNCHRONIZE
|
|
||||||
#define XTextExtents XTEXTEXTENTS
|
|
||||||
#define XTextExtents16 XTEXTEXTENTS16
|
|
||||||
#define XTextWidth XTEXTWIDTH
|
|
||||||
#define XTextWidth16 XTEXTWIDTH16
|
|
||||||
#define XTranslateCoordinates XTRANSLATECOORDINATES
|
|
||||||
#define XUndefineCursor XUNDEFINECURSOR
|
|
||||||
#define XUngrabKeyboard XUNGRABKEYBOARD
|
|
||||||
#define XUngrabPointer XUNGRABPOINTER
|
|
||||||
#define XUngrabServer XUNGRABSERVER
|
|
||||||
#define XUnionRectWithRegion XUNIONRECTWITHREGION
|
|
||||||
#define XUnionRegion XUNIONREGION
|
|
||||||
#define XUnmapWindow XUNMAPWINDOW
|
|
||||||
#define _XUnregisterFilter _XUNREGISTERFILTER
|
|
||||||
#define XUnsetICFocus XUNSETICFOCUS
|
|
||||||
#define XVaCreateNestedList XVACREATENESTEDLIST
|
|
||||||
#define XVisualIDFromVisual XVISUALIDFROMVISUAL
|
|
||||||
#define XWidthOfScreen XWIDTHOFSCREEN
|
|
||||||
#define XWindowEvent XWINDOWEVENT
|
|
||||||
#define XWithdrawWindow XWITHDRAWWINDOW
|
|
||||||
#define XXorRegion XXORREGION
|
|
||||||
#define XmAddProtocolCallback XMADDPROTOCOLCALLBACK
|
|
||||||
#define XmAddProtocols XMADDPROTOCOLS
|
|
||||||
#define XmChangeColor XMCHANGECOLOR
|
|
||||||
#define XmClipboardCopy XMCLIPBOARDCOPY
|
|
||||||
#define XmClipboardEndCopy XMCLIPBOARDENDCOPY
|
|
||||||
#define XmClipboardInquireLength XMCLIPBOARDINQUIRELENGTH
|
|
||||||
#define XmClipboardLock XMCLIPBOARDLOCK
|
|
||||||
#define XmClipboardRetrieve XMCLIPBOARDRETRIEVE
|
|
||||||
#define XmClipboardStartCopy XMCLIPBOARDSTARTCOPY
|
|
||||||
#define XmClipboardUnlock XMCLIPBOARDUNLOCK
|
|
||||||
#define XmCreateArrowButton XMCREATEARROWBUTTON
|
|
||||||
#define XmCreateArrowButtonGadget XMCREATEARROWBUTTONGADGET
|
|
||||||
#define XmCreateCascadeButton XMCREATECASCADEBUTTON
|
|
||||||
#define XmCreateDialogShell XMCREATEDIALOGSHELL
|
|
||||||
#define XmCreateDragIcon XMCREATEDRAGICON
|
|
||||||
#define XmCreateDrawingArea XMCREATEDRAWINGAREA
|
|
||||||
#define XmCreateDrawnButton XMCREATEDRAWNBUTTON
|
|
||||||
#define XmCreateFileSelectionBox XMCREATEFILESELECTIONBOX
|
|
||||||
#define XmCreateFileSelectionDialog XMCREATEFILESELECTIONDIALOG
|
|
||||||
#define XmCreateForm XMCREATEFORM
|
|
||||||
#define XmCreateFormDialog XMCREATEFORMDIALOG
|
|
||||||
#define XmCreateFrame XMCREATEFRAME
|
|
||||||
#define XmCreateInformationDialog XMCREATEINFORMATIONDIALOG
|
|
||||||
#define XmCreateLabelGadget XMCREATELABELGADGET
|
|
||||||
#define XmCreateMainWindow XMCREATEMAINWINDOW
|
|
||||||
#define XmCreateMenuBar XMCREATEMENUBAR
|
|
||||||
#define XmCreateMessageBox XMCREATEMESSAGEBOX
|
|
||||||
#define XmCreateMessageDialog XMCREATEMESSAGEDIALOG
|
|
||||||
#define XmCreateOptionMenu XMCREATEOPTIONMENU
|
|
||||||
#define XmCreatePanedWindow XMCREATEPANEDWINDOW
|
|
||||||
#define XmCreatePopupMenu XMCREATEPOPUPMENU
|
|
||||||
#define XmCreatePromptDialog XMCREATEPROMPTDIALOG
|
|
||||||
#define XmCreatePulldownMenu XMCREATEPULLDOWNMENU
|
|
||||||
#define XmCreatePushButton XMCREATEPUSHBUTTON
|
|
||||||
#define XmCreatePushButtonGadget XMCREATEPUSHBUTTONGADGET
|
|
||||||
#define XmCreateQuestionDialog XMCREATEQUESTIONDIALOG
|
|
||||||
#define XmCreateRadioBox XMCREATERADIOBOX
|
|
||||||
#define XmCreateRowColumn XMCREATEROWCOLUMN
|
|
||||||
#define XmCreateScale XMCREATESCALE
|
|
||||||
#define XmCreateScrollBar XMCREATESCROLLBAR
|
|
||||||
#define XmCreateScrolledList XMCREATESCROLLEDLIST
|
|
||||||
#define XmCreateScrolledText XMCREATESCROLLEDTEXT
|
|
||||||
#define XmCreateScrolledWindow XMCREATESCROLLEDWINDOW
|
|
||||||
#define XmCreateSelectionDialog XMCREATESELECTIONDIALOG
|
|
||||||
#define XmCreateSeparator XMCREATESEPARATOR
|
|
||||||
#define XmCreateSeparatorGadget XMCREATESEPARATORGADGET
|
|
||||||
#define XmCreateTemplateDialog XMCREATETEMPLATEDIALOG
|
|
||||||
#define XmCreateText XMCREATETEXT
|
|
||||||
#define XmCreateTextField XMCREATETEXTFIELD
|
|
||||||
#define XmCreateToggleButton XMCREATETOGGLEBUTTON
|
|
||||||
#define XmCreateToggleButtonGadget XMCREATETOGGLEBUTTONGADGET
|
|
||||||
#define XmDragStart XMDRAGSTART
|
|
||||||
#define XmDropSiteRegister XMDROPSITEREGISTER
|
|
||||||
#define XmDropSiteUnregister XMDROPSITEUNREGISTER
|
|
||||||
#define XmDropSiteUpdate XMDROPSITEUPDATE
|
|
||||||
#define XmDropTransferStart XMDROPTRANSFERSTART
|
|
||||||
#define XmFileSelectionBoxGetChild XMFILESELECTIONBOXGETCHILD
|
|
||||||
#define XmFileSelectionDoSearch XMFILESELECTIONDOSEARCH
|
|
||||||
#define XmFontListAppendEntry XMFONTLISTAPPENDENTRY
|
|
||||||
#define XmFontListCopy XMFONTLISTCOPY
|
|
||||||
#define XmFontListCreate XMFONTLISTCREATE
|
|
||||||
#define XmFontListEntryCreate XMFONTLISTENTRYCREATE
|
|
||||||
#define XmFontListEntryFree XMFONTLISTENTRYFREE
|
|
||||||
#define XmFontListEntryGetFont XMFONTLISTENTRYGETFONT
|
|
||||||
#define XmFontListEntryGetTag XMFONTLISTENTRYGETTAG
|
|
||||||
#define XmFontListEntryLoad XMFONTLISTENTRYLOAD
|
|
||||||
#define XmFontListFree XMFONTLISTFREE
|
|
||||||
#define XmFontListFreeFontContext XMFONTLISTFREEFONTCONTEXT
|
|
||||||
#define XmFontListGetNextFont XMFONTLISTGETNEXTFONT
|
|
||||||
#define XmFontListInitFontContext XMFONTLISTINITFONTCONTEXT
|
|
||||||
#define XmFontListNextEntry XMFONTLISTNEXTENTRY
|
|
||||||
#define XmGetColors XMGETCOLORS
|
|
||||||
#define XmGetFocusWidget XMGETFOCUSWIDGET
|
|
||||||
#define XmGetMenuCursor XMGETMENUCURSOR
|
|
||||||
#define XmGetPixmapByDepth XMGETPIXMAPBYDEPTH
|
|
||||||
#define XmGetTearOffControl XMGETTEAROFFCONTROL
|
|
||||||
#define XmGetXmDisplay XMGETXMDISPLAY
|
|
||||||
#define XmImMbLookupString XMIMMBLOOKUPSTRING
|
|
||||||
#define XmImRegister XMIMREGISTER
|
|
||||||
#define XmImSetFocusValues XMIMSETFOCUSVALUES
|
|
||||||
#define XmImSetValues XMIMSETVALUES
|
|
||||||
#define XmImUnregister XMIMUNREGISTER
|
|
||||||
#define XmImUnsetFocus XMIMUNSETFOCUS
|
|
||||||
#define XmInternAtom XMINTERNATOM
|
|
||||||
#define XmIsMotifWMRunning XMISMOTIFWMRUNNING
|
|
||||||
#define XmListAddItem XMLISTADDITEM
|
|
||||||
#define XmListAddItemUnselected XMLISTADDITEMUNSELECTED
|
|
||||||
#define XmListAddItemsUnselected XMLISTADDITEMSUNSELECTED
|
|
||||||
#define XmListDeleteAllItems XMLISTDELETEALLITEMS
|
|
||||||
#define XmListDeleteItemsPos XMLISTDELETEITEMSPOS
|
|
||||||
#define XmListDeletePos XMLISTDELETEPOS
|
|
||||||
#define XmListDeselectAllItems XMLISTDESELECTALLITEMS
|
|
||||||
#define XmListDeselectPos XMLISTDESELECTPOS
|
|
||||||
#define XmListGetKbdItemPos XMLISTGETKBDITEMPOS
|
|
||||||
#define XmListGetMatchPos XMLISTGETMATCHPOS
|
|
||||||
#define XmListGetSelectedPos XMLISTGETSELECTEDPOS
|
|
||||||
#define XmListPosSelected XMLISTPOSSELECTED
|
|
||||||
#define XmListSelectItem XMLISTSELECTITEM
|
|
||||||
#define XmListSelectPos XMLISTSELECTPOS
|
|
||||||
#define XmListSetBottomPos XMLISTSETBOTTOMPOS
|
|
||||||
#define XmListSetItem XMLISTSETITEM
|
|
||||||
#define XmListSetKbdItemPos XMLISTSETKBDITEMPOS
|
|
||||||
#define XmListSetPos XMLISTSETPOS
|
|
||||||
#define XmMainWindowSetAreas XMMAINWINDOWSETAREAS
|
|
||||||
#define XmMenuPosition XMMENUPOSITION
|
|
||||||
#define XmMessageBoxGetChild XMMESSAGEBOXGETCHILD
|
|
||||||
#define XmOptionButtonGadget XMOPTIONBUTTONGADGET
|
|
||||||
#define XmOptionLabelGadget XMOPTIONLABELGADGET
|
|
||||||
#define XmProcessTraversal XMPROCESSTRAVERSAL
|
|
||||||
#define XmQmotif XMQMOTIF
|
|
||||||
#define XmRemoveProtocolCallback XMREMOVEPROTOCOLCALLBACK
|
|
||||||
#define XmRepTypeGetId XMREPTYPEGETID
|
|
||||||
#define XmRepTypeGetRecord XMREPTYPEGETRECORD
|
|
||||||
#define XmRepTypeRegister XMREPTYPEREGISTER
|
|
||||||
#define XmRepTypeValidValue XMREPTYPEVALIDVALUE
|
|
||||||
#define XmScrollBarSetValues XMSCROLLBARSETVALUES
|
|
||||||
#define XmScrolledWindowSetAreas XMSCROLLEDWINDOWSETAREAS
|
|
||||||
#define XmSelectionBoxGetChild XMSELECTIONBOXGETCHILD
|
|
||||||
#define XmStringByteCompare XMSTRINGBYTECOMPARE
|
|
||||||
#define XmStringCompare XMSTRINGCOMPARE
|
|
||||||
#define XmStringConcat XMSTRINGCONCAT
|
|
||||||
#define XmStringCopy XMSTRINGCOPY
|
|
||||||
#define XmStringCreate XMSTRINGCREATE
|
|
||||||
#define XmStringCreateLocalized XMSTRINGCREATELOCALIZED
|
|
||||||
#define XmStringCreateLtoR XMSTRINGCREATELTOR
|
|
||||||
#define XmStringCreateSimple XMSTRINGCREATESIMPLE
|
|
||||||
#define XmStringDraw XMSTRINGDRAW
|
|
||||||
#define XmStringDrawUnderline XMSTRINGDRAWUNDERLINE
|
|
||||||
#define XmStringExtent XMSTRINGEXTENT
|
|
||||||
#define XmStringFree XMSTRINGFREE
|
|
||||||
#define XmStringFreeContext XMSTRINGFREECONTEXT
|
|
||||||
#define XmStringGetLtoR XMSTRINGGETLTOR
|
|
||||||
#define XmStringGetNextComponent XMSTRINGGETNEXTCOMPONENT
|
|
||||||
#define XmStringGetNextSegment XMSTRINGGETNEXTSEGMENT
|
|
||||||
#define XmStringInitContext XMSTRINGINITCONTEXT
|
|
||||||
#define XmStringLength XMSTRINGLENGTH
|
|
||||||
#define XmStringLtoRCreate XMSTRINGLTORCREATE
|
|
||||||
#define XmStringNConcat XMSTRINGNCONCAT
|
|
||||||
#define XmStringSegmentCreate XMSTRINGSEGMENTCREATE
|
|
||||||
#define XmStringWidth XMSTRINGWIDTH
|
|
||||||
#define XmTextClearSelection XMTEXTCLEARSELECTION
|
|
||||||
#define XmTextFieldGetEditable XMTEXTFIELDGETEDITABLE
|
|
||||||
#define XmTextFieldGetInsertionPosition XMTEXTFIELDGETINSERTIONPOSITION
|
|
||||||
#define XmTextFieldGetLastPosition XMTEXTFIELDGETLASTPOSITION
|
|
||||||
#define XmTextFieldGetSelection XMTEXTFIELDGETSELECTION
|
|
||||||
#define XmTextFieldGetString XMTEXTFIELDGETSTRING
|
|
||||||
#define XmTextFieldInsert XMTEXTFIELDINSERT
|
|
||||||
#define XmTextFieldRemove XMTEXTFIELDREMOVE
|
|
||||||
#define XmTextFieldSetSelection XMTEXTFIELDSETSELECTION
|
|
||||||
#define XmTextFieldSetString XMTEXTFIELDSETSTRING
|
|
||||||
#define XmTextGetCursorPosition XMTEXTGETCURSORPOSITION
|
|
||||||
#define XmTextGetInsertionPosition XMTEXTGETINSERTIONPOSITION
|
|
||||||
#define XmTextGetLastPosition XMTEXTGETLASTPOSITION
|
|
||||||
#define XmTextGetMaxLength XMTEXTGETMAXLENGTH
|
|
||||||
#define XmTextGetSelection XMTEXTGETSELECTION
|
|
||||||
#define XmTextGetSelectionPosition XMTEXTGETSELECTIONPOSITION
|
|
||||||
#define XmTextGetString XMTEXTGETSTRING
|
|
||||||
#define XmTextInsert XMTEXTINSERT
|
|
||||||
#define XmTextRemove XMTEXTREMOVE
|
|
||||||
#define XmTextReplace XMTEXTREPLACE
|
|
||||||
#define XmTextSetCursorPosition XMTEXTSETCURSORPOSITION
|
|
||||||
#define XmTextSetHighlight XMTEXTSETHIGHLIGHT
|
|
||||||
#define XmTextSetInsertionPosition XMTEXTSETINSERTIONPOSITION
|
|
||||||
#define XmTextSetSelection XMTEXTSETSELECTION
|
|
||||||
#define XmTextSetString XMTEXTSETSTRING
|
|
||||||
#define XmToggleButtonGadgetGetState XMTOGGLEBUTTONGADGETGETSTATE
|
|
||||||
#define XmToggleButtonGadgetSetState XMTOGGLEBUTTONGADGETSETSTATE
|
|
||||||
#define XmToggleButtonGetState XMTOGGLEBUTTONGETSTATE
|
|
||||||
#define XmToggleButtonSetState XMTOGGLEBUTTONSETSTATE
|
|
||||||
#define XmUpdateDisplay XMUPDATEDISPLAY
|
|
||||||
#define XmVaCreateSimpleRadioBox XMVACREATESIMPLERADIOBOX
|
|
||||||
#define XmbDrawString XMBDRAWSTRING
|
|
||||||
#define XmbLookupString XMBLOOKUPSTRING
|
|
||||||
#define XmbResetIC XMBRESETIC
|
|
||||||
#define XmbSetWMProperties XMBSETWMPROPERTIES
|
|
||||||
#define XmbTextEscapement XMBTEXTESCAPEMENT
|
|
||||||
#define XmbTextExtents XMBTEXTEXTENTS
|
|
||||||
#define XmbTextListToTextProperty XMBTEXTLISTTOTEXTPROPERTY
|
|
||||||
#define XmbTextPropertyToTextList XMBTEXTPROPERTYTOTEXTLIST
|
|
||||||
#define XmuClientWindow XMUCLIENTWINDOW
|
|
||||||
#define XmuPrintDefaultErrorMessage XMUPRINTDEFAULTERRORMESSAGE
|
|
||||||
#define XrmGetDatabase XRMGETDATABASE
|
|
||||||
#define XrmGetResource XRMGETRESOURCE
|
|
||||||
#define XrmPutStringResource XRMPUTSTRINGRESOURCE
|
|
||||||
#define XrmQuarkToString XRMQUARKTOSTRING
|
|
||||||
#define XrmStringToQuark XRMSTRINGTOQUARK
|
|
||||||
#define XtAddCallback XTADDCALLBACK
|
|
||||||
#define XtAddCallbacks XTADDCALLBACKS
|
|
||||||
#define XtAddEventHandler XTADDEVENTHANDLER
|
|
||||||
#define XtAddGrab XTADDGRAB
|
|
||||||
#define XtAllocateGC XTALLOCATEGC
|
|
||||||
#define XtAppAddActions XTAPPADDACTIONS
|
|
||||||
#define XtAppAddInput XTAPPADDINPUT
|
|
||||||
#define XtAppAddTimeOut XTAPPADDTIMEOUT
|
|
||||||
#define XtAppCreateShell XTAPPCREATESHELL
|
|
||||||
#define XtAppInitialize XTAPPINITIALIZE
|
|
||||||
#define XtAppNextEvent XTAPPNEXTEVENT
|
|
||||||
#define XtAppPeekEvent XTAPPPEEKEVENT
|
|
||||||
#define XtAppPending XTAPPPENDING
|
|
||||||
#define XtAppProcessEvent XTAPPPROCESSEVENT
|
|
||||||
#define XtAppSetErrorHandler XTAPPSETERRORHANDLER
|
|
||||||
#define XtAppSetFallbackResources XTAPPSETFALLBACKRESOURCES
|
|
||||||
#define XtAppSetWarningHandler XTAPPSETWARNINGHANDLER
|
|
||||||
#define XtAppSetWarningMsgHandler XTAPPSETWARNINGMSGHANDLER
|
|
||||||
#define XtAppWarning XTAPPWARNING
|
|
||||||
#define XtCallActionProc XTCALLACTIONPROC
|
|
||||||
#define XtCallCallbackList XTCALLCALLBACKLIST
|
|
||||||
#define XtCallCallbacks XTCALLCALLBACKS
|
|
||||||
#define XtConfigureWidget XTCONFIGUREWIDGET
|
|
||||||
#define XtConvertAndStore XTCONVERTANDSTORE
|
|
||||||
#define XtCreateApplicationContext XTCREATEAPPLICATIONCONTEXT
|
|
||||||
#define XtCreateManagedWidget XTCREATEMANAGEDWIDGET
|
|
||||||
#define XtCreatePopupShell XTCREATEPOPUPSHELL
|
|
||||||
#define XtCreateWidget XTCREATEWIDGET
|
|
||||||
#define XtDatabase XTDATABASE
|
|
||||||
#define XtDestroyWidget XTDESTROYWIDGET
|
|
||||||
#define XtDisownSelection XTDISOWNSELECTION
|
|
||||||
#define XtDispatchEvent XTDISPATCHEVENT
|
|
||||||
#define XtDisplayOfObject XTDISPLAYOFOBJECT
|
|
||||||
#define XtDisplayStringConvWarning XTDISPLAYSTRINGCONVWARNING
|
|
||||||
#define XtDisplayToApplicationContext XTDISPLAYTOAPPLICATIONCONTEXT
|
|
||||||
#define XtAppAddWorkProc XTAPPADDWORKPROC
|
|
||||||
#define XtRemoveWorkProc XTREMOVEWORKPROC
|
|
||||||
#define XtFree XTFREE
|
|
||||||
#define XtGetActionKeysym XTGETACTIONKEYSYM
|
|
||||||
#define XtGetActionList XTGETACTIONLIST
|
|
||||||
#define XtGetApplicationNameAndClass XTGETAPPLICATIONNAMEANDCLASS
|
|
||||||
#define XtGetApplicationResources XTGETAPPLICATIONRESOURCES
|
|
||||||
#define XtGetGC XTGETGC
|
|
||||||
#define XtGetMultiClickTime XTGETMULTICLICKTIME
|
|
||||||
#define XtGetSelectionValue XTGETSELECTIONVALUE
|
|
||||||
#define XtGetSelectionValues XTGETSELECTIONVALUES
|
|
||||||
#define XtGetSubresources XTGETSUBRESOURCES
|
|
||||||
#define XtGetValues XTGETVALUES
|
|
||||||
#define XtGrabKeyboard XTGRABKEYBOARD
|
|
||||||
#define XtGrabPointer XTGRABPOINTER
|
|
||||||
#define XtHasCallbacks XTHASCALLBACKS
|
|
||||||
#define XtInitializeWidgetClass XTINITIALIZEWIDGETCLASS
|
|
||||||
#define XtInsertEventHandler XTINSERTEVENTHANDLER
|
|
||||||
#define XtIsManaged XTISMANAGED
|
|
||||||
#define XtIsObject XTISOBJECT
|
|
||||||
#define XtIsSensitive XTISSENSITIVE
|
|
||||||
#define XtIsSubclass XTISSUBCLASS
|
|
||||||
#define XtLastTimestampProcessed XTLASTTIMESTAMPPROCESSED
|
|
||||||
#define XtMakeGeometryRequest XTMAKEGEOMETRYREQUEST
|
|
||||||
#define XtMakeResizeRequest XTMAKERESIZEREQUEST
|
|
||||||
#define XtMalloc XTMALLOC
|
|
||||||
#define XtManageChild XTMANAGECHILD
|
|
||||||
#define XtManageChildren XTMANAGECHILDREN
|
|
||||||
#define XtMergeArgLists XTMERGEARGLISTS
|
|
||||||
#define XtMoveWidget XTMOVEWIDGET
|
|
||||||
#define XtName XTNAME
|
|
||||||
#define XtNameToWidget XTNAMETOWIDGET
|
|
||||||
#define XtOpenDisplay XTOPENDISPLAY
|
|
||||||
#define XtOverrideTranslations XTOVERRIDETRANSLATIONS
|
|
||||||
#define XtOwnSelection XTOWNSELECTION
|
|
||||||
#define XtParseTranslationTable XTPARSETRANSLATIONTABLE
|
|
||||||
#define XtPopdown XTPOPDOWN
|
|
||||||
#define XtPopup XTPOPUP
|
|
||||||
#define XtQueryGeometry XTQUERYGEOMETRY
|
|
||||||
#define XtRealizeWidget XTREALIZEWIDGET
|
|
||||||
#define XtRealloc XTREALLOC
|
|
||||||
#define XtReleaseGC XTRELEASEGC
|
|
||||||
#define XtRemoveAllCallbacks XTREMOVEALLCALLBACKS
|
|
||||||
#define XtRemoveCallback XTREMOVECALLBACK
|
|
||||||
#define XtRemoveEventHandler XTREMOVEEVENTHANDLER
|
|
||||||
#define XtRemoveGrab XTREMOVEGRAB
|
|
||||||
#define XtRemoveInput XTREMOVEINPUT
|
|
||||||
#define XtRemoveTimeOut XTREMOVETIMEOUT
|
|
||||||
#define XtResizeWidget XTRESIZEWIDGET
|
|
||||||
#define XtResolvePathname XTRESOLVEPATHNAME
|
|
||||||
#define XtSetKeyboardFocus XTSETKEYBOARDFOCUS
|
|
||||||
#define XtSetMappedWhenManaged XTSETMAPPEDWHENMANAGED
|
|
||||||
#define XtSetSensitive XTSETSENSITIVE
|
|
||||||
#define XtSetTypeConverter XTSETTYPECONVERTER
|
|
||||||
#define XtSetValues XTSETVALUES
|
|
||||||
#define XtShellStrings XTSHELLSTRINGS
|
|
||||||
#define XtStrings XTSTRINGS
|
|
||||||
#define XtToolkitInitialize XTTOOLKITINITIALIZE
|
|
||||||
#define XtTranslateCoords XTTRANSLATECOORDS
|
|
||||||
#define XtTranslateKeycode XTTRANSLATEKEYCODE
|
|
||||||
#define XtUngrabKeyboard XTUNGRABKEYBOARD
|
|
||||||
#define XtUngrabPointer XTUNGRABPOINTER
|
|
||||||
#define XtUnmanageChild XTUNMANAGECHILD
|
|
||||||
#define XtUnmanageChildren XTUNMANAGECHILDREN
|
|
||||||
#define XtUnrealizeWidget XTUNREALIZEWIDGET
|
|
||||||
#define XtVaCreateManagedWidget XTVACREATEMANAGEDWIDGET
|
|
||||||
#define XtVaCreateWidget XTVACREATEWIDGET
|
|
||||||
#define XtVaGetValues XTVAGETVALUES
|
|
||||||
#define XtVaSetValues XTVASETVALUES
|
|
||||||
#define XtWarning XTWARNING
|
|
||||||
#define XtWidgetToApplicationContext XTWIDGETTOAPPLICATIONCONTEXT
|
|
||||||
#define XtWindowOfObject XTWINDOWOFOBJECT
|
|
||||||
#define XtWindowToWidget XTWINDOWTOWIDGET
|
|
||||||
#define XwcDrawString XWCDRAWSTRING
|
|
||||||
#define XwcFreeStringList XWCFREESTRINGLIST
|
|
||||||
#define XwcTextEscapement XWCTEXTESCAPEMENT
|
|
||||||
#define XwcTextExtents XWCTEXTEXTENTS
|
|
||||||
#define XwcTextListToTextProperty XWCTEXTLISTTOTEXTPROPERTY
|
|
||||||
#define XwcTextPropertyToTextList XWCTEXTPROPERTYTOTEXTLIST
|
|
||||||
#define _XmBottomShadowColorDefault _XMBOTTOMSHADOWCOLORDEFAULT
|
|
||||||
#define _XmClearBorder _XMCLEARBORDER
|
|
||||||
#define _XmConfigureObject _XMCONFIGUREOBJECT
|
|
||||||
#define _XmDestroyParentCallback _XMDESTROYPARENTCALLBACK
|
|
||||||
#define _XmDrawArrow _XMDRAWARROW
|
|
||||||
#define _XmDrawShadows _XMDRAWSHADOWS
|
|
||||||
#define _XmFontListGetDefaultFont _XMFONTLISTGETDEFAULTFONT
|
|
||||||
#define _XmFromHorizontalPixels _XMFROMHORIZONTALPIXELS
|
|
||||||
#define _XmFromVerticalPixels _XMFROMVERTICALPIXELS
|
|
||||||
#define _XmGetClassExtensionPtr _XMGETCLASSEXTENSIONPTR
|
|
||||||
#define _XmGetDefaultFontList _XMGETDEFAULTFONTLIST
|
|
||||||
#define _XmGetTextualDragIcon _XMGETTEXTUALDRAGICON
|
|
||||||
#define _XmGetWidgetExtData _XMGETWIDGETEXTDATA
|
|
||||||
#define _XmGrabKeyboard _XMGRABKEYBOARD
|
|
||||||
#define _XmGrabPointer _XMGRABPOINTER
|
|
||||||
#define _XmInheritClass _XMINHERITCLASS
|
|
||||||
#define _XmInputInGadget _XMINPUTINGADGET
|
|
||||||
#define _XmMakeGeometryRequest _XMMAKEGEOMETRYREQUEST
|
|
||||||
#define _XmMenuPopDown _XMMENUPOPDOWN
|
|
||||||
#define _XmMoveObject _XMMOVEOBJECT
|
|
||||||
#define _XmNavigChangeManaged _XMNAVIGCHANGEMANAGED
|
|
||||||
#define _XmOSBuildFileList _XMOSBUILDFILELIST
|
|
||||||
#define _XmOSFileCompare _XMOSFILECOMPARE
|
|
||||||
#define _XmOSFindPatternPart _XMOSFINDPATTERNPART
|
|
||||||
#define _XmOSQualifyFileSpec _XMOSQUALIFYFILESPEC
|
|
||||||
#define _XmPostPopupMenu _XMPOSTPOPUPMENU
|
|
||||||
#define _XmPrimitiveEnter _XMPRIMITIVEENTER
|
|
||||||
#define _XmPrimitiveLeave _XMPRIMITIVELEAVE
|
|
||||||
#define _XmRedisplayGadgets _XMREDISPLAYGADGETS
|
|
||||||
#define _XmShellIsExclusive _XMSHELLISEXCLUSIVE
|
|
||||||
#define _XmStringDraw _XMSTRINGDRAW
|
|
||||||
#define _XmStringGetTextConcat _XMSTRINGGETTEXTCONCAT
|
|
||||||
#define _XmStrings _XMSTRINGS
|
|
||||||
#define _XmToHorizontalPixels _XMTOHORIZONTALPIXELS
|
|
||||||
#define _XmToVerticalPixels _XMTOVERTICALPIXELS
|
|
||||||
#define _XmTopShadowColorDefault _XMTOPSHADOWCOLORDEFAULT
|
|
||||||
#define _Xm_fastPtr _XM_FASTPTR
|
|
||||||
#define _XtCheckSubclassFlag _XTCHECKSUBCLASSFLAG
|
|
||||||
#define _XtInherit _XTINHERIT
|
|
||||||
#define _XtInheritTranslations _XTINHERITTRANSLATIONS
|
|
||||||
#define applicationShellWidgetClass APPLICATIONSHELLWIDGETCLASS
|
|
||||||
#define compositeWidgetClass COMPOSITEWIDGETCLASS
|
|
||||||
#define overrideShellWidgetClass OVERRIDESHELLWIDGETCLASS
|
|
||||||
#define shellWidgetClass SHELLWIDGETCLASS
|
|
||||||
#define topLevelShellClassRec TOPLEVELSHELLCLASSREC
|
|
||||||
#define topLevelShellWidgetClass TOPLEVELSHELLWIDGETCLASS
|
|
||||||
#define transientShellWidgetClass TRANSIENTSHELLWIDGETCLASS
|
|
||||||
#define vendorShellClassRec VENDORSHELLCLASSREC
|
|
||||||
#define vendorShellWidgetClass VENDORSHELLWIDGETCLASS
|
|
||||||
#define wmShellWidgetClass WMSHELLWIDGETCLASS
|
|
||||||
#define xmArrowButtonWidgetClass XMARROWBUTTONWIDGETCLASS
|
|
||||||
#define xmCascadeButtonClassRec XMCASCADEBUTTONCLASSREC
|
|
||||||
#define xmCascadeButtonGadgetClass XMCASCADEBUTTONGADGETCLASS
|
|
||||||
#define xmCascadeButtonWidgetClass XMCASCADEBUTTONWIDGETCLASS
|
|
||||||
#define xmDialogShellWidgetClass XMDIALOGSHELLWIDGETCLASS
|
|
||||||
#define xmDrawingAreaWidgetClass XMDRAWINGAREAWIDGETCLASS
|
|
||||||
#define xmDrawnButtonWidgetClass XMDRAWNBUTTONWIDGETCLASS
|
|
||||||
#define xmFileSelectionBoxWidgetClass XMFILESELECTIONBOXWIDGETCLASS
|
|
||||||
#define xmFormWidgetClass XMFORMWIDGETCLASS
|
|
||||||
#define xmFrameWidgetClass XMFRAMEWIDGETCLASS
|
|
||||||
#define xmGadgetClass XMGADGETCLASS
|
|
||||||
#define xmLabelGadgetClass XMLABELGADGETCLASS
|
|
||||||
#define xmLabelWidgetClass XMLABELWIDGETCLASS
|
|
||||||
#define xmListWidgetClass XMLISTWIDGETCLASS
|
|
||||||
#define xmMainWindowWidgetClass XMMAINWINDOWWIDGETCLASS
|
|
||||||
#define xmManagerClassRec XMMANAGERCLASSREC
|
|
||||||
#define xmManagerWidgetClass XMMANAGERWIDGETCLASS
|
|
||||||
#define xmMenuShellWidgetClass XMMENUSHELLWIDGETCLASS
|
|
||||||
#define xmMessageBoxWidgetClass XMMESSAGEBOXWIDGETCLASS
|
|
||||||
#define xmPrimitiveClassRec XMPRIMITIVECLASSREC
|
|
||||||
#define xmPrimitiveWidgetClass XMPRIMITIVEWIDGETCLASS
|
|
||||||
#define xmPushButtonClassRec XMPUSHBUTTONCLASSREC
|
|
||||||
#define xmPushButtonGadgetClass XMPUSHBUTTONGADGETCLASS
|
|
||||||
#define xmPushButtonWidgetClass XMPUSHBUTTONWIDGETCLASS
|
|
||||||
#define xmRowColumnWidgetClass XMROWCOLUMNWIDGETCLASS
|
|
||||||
#define xmSashWidgetClass XMSASHWIDGETCLASS
|
|
||||||
#define xmScrollBarWidgetClass XMSCROLLBARWIDGETCLASS
|
|
||||||
#define xmScrolledWindowClassRec XMSCROLLEDWINDOWCLASSREC
|
|
||||||
#define xmScrolledWindowWidgetClass XMSCROLLEDWINDOWWIDGETCLASS
|
|
||||||
#define xmSeparatorGadgetClass XMSEPARATORGADGETCLASS
|
|
||||||
#define xmSeparatorWidgetClass XMSEPARATORWIDGETCLASS
|
|
||||||
#define xmTextFieldWidgetClass XMTEXTFIELDWIDGETCLASS
|
|
||||||
#define xmTextWidgetClass XMTEXTWIDGETCLASS
|
|
||||||
#define xmToggleButtonGadgetClass XMTOGGLEBUTTONGADGETCLASS
|
|
||||||
#define xmToggleButtonWidgetClass XMTOGGLEBUTTONWIDGETCLASS
|
|
||||||
#define XtRegisterDrawable _XTREGISTERWINDOW
|
|
||||||
#define XtUnregisterDrawable _XTUNREGISTERWINDOW
|
|
||||||
#define XQueryFont XQUERYFONT
|
|
||||||
#define XSetPlaneMask XSETPLANEMASK
|
|
||||||
#define XChangeKeyboardControl XCHANGEKEYBOARDCONTROL
|
|
||||||
#define XDestroySubwindows XDESTROYSUBWINDOWS
|
|
||||||
#define XFreeDeviceList XFREEDEVICELIST
|
|
||||||
#define XFreeDeviceState XFREEDEVICESTATE
|
|
||||||
#define XGetExtensionVersion XGETEXTENSIONVERSION
|
|
||||||
#define XGetRGBColormaps XGETRGBCOLORMAPS
|
|
||||||
#define XIconifyWindow XICONIFYWINDOW
|
|
||||||
#define XInstallColormap XINSTALLCOLORMAP
|
|
||||||
#define XListInputDevices XLISTINPUTDEVICES
|
|
||||||
#define XLookupKeysym XLOOKUPKEYSYM
|
|
||||||
#define XOpenDevice XOPENDEVICE
|
|
||||||
#define XQueryDeviceState XQUERYDEVICESTATE
|
|
||||||
#define XSelectExtensionEvent XSELECTEXTENSIONEVENT
|
|
||||||
#define XWarpPointer XWARPPOINTER
|
|
||||||
#define XmuLookupStandardColormap XMULOOKUPSTANDARDCOLORMAP
|
|
||||||
#define XAllocNamedColor XALLOCNAMEDCOLOR
|
|
||||||
#define XBlackPixelOfScreen XBLACKPIXELOFSCREEN
|
|
||||||
#define XDefaultColormap XDEFAULTCOLORMAP
|
|
||||||
#define XDefaultColormapOfScreen XDEFAULTCOLORMAPOFSCREEN
|
|
||||||
#define XDefaultDepth XDEFAULTDEPTH
|
|
||||||
#define XDefaultScreen XDEFAULTSCREEN
|
|
||||||
#define XDefaultVisual XDEFAULTVISUAL
|
|
||||||
#define XSetIconName XSETICONNAME
|
|
||||||
#define XtInitialize XTINITIALIZE
|
|
||||||
#define XtMainLoop XTMAINLOOP
|
|
||||||
#define DtSaverGetWindows DTSAVERGETWINDOWS
|
|
||||||
#define XAddHosts XADDHOSTS
|
|
||||||
#define XDisableAccessControl XDISABLEACCESSCONTROL
|
|
||||||
#define XEnableAccessControl XENABLEACCESSCONTROL
|
|
||||||
#define XFillArcs XFILLARCS
|
|
||||||
#define XForceScreenSaver XFORCESCREENSAVER
|
|
||||||
#define XGetScreenSaver XGETSCREENSAVER
|
|
||||||
#define XListHosts XLISTHOSTS
|
|
||||||
#define XReadBitmapFile XREADBITMAPFILE
|
|
||||||
#define XRemoveHosts XREMOVEHOSTS
|
|
||||||
#define XResetScreenSaver XRESETSCREENSAVER
|
|
||||||
#define XResourceManagerString XRESOURCEMANAGERSTRING
|
|
||||||
#define XSetScreenSaver XSETSCREENSAVER
|
|
||||||
#define XStringListToTextProperty XSTRINGLISTTOTEXTPROPERTY
|
|
||||||
#define XrmDestroyDatabase XRMDESTROYDATABASE
|
|
||||||
#define XrmGetFileDatabase XRMGETFILEDATABASE
|
|
||||||
#define XrmGetStringDatabase XRMGETSTRINGDATABASE
|
|
||||||
#define XrmInitialize XRMINITIALIZE
|
|
||||||
#define XrmMergeDatabases XRMMERGEDATABASES
|
|
||||||
#define XrmParseCommand XRMPARSECOMMAND
|
|
||||||
#define XrmPutLineResource XRMPUTLINERESOURCE
|
|
||||||
#define XrmQPutStringResource XRMQPUTSTRINGRESOURCE
|
|
||||||
#define XrmStringToBindingQuarkList XRMSTRINGTOBINDINGQUARKLIST
|
|
||||||
#define XrmStringToQuark XRMSTRINGTOQUARK
|
|
||||||
#define XmCreateLabel XMCREATELABEL
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
extern void XtFree(char*);
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define pthread_attr_create PTHREAD_ATTR_CREATE
|
|
||||||
#define pthread_attr_delete PTHREAD_ATTR_DELETE
|
|
||||||
#define pthread_attr_destroy PTHREAD_ATTR_DESTROY
|
|
||||||
#define pthread_attr_getdetach_np PTHREAD_ATTR_GETDETACH_NP
|
|
||||||
#define pthread_attr_getguardsize_np PTHREAD_ATTR_GETGUARDSIZE_NP
|
|
||||||
#define pthread_attr_getinheritsched PTHREAD_ATTR_GETINHERITSCHED
|
|
||||||
#define pthread_attr_getprio PTHREAD_ATTR_GETPRIO
|
|
||||||
#define pthread_attr_getsched PTHREAD_ATTR_GETSCHED
|
|
||||||
#define pthread_attr_getschedparam PTHREAD_ATTR_GETSCHEDPARAM
|
|
||||||
#define pthread_attr_getstacksize PTHREAD_ATTR_GETSTACKSIZE
|
|
||||||
#define pthread_attr_init PTHREAD_ATTR_INIT
|
|
||||||
#define pthread_attr_setdetach_np PTHREAD_ATTR_SETDETACH_NP
|
|
||||||
#define pthread_attr_setdetachstate PTHREAD_ATTR_SETDETACHSTATE
|
|
||||||
#define pthread_attr_setguardsize_np PTHREAD_ATTR_SETGUARDSIZE_NP
|
|
||||||
#define pthread_attr_setinheritsched PTHREAD_ATTR_SETINHERITSCHED
|
|
||||||
#define pthread_attr_setprio PTHREAD_ATTR_SETPRIO
|
|
||||||
#define pthread_attr_setsched PTHREAD_ATTR_SETSCHED
|
|
||||||
#define pthread_attr_setschedparam PTHREAD_ATTR_SETSCHEDPARAM
|
|
||||||
#define pthread_attr_setschedpolicy PTHREAD_ATTR_SETSCHEDPOLICY
|
|
||||||
#define pthread_attr_setstacksize PTHREAD_ATTR_SETSTACKSIZE
|
|
||||||
#define pthread_cancel PTHREAD_CANCEL
|
|
||||||
#define pthread_cancel_e PTHREAD_CANCEL_E
|
|
||||||
#define pthread_cond_broadcast PTHREAD_COND_BROADCAST
|
|
||||||
#define pthread_cond_destroy PTHREAD_COND_DESTROY
|
|
||||||
#define pthread_cond_init PTHREAD_COND_INIT
|
|
||||||
#define pthread_cond_sig_preempt_int_np PTHREAD_COND_SIG_PREEMPT_INT_NP
|
|
||||||
#define pthread_cond_signal PTHREAD_COND_SIGNAL
|
|
||||||
#define pthread_cond_signal_int_np PTHREAD_COND_SIGNAL_INT_NP
|
|
||||||
#define pthread_cond_timedwait PTHREAD_COND_TIMEDWAIT
|
|
||||||
#define pthread_cond_wait PTHREAD_COND_WAIT
|
|
||||||
#define pthread_condattr_create PTHREAD_CONDATTR_CREATE
|
|
||||||
#define pthread_condattr_delete PTHREAD_CONDATTR_DELETE
|
|
||||||
#define pthread_condattr_init PTHREAD_CONDATTR_INIT
|
|
||||||
#define pthread_create PTHREAD_CREATE
|
|
||||||
#define pthread_delay_np PTHREAD_DELAY_NP
|
|
||||||
#define pthread_detach PTHREAD_DETACH
|
|
||||||
#define pthread_equal PTHREAD_EQUAL
|
|
||||||
#define pthread_exc_fetch_fp_np PTHREAD_EXC_FETCH_FP_NP
|
|
||||||
#define pthread_exc_handler_np PTHREAD_EXC_HANDLER_NP
|
|
||||||
#define pthread_exc_pop_ctx_np PTHREAD_EXC_POP_CTX_NP
|
|
||||||
#define pthread_exc_push_ctx_np PTHREAD_EXC_PUSH_CTX_NP
|
|
||||||
#define pthread_exc_savecontext_np PTHREAD_EXC_SAVECONTEXT_NP
|
|
||||||
#define pthread_exit PTHREAD_EXIT
|
|
||||||
#define pthread_get_expiration_np PTHREAD_GET_EXPIRATION_NP
|
|
||||||
#define pthread_getprio PTHREAD_GETPRIO
|
|
||||||
#define pthread_getschedparam PTHREAD_GETSCHEDPARAM
|
|
||||||
#define pthread_getscheduler PTHREAD_GETSCHEDULER
|
|
||||||
#define pthread_getspecific PTHREAD_GETSPECIFIC
|
|
||||||
#define pthread_getunique_np PTHREAD_GETUNIQUE_NP
|
|
||||||
#define pthread_join PTHREAD_JOIN
|
|
||||||
#define pthread_join32 PTHREAD_JOIN32
|
|
||||||
#define pthread_keycreate PTHREAD_KEYCREATE
|
|
||||||
#define pthread_key_create PTHREAD_KEY_CREATE
|
|
||||||
#define pthread_kill PTHREAD_KILL
|
|
||||||
#define pthread_lock_global_np PTHREAD_LOCK_GLOBAL_NP
|
|
||||||
#define pthread_mutex_destroy PTHREAD_MUTEX_DESTROY
|
|
||||||
#define pthread_mutex_init PTHREAD_MUTEX_INIT
|
|
||||||
#define pthread_mutex_lock PTHREAD_MUTEX_LOCK
|
|
||||||
#define pthread_mutex_trylock PTHREAD_MUTEX_TRYLOCK
|
|
||||||
#define pthread_mutex_unlock PTHREAD_MUTEX_UNLOCK
|
|
||||||
#define pthread_mutexattr_create PTHREAD_MUTEXATTR_CREATE
|
|
||||||
#define pthread_mutexattr_delete PTHREAD_MUTEXATTR_DELETE
|
|
||||||
#define pthread_mutexattr_destroy PTHREAD_MUTEXATTR_DESTROY
|
|
||||||
#define pthread_mutexattr_getkind_np PTHREAD_MUTEXATTR_GETKIND_NP
|
|
||||||
#define pthread_mutexattr_init PTHREAD_MUTEXATTR_INIT
|
|
||||||
#define pthread_mutexattr_setkind_np PTHREAD_MUTEXATTR_SETKIND_NP
|
|
||||||
#define pthread_mutexattr_settype_np PTHREAD_MUTEXATTR_SETTYPE_NP
|
|
||||||
#define pthread_once PTHREAD_ONCE
|
|
||||||
#define pthread_resume_np PTHREAD_RESUME_NP
|
|
||||||
#define pthread_self PTHREAD_SELF
|
|
||||||
#define pthread_setasynccancel PTHREAD_SETASYNCCANCEL
|
|
||||||
#define pthread_setcancel PTHREAD_SETCANCEL
|
|
||||||
#define pthread_setcancelstate PTHREAD_SETCANCELSTATE
|
|
||||||
#define pthread_setprio PTHREAD_SETPRIO
|
|
||||||
#define pthread_setschedparam PTHREAD_SETSCHEDPARAM
|
|
||||||
#define pthread_setscheduler PTHREAD_SETSCHEDULER
|
|
||||||
#define pthread_setspecific PTHREAD_SETSPECIFIC
|
|
||||||
#define pthread_suspend_np PTHREAD_SUSPEND_NP
|
|
||||||
#define pthread_testcancel PTHREAD_TESTCANCEL
|
|
||||||
#define pthread_unlock_global_np PTHREAD_UNLOCK_GLOBAL_NP
|
|
||||||
#define pthread_yield PTHREAD_YIELD
|
|
||||||
#define pthread_yield_np PTHREAD_YIELD_NP
|
|
||||||
#define XDefaultRootWindow XDEFAULTROOTWINDOW
|
|
||||||
#define XDisplayCells XDISPLAYCELLS
|
|
||||||
#define XMaxRequestSize XMAXREQUESTSIZE
|
|
||||||
#define XScreenOfDisplay XSCREENOFDISPLAY
|
|
||||||
#define XSetFillRule XSETFILLRULE
|
|
||||||
#define XmActivateProtocol XMACTIVATEPROTOCOL
|
|
||||||
#define XmCreateBulletinBoardDialog XMCREATEBULLETINBOARDDIALOG
|
|
||||||
#define XmCreateErrorDialog XMCREATEERRORDIALOG
|
|
||||||
#define XmCreateWarningDialog XMCREATEWARNINGDIALOG
|
|
||||||
#define XmCvtCTToXmString XMCVTCTTOXMSTRING
|
|
||||||
#define XmDestroyPixmap XMDESTROYPIXMAP
|
|
||||||
#define XmGetPixmap XMGETPIXMAP
|
|
||||||
#define XmInstallImage XMINSTALLIMAGE
|
|
||||||
#define XmListAddItems XMLISTADDITEMS
|
|
||||||
#define XmListDeleteItem XMLISTDELETEITEM
|
|
||||||
#define XmListItemExists XMLISTITEMEXISTS
|
|
||||||
#define XmListItemPos XMLISTITEMPOS
|
|
||||||
#define XmListReplaceItems XMLISTREPLACEITEMS
|
|
||||||
#define XmListReplaceItemsPos XMLISTREPLACEITEMSPOS
|
|
||||||
#define XmRemoveProtocols XMREMOVEPROTOCOLS
|
|
||||||
#define XmRemoveTabGroup XMREMOVETABGROUP
|
|
||||||
#define XmSetColorCalculation XMSETCOLORCALCULATION
|
|
||||||
#define XmTextCopy XMTEXTCOPY
|
|
||||||
#define XmTextCut XMTEXTCUT
|
|
||||||
#define XmTextFieldClearSelection XMTEXTFIELDCLEARSELECTION
|
|
||||||
#define XmTextFieldCopy XMTEXTFIELDCOPY
|
|
||||||
#define XmTextFieldCut XMTEXTFIELDCUT
|
|
||||||
#define XmTextFieldGetMaxLength XMTEXTFIELDGETMAXLENGTH
|
|
||||||
#define XmTextFieldGetSelectionPosition XMTEXTFIELDGETSELECTIONPOSITION
|
|
||||||
#define XmTextFieldPaste XMTEXTFIELDPASTE
|
|
||||||
#define XmTextFieldReplace XMTEXTFIELDREPLACE
|
|
||||||
#define XmTextFieldSetAddMode XMTEXTFIELDSETADDMODE
|
|
||||||
#define XmTextFieldSetHighlight XMTEXTFIELDSETHIGHLIGHT
|
|
||||||
#define XmTextFieldSetInsertionPosition XMTEXTFIELDSETINSERTIONPOSITION
|
|
||||||
#define XmTextFieldSetMaxLength XMTEXTFIELDSETMAXLENGTH
|
|
||||||
#define XmTextFieldShowPosition XMTEXTFIELDSHOWPOSITION
|
|
||||||
#define XmTextGetEditable XMTEXTGETEDITABLE
|
|
||||||
#define XmTextPaste XMTEXTPASTE
|
|
||||||
#define XmTextPosToXY XMTEXTPOSTOXY
|
|
||||||
#define XmTextSetEditable XMTEXTSETEDITABLE
|
|
||||||
#define XmTextShowPosition XMTEXTSHOWPOSITION
|
|
||||||
#define XmUninstallImage XMUNINSTALLIMAGE
|
|
||||||
#define XmuCvtStringToBitmap XMUCVTSTRINGTOBITMAP
|
|
||||||
#define XrmPutFileDatabase XRMPUTFILEDATABASE
|
|
||||||
#define XtAddConverter XTADDCONVERTER
|
|
||||||
#define XtError XTERROR
|
|
||||||
#define XtVaCreatePopupShell XTVACREATEPOPUPSHELL
|
|
||||||
#define pthread_attr_getschedpolicy PTHREAD_ATTR_GETSCHEDPOLICY
|
|
||||||
#define pthread_key_delete PTHREAD_KEY_DELETE
|
|
||||||
#define xmBulletinBoardWidgetClass XMBULLETINBOARDWIDGETCLASS
|
|
||||||
#define xmScaleWidgetClass XMSCALEWIDGETCLASS
|
|
||||||
#define XtDisplay XTDISPLAY
|
|
||||||
#define XtScreen XTSCREEN
|
|
||||||
#define XAllocIconSize XALLOCICONSIZE
|
|
||||||
#define XAllocStandardColormap XALLOCSTANDARDCOLORMAP
|
|
||||||
#define XAllowEvents XALLOWEVENTS
|
|
||||||
#define XBlackPixel XBLACKPIXEL
|
|
||||||
#define XCopyColormapAndFree XCOPYCOLORMAPANDFREE
|
|
||||||
#define XDefaultGC XDEFAULTGC
|
|
||||||
#define XDisplayHeight XDISPLAYHEIGHT
|
|
||||||
#define XDisplayWidth XDISPLAYWIDTH
|
|
||||||
#define XGetCommand XGETCOMMAND
|
|
||||||
#define XGetIconSizes XGETICONSIZES
|
|
||||||
#define XKillClient XKILLCLIENT
|
|
||||||
#define XListInstalledColormaps XLISTINSTALLEDCOLORMAPS
|
|
||||||
#define XRootWindow XROOTWINDOW
|
|
||||||
#define XWMGeometry XWMGEOMETRY
|
|
||||||
#define XWhitePixel XWHITEPIXEL
|
|
||||||
#define XrmCombineDatabase XRMCOMBINEDATABASE
|
|
||||||
#define XrmCombineFileDatabase XRMCOMBINEFILEDATABASE
|
|
||||||
#define XSetStandardProperties XSETSTANDARDPROPERTIES
|
|
||||||
#define XSetState XSETSTATE
|
|
||||||
#define XDrawRectangles XDRAWRECTANGLES
|
|
||||||
#define XGrabButton XGRABBUTTON
|
|
||||||
#define XLookupColor XLOOKUPCOLOR
|
|
||||||
#define XMapSubwindows XMAPSUBWINDOWS
|
|
||||||
#define XRecolorCursor XRECOLORCURSOR
|
|
||||||
#define XStoreBytes XSTOREBYTES
|
|
||||||
#define XUngrabButton XUNGRABBUTTON
|
|
||||||
#define XUninstallColormap XUNINSTALLCOLORMAP
|
|
||||||
#define lib$wait LIB$WAIT
|
|
||||||
#define lib$find_file LIB$FIND_FILE
|
|
||||||
#define lib$find_file_end LIB$FIND_FILE_END
|
|
||||||
#define lib$set_symbol LIB$SET_SYMBOL
|
|
||||||
#define lib$sfree1_dd LIB$SFREE1_DD
|
|
||||||
#define lib$spawn LIB$SPAWN
|
|
||||||
#define sys$assign SYS$ASSIGN
|
|
||||||
#define sys$crembx SYS$CREMBX
|
|
||||||
#define sys$dassgn SYS$DASSGN
|
|
||||||
#define sys$dclexh SYS$DCLEXH
|
|
||||||
#define sys$getdviw SYS$GETDVIW
|
|
||||||
#define sys$getsyiw SYS$GETSYIW
|
|
||||||
#define sys$qio SYS$QIO
|
|
||||||
#define sys$qiow SYS$QIOW
|
|
||||||
#define sys$setef SYS$SETEF
|
|
||||||
#define sys$synch SYS$SYNCH
|
|
||||||
#define XDrawText XDRAWTEXT
|
|
||||||
#define XtCloseDisplay XTCLOSEDISPLAY
|
|
||||||
#define XtDestroyApplicationContext XTDESTROYAPPLICATIONCONTEXT
|
|
||||||
#define lib$ediv LIB$EDIV
|
|
||||||
#define lib$subx LIB$SUBX
|
|
||||||
#define sys$bintim SYS$BINTIM
|
|
||||||
#define sys$gettim SYS$GETTIM
|
|
||||||
#define XFetchName XFETCHNAME
|
|
||||||
#define XPeekIfEvent XPEEKIFEVENT
|
|
||||||
#define XQueryKeymap XQUERYKEYMAP
|
|
||||||
#endif
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: wmesa.h,v 1.2 2002/04/23 18:23:32 kschultz Exp $ */
|
/* $Id: wmesa.h,v 1.1 1999/08/19 00:55:40 jtg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -24,17 +24,8 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: wmesa.h,v $
|
* $Log: wmesa.h,v $
|
||||||
* Revision 1.2 2002/04/23 18:23:32 kschultz
|
* Revision 1.1 1999/08/19 00:55:40 jtg
|
||||||
* Fix up alpha buffer handling for Windows.
|
* Initial revision
|
||||||
* - add two new Pixel Format Descriptors that do not have alpha bits to
|
|
||||||
* mirror the two that do.
|
|
||||||
* - add logic to wglChoosePixelFormat to match PFD's with respect to alpha.
|
|
||||||
* - Create/clear software alpha buffer as required.
|
|
||||||
* Now a wgl or GLUT program can control the creation of a software alpha
|
|
||||||
* buffer via the PFD or GLUT parms, respectively.
|
|
||||||
*
|
|
||||||
* Revision 1.1.1.1 1999/08/19 00:55:40 jtg
|
|
||||||
* Imported sources
|
|
||||||
*
|
*
|
||||||
* Revision 3.2 1999/01/03 02:54:45 brianp
|
* Revision 3.2 1999/01/03 02:54:45 brianp
|
||||||
* updated per Ted Jump
|
* updated per Ted Jump
|
||||||
@@ -110,17 +101,13 @@ typedef struct wmesa_context *WMesaContext;
|
|||||||
* GL_FALSE = color index mode
|
* GL_FALSE = color index mode
|
||||||
* db_flag - GL_TRUE = double-buffered,
|
* db_flag - GL_TRUE = double-buffered,
|
||||||
* GL_FALSE = single buffered
|
* GL_FALSE = single buffered
|
||||||
* alpha_flag - GL_TRUE = create software alpha buffer,
|
|
||||||
* GL_FALSE = no software alpha buffer
|
|
||||||
*
|
*
|
||||||
* Note: Indexed mode requires double buffering under Windows.
|
* Note: Indexed mode requires double buffering under Windows.
|
||||||
*
|
*
|
||||||
* Return: a WMesa_context or NULL if error.
|
* Return: a WMesa_context or NULL if error.
|
||||||
*/
|
*/
|
||||||
extern WMesaContext WMesaCreateContext(HWND hWnd,HPALETTE* pPal,
|
extern WMesaContext WMesaCreateContext(HWND hWnd,HPALETTE* pPal,
|
||||||
GLboolean rgb_flag,
|
GLboolean rgb_flag,GLboolean db_flag);
|
||||||
GLboolean db_flag,
|
|
||||||
GLboolean alpha_flag);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
/* $Id: xmesa.h,v 1.14 2002/10/05 03:03:37 brianp Exp $ */
|
/* $Id: xmesa.h,v 1.1.1.1.2.3 2000/02/09 18:53:55 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 4.1
|
* Version: 3.2
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
|
* Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
@@ -58,6 +58,7 @@ and create a window, you must do the following to use the X/Mesa interface:
|
|||||||
|
|
||||||
8. Before exiting, call XMesaDestroyVisual and XMesaDestroyContext.
|
8. Before exiting, call XMesaDestroyVisual and XMesaDestroyContext.
|
||||||
|
|
||||||
|
See the demos/xdemo.c and xmesa1.c files for examples.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -66,20 +67,21 @@ and create a window, you must do the following to use the X/Mesa interface:
|
|||||||
#ifndef XMESA_H
|
#ifndef XMESA_H
|
||||||
#define XMESA_H
|
#define XMESA_H
|
||||||
|
|
||||||
#ifdef __VMS
|
|
||||||
#include <GL/vms_x_fix.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef XFree86Server
|
#ifdef XFree86Server
|
||||||
#include "xmesa_xf86.h"
|
#include "xmesa_xf86.h"
|
||||||
#else
|
#else
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Xutil.h>
|
#include <X11/Xutil.h>
|
||||||
#include "xmesa_x.h"
|
#include "xmesa_x.h"
|
||||||
|
#ifdef GLX_DIRECT_RENDERING
|
||||||
|
#include "dri_mesa.h"
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#include "GL/gl.h"
|
#include "GL/gl.h"
|
||||||
|
|
||||||
@@ -89,8 +91,8 @@ extern struct Library *XLibBase;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define XMESA_MAJOR_VERSION 4
|
#define XMESA_MAJOR_VERSION 3
|
||||||
#define XMESA_MINOR_VERSION 1
|
#define XMESA_MINOR_VERSION 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -115,6 +117,17 @@ typedef struct xmesa_visual *XMesaVisual;
|
|||||||
|
|
||||||
typedef struct xmesa_buffer *XMesaBuffer;
|
typedef struct xmesa_buffer *XMesaBuffer;
|
||||||
|
|
||||||
|
#if defined(GLX_DIRECT_RENDERING) && !defined(XFree86Server)
|
||||||
|
/*
|
||||||
|
* Initialize the XMesa driver.
|
||||||
|
*/
|
||||||
|
extern GLboolean XMesaInitDriver( __DRIscreenPrivate *driScrnPriv );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reset the XMesa driver when the X server resets.
|
||||||
|
*/
|
||||||
|
extern void XMesaResetDriver( __DRIscreenPrivate *driScrnPriv );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -127,35 +140,24 @@ typedef struct xmesa_buffer *XMesaBuffer;
|
|||||||
* db_flag - GL_TRUE = double-buffered,
|
* db_flag - GL_TRUE = double-buffered,
|
||||||
* GL_FALSE = single buffered
|
* GL_FALSE = single buffered
|
||||||
* stereo_flag - stereo visual?
|
* stereo_flag - stereo visual?
|
||||||
* ximage_flag - GL_TRUE = use an XImage for back buffer,
|
|
||||||
* GL_FALSE = use an off-screen pixmap for back buffer
|
|
||||||
* depth_size - requested bits/depth values, or zero
|
* depth_size - requested bits/depth values, or zero
|
||||||
* stencil_size - requested bits/stencil values, or zero
|
* stencil_size - requested bits/stencil values, or zero
|
||||||
* accum_red_size - requested bits/red accum values, or zero
|
* accum_size - requested bits/component values, or zero
|
||||||
* accum_green_size - requested bits/green accum values, or zero
|
* ximage_flag - GL_TRUE = use an XImage for back buffer,
|
||||||
* accum_blue_size - requested bits/blue accum values, or zero
|
* GL_FALSE = use an off-screen pixmap for back buffer
|
||||||
* accum_alpha_size - requested bits/alpha accum values, or zero
|
|
||||||
* num_samples - number of samples/pixel if multisampling, or zero
|
|
||||||
* level - visual level, usually 0
|
|
||||||
* visualCaveat - ala the GLX extension, usually GLX_NONE_EXT
|
|
||||||
* Return; a new XMesaVisual or 0 if error.
|
* Return; a new XMesaVisual or 0 if error.
|
||||||
*/
|
*/
|
||||||
extern XMesaVisual XMesaCreateVisual( XMesaDisplay *display,
|
extern XMesaVisual XMesaCreateVisual( XMesaDisplay *display,
|
||||||
XMesaVisualInfo visinfo,
|
XMesaVisualInfo visinfo,
|
||||||
GLboolean rgb_flag,
|
GLboolean rgb_flag,
|
||||||
GLboolean alpha_flag,
|
GLboolean alpha_flag,
|
||||||
GLboolean db_flag,
|
GLboolean db_flag,
|
||||||
GLboolean stereo_flag,
|
GLboolean stereo_flag,
|
||||||
GLboolean ximage_flag,
|
GLboolean ximage_flag,
|
||||||
GLint depth_size,
|
GLint depth_size,
|
||||||
GLint stencil_size,
|
GLint stencil_size,
|
||||||
GLint accum_red_size,
|
GLint accum_size,
|
||||||
GLint accum_green_size,
|
GLint level );
|
||||||
GLint accum_blue_size,
|
|
||||||
GLint accum_alpha_size,
|
|
||||||
GLint num_samples,
|
|
||||||
GLint level,
|
|
||||||
GLint visualCaveat );
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Destroy an XMesaVisual, but not the associated XVisualInfo.
|
* Destroy an XMesaVisual, but not the associated XVisualInfo.
|
||||||
@@ -173,7 +175,11 @@ extern void XMesaDestroyVisual( XMesaVisual v );
|
|||||||
* Return: an XMesaContext or NULL if error.
|
* Return: an XMesaContext or NULL if error.
|
||||||
*/
|
*/
|
||||||
extern XMesaContext XMesaCreateContext( XMesaVisual v,
|
extern XMesaContext XMesaCreateContext( XMesaVisual v,
|
||||||
XMesaContext share_list );
|
XMesaContext share_list
|
||||||
|
#if defined(GLX_DIRECT_RENDERING) && !defined(XFree86Server)
|
||||||
|
, __DRIcontextPrivate *driContextPriv
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -185,7 +191,13 @@ extern void XMesaDestroyContext( XMesaContext c );
|
|||||||
/*
|
/*
|
||||||
* Create an XMesaBuffer from an X window.
|
* Create an XMesaBuffer from an X window.
|
||||||
*/
|
*/
|
||||||
extern XMesaBuffer XMesaCreateWindowBuffer( XMesaVisual v, XMesaWindow w );
|
extern XMesaBuffer XMesaCreateWindowBuffer( XMesaVisual v,
|
||||||
|
XMesaWindow w
|
||||||
|
#if defined(GLX_DIRECT_RENDERING) && !defined(XFree86Server)
|
||||||
|
, __DRIdrawablePrivate *driDrawPriv
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -193,7 +205,12 @@ extern XMesaBuffer XMesaCreateWindowBuffer( XMesaVisual v, XMesaWindow w );
|
|||||||
*/
|
*/
|
||||||
extern XMesaBuffer XMesaCreatePixmapBuffer( XMesaVisual v,
|
extern XMesaBuffer XMesaCreatePixmapBuffer( XMesaVisual v,
|
||||||
XMesaPixmap p,
|
XMesaPixmap p,
|
||||||
XMesaColormap cmap );
|
XMesaColormap cmap
|
||||||
|
#if defined(GLX_DIRECT_RENDERING) && !defined(XFree86Server)
|
||||||
|
, __DRIdrawablePrivate *driDrawPriv
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -219,22 +236,6 @@ extern GLboolean XMesaMakeCurrent( XMesaContext c,
|
|||||||
XMesaBuffer b );
|
XMesaBuffer b );
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Bind two buffers (read and draw) to a context and make the
|
|
||||||
* context the current one.
|
|
||||||
* New in Mesa 3.3
|
|
||||||
*/
|
|
||||||
extern GLboolean XMesaMakeCurrent2( XMesaContext c,
|
|
||||||
XMesaBuffer drawBuffer,
|
|
||||||
XMesaBuffer readBuffer );
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Unbind the current context from its buffer.
|
|
||||||
*/
|
|
||||||
extern GLboolean XMesaUnbindContext( XMesaContext c );
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return a handle to the current context.
|
* Return a handle to the current context.
|
||||||
*/
|
*/
|
||||||
@@ -242,18 +243,11 @@ extern XMesaContext XMesaGetCurrentContext( void );
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return handle to the current (draw) buffer.
|
* Return handle to the current buffer.
|
||||||
*/
|
*/
|
||||||
extern XMesaBuffer XMesaGetCurrentBuffer( void );
|
extern XMesaBuffer XMesaGetCurrentBuffer( void );
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Return handle to the current read buffer.
|
|
||||||
* New in Mesa 3.3
|
|
||||||
*/
|
|
||||||
extern XMesaBuffer XMesaGetCurrentReadBuffer( void );
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Swap the front and back buffers for the given buffer. No action is
|
* Swap the front and back buffers for the given buffer. No action is
|
||||||
* taken if the buffer is not double buffered.
|
* taken if the buffer is not double buffered.
|
||||||
@@ -365,25 +359,6 @@ extern GLboolean XMesaSetFXmode( GLint mode );
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Reallocate the back/depth/stencil/accum/etc/ buffers associated with
|
|
||||||
* buffer <b> if its size has changed.
|
|
||||||
*
|
|
||||||
* New in Mesa 4.0.2
|
|
||||||
*/
|
|
||||||
extern void XMesaResizeBuffers( XMesaBuffer b );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Create a pbuffer.
|
|
||||||
* New in Mesa 4.1
|
|
||||||
*/
|
|
||||||
extern XMesaBuffer XMesaCreatePBuffer(XMesaVisual v, XMesaColormap cmap,
|
|
||||||
unsigned int width, unsigned int height);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||||||
* Authors:
|
* Authors:
|
||||||
* Kevin E. Martin <kevin@precisioninsight.com>
|
* Kevin E. Martin <kevin@precisioninsight.com>
|
||||||
*
|
*
|
||||||
* $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/include/GL/xmesa_x.h,v 1.2 2000/02/25 20:31:11 brianp Exp $
|
* $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/include/GL/xmesa_x.h,v 1.1 1999/08/19 00:55:40 jtg Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _XMESA_X_H_
|
#ifndef _XMESA_X_H_
|
||||||
@@ -78,6 +78,7 @@ typedef XColor XMesaColor;
|
|||||||
#define GET_REDMASK(__v) __v->visinfo->red_mask
|
#define GET_REDMASK(__v) __v->visinfo->red_mask
|
||||||
#define GET_GREENMASK(__v) __v->visinfo->green_mask
|
#define GET_GREENMASK(__v) __v->visinfo->green_mask
|
||||||
#define GET_BLUEMASK(__v) __v->visinfo->blue_mask
|
#define GET_BLUEMASK(__v) __v->visinfo->blue_mask
|
||||||
|
#define GET_BITS_PER_PIXEL(__v) bits_per_pixel(__v->display, __v->visinfo)
|
||||||
#if defined(__cplusplus) || defined(c_plusplus)
|
#if defined(__cplusplus) || defined(c_plusplus)
|
||||||
#define GET_VISUAL_CLASS(__v) __v->visinfo->c_class
|
#define GET_VISUAL_CLASS(__v) __v->visinfo->c_class
|
||||||
#else
|
#else
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||||||
* Authors:
|
* Authors:
|
||||||
* Kevin E. Martin <kevin@precisioninsight.com>
|
* Kevin E. Martin <kevin@precisioninsight.com>
|
||||||
*
|
*
|
||||||
* $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/include/GL/xmesa_xf86.h,v 1.5 2000/04/05 22:09:10 brianp Exp $
|
* $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/include/GL/xmesa_xf86.h,v 1.1.1.1.2.1 1999/12/13 21:54:19 brianp Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _XMESA_XF86_H_
|
#ifndef _XMESA_XF86_H_
|
||||||
@@ -128,12 +128,12 @@ do { \
|
|||||||
do { \
|
do { \
|
||||||
xRectangle __r[1]; \
|
xRectangle __r[1]; \
|
||||||
(void) __d; \
|
(void) __d; \
|
||||||
ValidateGC((DrawablePtr)__b, __gc); \
|
ValidateGC(__b, __gc); \
|
||||||
__r[0].x = __x; \
|
__r[0].x = __x; \
|
||||||
__r[0].y = __y; \
|
__r[0].y = __y; \
|
||||||
__r[0].width = __w; \
|
__r[0].width = __w; \
|
||||||
__r[0].height = __h; \
|
__r[0].height = __h; \
|
||||||
(*__gc->ops->PolyFillRect)((DrawablePtr)__b, __gc, 1, __r); \
|
(*__gc->ops->PolyFillRect)(__b, __gc, 1, __r); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define XMesaPutImage(__d,__b,__gc,__i,__sx,__sy,__x,__y,__w,__h) \
|
#define XMesaPutImage(__d,__b,__gc,__i,__sx,__sy,__x,__y,__w,__h) \
|
||||||
@@ -179,6 +179,7 @@ do { \
|
|||||||
#define GET_REDMASK(__v) __v->visinfo->redMask
|
#define GET_REDMASK(__v) __v->visinfo->redMask
|
||||||
#define GET_GREENMASK(__v) __v->visinfo->greenMask
|
#define GET_GREENMASK(__v) __v->visinfo->greenMask
|
||||||
#define GET_BLUEMASK(__v) __v->visinfo->blueMask
|
#define GET_BLUEMASK(__v) __v->visinfo->blueMask
|
||||||
|
#define GET_BITS_PER_PIXEL(__v) __v->visinfo->bitsPerRGBValue
|
||||||
#define GET_VISUAL_CLASS(__v) __v->visinfo->class
|
#define GET_VISUAL_CLASS(__v) __v->visinfo->class
|
||||||
#define GET_VISUAL_DEPTH(__v) __v->visinfo->nplanes
|
#define GET_VISUAL_DEPTH(__v) __v->visinfo->nplanes
|
||||||
#define GET_BLACK_PIXEL(__v) __v->display->blackPixel
|
#define GET_BLACK_PIXEL(__v) __v->display->blackPixel
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class SampleGLWindow : public BWindow
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SampleGLWindow(BRect frame, uint32 type);
|
SampleGLWindow(BRect frame, uint32 type);
|
||||||
virtual bool QuitRequested() { be_app->PostMessage(B_QUIT_REQUESTED); return true; }
|
virtual bool QuitRequested() { return true; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SampleGLView *theView;
|
SampleGLView *theView;
|
||||||
@@ -135,7 +135,7 @@ void SampleGLView::gInit(void)
|
|||||||
use_stipple_mode = GL_FALSE;
|
use_stipple_mode = GL_FALSE;
|
||||||
use_smooth_mode = GL_TRUE;
|
use_smooth_mode = GL_TRUE;
|
||||||
linesize = 2;
|
linesize = 2;
|
||||||
pointsize = 6;
|
pointsize = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -147,46 +147,35 @@ void SampleGLView::gDraw(void)
|
|||||||
glClear(GL_COLOR_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
glLineWidth(linesize);
|
glLineWidth(linesize);
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
if (use_stipple_mode) {
|
if (use_stipple_mode) {
|
||||||
glEnable(GL_LINE_STIPPLE);
|
glEnable(GL_LINE_STIPPLE);
|
||||||
} else {
|
} else {
|
||||||
glDisable(GL_LINE_STIPPLE);
|
glDisable(GL_LINE_STIPPLE);
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
glDisable(GL_POINT_SMOOTH);
|
|
||||||
|
|
||||||
|
if (use_smooth_mode) {
|
||||||
|
glEnable(GL_LINE_SMOOTH);
|
||||||
|
glEnable(GL_BLEND);
|
||||||
|
} else {
|
||||||
|
glDisable(GL_LINE_SMOOTH);
|
||||||
|
glDisable(GL_BLEND);
|
||||||
|
}
|
||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
|
|
||||||
glPointSize(pointsize); // Set size for point
|
|
||||||
|
|
||||||
for (i = 0; i < 360; i += 5) {
|
for (i = 0; i < 360; i += 5) {
|
||||||
glRotatef(5.0, 0,0,1); // Rotate right 5 degrees
|
glRotatef(5.0, 0,0,1); // Rotate right 5 degrees
|
||||||
|
|
||||||
if (use_smooth_mode) {
|
|
||||||
glEnable(GL_LINE_SMOOTH);
|
|
||||||
glEnable(GL_BLEND);
|
|
||||||
} else {
|
|
||||||
glDisable(GL_LINE_SMOOTH);
|
|
||||||
glDisable(GL_BLEND);
|
|
||||||
}
|
|
||||||
|
|
||||||
glColor3f(1.0, 1.0, 0.0); // Set color for line
|
glColor3f(1.0, 1.0, 0.0); // Set color for line
|
||||||
glBegin(GL_LINE_STRIP); // And create the line
|
glBegin(GL_LINE_STRIP); // And create the line
|
||||||
glVertex3fv(pntA);
|
glVertex3fv(pntA);
|
||||||
glVertex3fv(pntB);
|
glVertex3fv(pntB);
|
||||||
glEnd();
|
glEnd();
|
||||||
|
|
||||||
glDisable(GL_POINT_SMOOTH);
|
glPointSize(pointsize); // Set size for point
|
||||||
glDisable(GL_BLEND);
|
|
||||||
|
|
||||||
glColor3f(0.0, 1.0, 0.0); // Set color for point
|
glColor3f(0.0, 1.0, 0.0); // Set color for point
|
||||||
glBegin(GL_POINTS);
|
glBegin(GL_POINTS);
|
||||||
glVertex3fv(pntA); // Draw point at one end
|
glVertex3fv(pntA); // Draw point at one end
|
||||||
glVertex3fv(pntB); // Draw point at other end
|
glVertex3fv(pntB); // Draw point at other end
|
||||||
glEnd();
|
glEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# $Id: Makefile.BeOS-R4,v 1.14 2001/02/20 17:04:52 brianp Exp $
|
# $Id: Makefile.BeOS-R4,v 1.3 1999/10/22 20:36:38 brianp Exp $
|
||||||
|
|
||||||
# Mesa 3-D graphics library
|
# Mesa 3-D graphics library
|
||||||
# Version: 3.5
|
# Version: 3.1
|
||||||
# Copyright (C) 1995-2001 Brian Paul
|
# Copyright (C) 1995-1999 Brian Paul
|
||||||
|
|
||||||
|
|
||||||
# Makefile for GLUT-based demo programs for BeOS R4
|
# Makefile for GLUT-based demo programs for BeOS R4
|
||||||
@@ -17,46 +17,9 @@ GL_LIBS = -L$(LIBDIR) -L/boot/home/config/lib -Xlinker -rpath $(LIBDIR) -lbe -lg
|
|||||||
|
|
||||||
LIB_DEP = $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(GLU_LIB) $(LIBDIR)/$(GLUT_LIB)
|
LIB_DEP = $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(GLU_LIB) $(LIBDIR)/$(GLUT_LIB)
|
||||||
|
|
||||||
PROGS = bounce \
|
PROGS = bounce clearspd drawpix gamma gears glinfo gloss isosurf \
|
||||||
clearspd \
|
morph3d multiarb osdemo paltex pointblast reflect \
|
||||||
cubemap \
|
renormal spectex stex3d texcyl texobj trispd winpos
|
||||||
drawpix \
|
|
||||||
fire \
|
|
||||||
gamma \
|
|
||||||
gears \
|
|
||||||
geartrain \
|
|
||||||
glinfo \
|
|
||||||
gloss \
|
|
||||||
gltestperf \
|
|
||||||
glutfx \
|
|
||||||
isosurf \
|
|
||||||
ipers \
|
|
||||||
lodbias \
|
|
||||||
morph3d \
|
|
||||||
multiarb \
|
|
||||||
occlude \
|
|
||||||
osdemo \
|
|
||||||
paltex \
|
|
||||||
pixeltex \
|
|
||||||
pointblast \
|
|
||||||
ray \
|
|
||||||
readpix \
|
|
||||||
reflect \
|
|
||||||
renormal \
|
|
||||||
shadowtex \
|
|
||||||
spectex \
|
|
||||||
stex3d \
|
|
||||||
teapot \
|
|
||||||
terrain \
|
|
||||||
tessdemo \
|
|
||||||
texcyl \
|
|
||||||
texdown \
|
|
||||||
texenv \
|
|
||||||
texobj \
|
|
||||||
trispd \
|
|
||||||
tunnel \
|
|
||||||
tunnel2 \
|
|
||||||
winpos
|
|
||||||
|
|
||||||
|
|
||||||
##### RULES #####
|
##### RULES #####
|
||||||
@@ -65,7 +28,7 @@ PROGS = bounce \
|
|||||||
.SUFFIXES: .c
|
.SUFFIXES: .c
|
||||||
|
|
||||||
.c: $(LIB_DEP)
|
.c: $(LIB_DEP)
|
||||||
$(CC) -I$(INCDIR) -I../util $(CFLAGS) $< $(GL_LIBS) -o $@
|
$(CC) -I$(INCDIR) $(CFLAGS) $< $(GL_LIBS) -o $@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
# $Id: Makefile.X11,v 1.20 2001/08/21 05:42:11 gareth Exp $
|
# $Id: Makefile.X11,v 1.3.2.1 2000/04/24 15:29:02 brianp Exp $
|
||||||
|
|
||||||
# Mesa 3-D graphics library
|
# Mesa 3-D graphics library
|
||||||
# Version: 3.5
|
# Version: 3.2
|
||||||
# Copyright (C) 1995-2001 Brian Paul
|
# Copyright (C) 1995-2000 Brian Paul
|
||||||
|
|
||||||
|
|
||||||
# Makefile for GLUT-based demo programs for Unix/X11
|
# Makefile for GLUT-based demo programs for Unix/X11
|
||||||
|
|
||||||
@@ -12,52 +13,13 @@
|
|||||||
INCDIR = ../include
|
INCDIR = ../include
|
||||||
LIBDIR = ../lib
|
LIBDIR = ../lib
|
||||||
|
|
||||||
GL_LIBS = -L$(LIBDIR) -lglut -lGLU -lGL $(APP_LIB_DEPS)
|
GL_LIBS = -L$(LIBDIR) -lglut -lGLU -lGL $(XLIBS)
|
||||||
|
|
||||||
OSMESA_LIBS = -L$(LIBDIR) -lglut -lOSMesa -lGLU -lGL $(APP_LIB_DEPS)
|
|
||||||
|
|
||||||
LIB_DEP = $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(GLU_LIB) $(LIBDIR)/$(GLUT_LIB)
|
LIB_DEP = $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(GLU_LIB) $(LIBDIR)/$(GLUT_LIB)
|
||||||
|
|
||||||
PROGS = bounce \
|
PROGS = bounce clearspd drawpix gamma gears glinfo gloss glutfx isosurf \
|
||||||
clearspd \
|
morph3d multiarb osdemo paltex pointblast reflect \
|
||||||
cubemap \
|
renormal spectex stex3d tessdemo texcyl texobj trispd winpos
|
||||||
drawpix \
|
|
||||||
fire \
|
|
||||||
gamma \
|
|
||||||
gears \
|
|
||||||
geartrain \
|
|
||||||
glinfo \
|
|
||||||
gloss \
|
|
||||||
gltestperf \
|
|
||||||
glutfx \
|
|
||||||
isosurf \
|
|
||||||
ipers \
|
|
||||||
lodbias \
|
|
||||||
morph3d \
|
|
||||||
multiarb \
|
|
||||||
occlude \
|
|
||||||
osdemo \
|
|
||||||
paltex \
|
|
||||||
pixeltex \
|
|
||||||
pointblast \
|
|
||||||
ray \
|
|
||||||
readpix \
|
|
||||||
reflect \
|
|
||||||
renormal \
|
|
||||||
shadowtex \
|
|
||||||
spectex \
|
|
||||||
stex3d \
|
|
||||||
teapot \
|
|
||||||
terrain \
|
|
||||||
tessdemo \
|
|
||||||
texcyl \
|
|
||||||
texdown \
|
|
||||||
texenv \
|
|
||||||
texobj \
|
|
||||||
trispd \
|
|
||||||
tunnel \
|
|
||||||
tunnel2 \
|
|
||||||
winpos
|
|
||||||
|
|
||||||
|
|
||||||
##### RULES #####
|
##### RULES #####
|
||||||
@@ -65,14 +27,9 @@ PROGS = bounce \
|
|||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.SUFFIXES: .c
|
.SUFFIXES: .c
|
||||||
|
|
||||||
|
|
||||||
# make executable from .c file:
|
|
||||||
.c: $(LIB_DEP)
|
.c: $(LIB_DEP)
|
||||||
$(CC) -I$(INCDIR) -I../util $(CFLAGS) $< $(GL_LIBS) -o $@
|
$(CC) -I$(INCDIR) $(CFLAGS) $< $(GL_LIBS) -o $@
|
||||||
|
|
||||||
# special case: need the -lOSMesa library:
|
|
||||||
osdemo: osdemo.c
|
|
||||||
$(CC) -I$(INCDIR) $(CFLAGS) osdemo.c $(OSMESA_LIBS) -o $@
|
|
||||||
|
|
||||||
|
|
||||||
##### TARGETS #####
|
##### TARGETS #####
|
||||||
@@ -86,17 +43,8 @@ clean:
|
|||||||
realclean:
|
realclean:
|
||||||
-rm $(PROGS)
|
-rm $(PROGS)
|
||||||
-rm *.o *~
|
-rm *.o *~
|
||||||
-rm readtex.[ch]
|
|
||||||
|
|
||||||
targets: readtex.c readtex.h $(PROGS)
|
|
||||||
|
|
||||||
|
|
||||||
readtex.c:
|
|
||||||
cp ../util/readtex.c .
|
|
||||||
|
|
||||||
readtex.h:
|
|
||||||
cp ../util/readtex.c .
|
|
||||||
|
|
||||||
|
targets: $(PROGS)
|
||||||
|
|
||||||
# execute all programs
|
# execute all programs
|
||||||
exec: $(PROGS)
|
exec: $(PROGS)
|
||||||
@@ -109,3 +57,4 @@ exec: $(PROGS)
|
|||||||
|
|
||||||
|
|
||||||
include ../Make-config
|
include ../Make-config
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# $Id: Makefile.cygnus,v 1.12 2000/12/24 22:53:54 pesco Exp $
|
# $Id: Makefile.cygnus,v 1.2 1999/10/22 20:37:23 brianp Exp $
|
||||||
|
|
||||||
# Mesa 3-D graphics library
|
# Mesa 3-D graphics library
|
||||||
# Version: 3.3
|
# Version: 3.1
|
||||||
# Copyright (C) 1995-2000 Brian Paul
|
# Copyright (C) 1995-1999 Brian Paul
|
||||||
|
|
||||||
|
|
||||||
# Makefile for demo programs for cygnus
|
# Makefile for demo programs for cygnus
|
||||||
@@ -19,45 +19,9 @@ GL_LIBS = -L$(LIBDIR) -lglut -lMesaGLU -lMesaGL -lm $(WLIBS)
|
|||||||
|
|
||||||
LIB_DEP = $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(GLU_LIB) $(LIBDIR)/$(GLUT_LIB)
|
LIB_DEP = $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(GLU_LIB) $(LIBDIR)/$(GLUT_LIB)
|
||||||
|
|
||||||
PROGS = bounce \
|
PROGS = clearspd drawpix gamma gears glinfo glutfx gloss isosurf \
|
||||||
clearspd \
|
morph3d multiext osdemo paltex pointblast reflect \
|
||||||
cubemap \
|
renormal spectex stex3d tessdemo texcyl texobj trispd winpos
|
||||||
drawpix \
|
|
||||||
fire \
|
|
||||||
gamma \
|
|
||||||
gears \
|
|
||||||
geartrain \
|
|
||||||
glinfo \
|
|
||||||
gloss \
|
|
||||||
gltestperf \
|
|
||||||
glutfx \
|
|
||||||
isosurf \
|
|
||||||
ipers \
|
|
||||||
lodbias \
|
|
||||||
morph3d \
|
|
||||||
multiarb \
|
|
||||||
occlude \
|
|
||||||
osdemo \
|
|
||||||
paltex \
|
|
||||||
pixeltex \
|
|
||||||
pointblast \
|
|
||||||
ray \
|
|
||||||
readpix \
|
|
||||||
reflect \
|
|
||||||
renormal \
|
|
||||||
spectex \
|
|
||||||
stex3d \
|
|
||||||
teapot \
|
|
||||||
terrain \
|
|
||||||
tessdemo \
|
|
||||||
texcyl \
|
|
||||||
texdown \
|
|
||||||
texenv \
|
|
||||||
texobj \
|
|
||||||
trispd \
|
|
||||||
tunnel \
|
|
||||||
tunnel2 \
|
|
||||||
winpos
|
|
||||||
|
|
||||||
|
|
||||||
##### RULES #####
|
##### RULES #####
|
||||||
@@ -66,7 +30,7 @@ PROGS = bounce \
|
|||||||
.SUFFIXES: .c
|
.SUFFIXES: .c
|
||||||
|
|
||||||
.c: $(LIB_DEP)
|
.c: $(LIB_DEP)
|
||||||
$(CC) -I$(INCDIR) -I../util $(CFLAGS) $< $(GL_LIBS) -o $@
|
$(CC) -I$(INCDIR) $(CFLAGS) $< $(GL_LIBS) -o $@
|
||||||
|
|
||||||
|
|
||||||
##### TARGETS #####
|
##### TARGETS #####
|
||||||
|
|||||||
@@ -1,130 +0,0 @@
|
|||||||
# $Id: Makefile.win,v 1.7 2002/01/16 00:48:43 kschultz Exp $
|
|
||||||
|
|
||||||
# Mesa 3-D graphics library
|
|
||||||
# Version: 3.5
|
|
||||||
# Copyright (C) 1995-2001 Brian Paul
|
|
||||||
|
|
||||||
# Makefile for GLUT-based demo programs for Windows
|
|
||||||
|
|
||||||
!include <win32.mak>
|
|
||||||
|
|
||||||
##### MACROS #####
|
|
||||||
|
|
||||||
TOP = ..
|
|
||||||
INCDIR = ..\include
|
|
||||||
LIBDIR = ..\lib
|
|
||||||
|
|
||||||
PROGS = anisotropic \
|
|
||||||
bounce \
|
|
||||||
clearspd \
|
|
||||||
cubemap \
|
|
||||||
drawpix \
|
|
||||||
fire \
|
|
||||||
gamma \
|
|
||||||
gears \
|
|
||||||
geartrain \
|
|
||||||
glinfo \
|
|
||||||
gloss \
|
|
||||||
gltestperf \
|
|
||||||
glutfx \
|
|
||||||
isosurf \
|
|
||||||
ipers \
|
|
||||||
lodbias \
|
|
||||||
morph3d \
|
|
||||||
multiarb \
|
|
||||||
occlude \
|
|
||||||
osdemo \
|
|
||||||
paltex \
|
|
||||||
pixeltex \
|
|
||||||
pointblast \
|
|
||||||
ray \
|
|
||||||
readpix \
|
|
||||||
reflect \
|
|
||||||
renormal \
|
|
||||||
shadowtex \
|
|
||||||
spectex \
|
|
||||||
stex3d \
|
|
||||||
teapot \
|
|
||||||
terrain \
|
|
||||||
tessdemo \
|
|
||||||
texcyl \
|
|
||||||
texdown \
|
|
||||||
texenv \
|
|
||||||
texobj \
|
|
||||||
trispd \
|
|
||||||
tunnel \
|
|
||||||
tunnel2 \
|
|
||||||
winpos
|
|
||||||
|
|
||||||
SRCS = \
|
|
||||||
bounce.c \
|
|
||||||
clearspd.c \
|
|
||||||
cubemap.c \
|
|
||||||
drawpix.c \
|
|
||||||
fire.c \
|
|
||||||
gamma.c \
|
|
||||||
gears.c \
|
|
||||||
geartrain.c \
|
|
||||||
glinfo.c \
|
|
||||||
gloss.c \
|
|
||||||
gltestperf.c \
|
|
||||||
glutfx.c \
|
|
||||||
isosurf.c \
|
|
||||||
lodbias.c \
|
|
||||||
morph3d.c \
|
|
||||||
multiarb.c \
|
|
||||||
occlude.c \
|
|
||||||
paltex.c \
|
|
||||||
pixeltex.c \
|
|
||||||
pointblast.c \
|
|
||||||
ray.c \
|
|
||||||
readpix.c \
|
|
||||||
reflect.c \
|
|
||||||
renormal.c \
|
|
||||||
shadowtex.c \
|
|
||||||
spectex.c \
|
|
||||||
stex3d.c \
|
|
||||||
teapot.c \
|
|
||||||
terrain.c \
|
|
||||||
tessdemo.c \
|
|
||||||
texcyl.c \
|
|
||||||
texdown.c \
|
|
||||||
texenv.c \
|
|
||||||
texobj.c \
|
|
||||||
trispd.c \
|
|
||||||
tunnel.c \
|
|
||||||
tunnel2.c \
|
|
||||||
winpos.c
|
|
||||||
|
|
||||||
CXXSRCS = \
|
|
||||||
rain.cxx
|
|
||||||
|
|
||||||
OSMESASRCS = osdemo.c
|
|
||||||
IPERSSRCS = ipers.c
|
|
||||||
IPERSEXES = $(IPERSSRCS:.c=.exe)
|
|
||||||
!include "../mesawin32.mak"
|
|
||||||
|
|
||||||
##### TARGETS #####
|
|
||||||
|
|
||||||
clean::
|
|
||||||
|
|
||||||
clobber::
|
|
||||||
@del readtex.c readtex.h
|
|
||||||
|
|
||||||
$(EXES) : $*.obj readtex.c readtex.h
|
|
||||||
@echo $@
|
|
||||||
$(link) -out:$@ $* /LIBPATH:$(LIBDIR) $(LIBS)
|
|
||||||
|
|
||||||
$(OSMESAEXES) : $*.obj
|
|
||||||
@echo $@
|
|
||||||
$(link) $(lcommon) -out:$@ $* /LIBPATH:$(LIBDIR) $(LIBS) $(EXTRALIBS)
|
|
||||||
|
|
||||||
$(IPERSEXES) : $*.obj
|
|
||||||
@echo $@
|
|
||||||
$(link) -out:$@ $* /LIBPATH:$(LIBDIR) $(LIBS) winmm.lib
|
|
||||||
|
|
||||||
readtex.c:
|
|
||||||
-copy ..\util\readtex.c .
|
|
||||||
|
|
||||||
readtex.h:
|
|
||||||
-copy ..\util\readtex.h .
|
|
||||||
@@ -1,230 +0,0 @@
|
|||||||
INTRODUCTION
|
|
||||||
------------
|
|
||||||
|
|
||||||
This directory is usually included in the Mesa demos distribution or
|
|
||||||
in the GLUT distribution.
|
|
||||||
|
|
||||||
I have written the demos included in this directory mainly for showing
|
|
||||||
the capabilities of the Mesa library when using the Voodoo driver.
|
|
||||||
However all the demos are written using the GLUT and OpenGL so they
|
|
||||||
work with any GLUT/OpenGL platform (tested: Linux+Mesa+Voodoo driver,
|
|
||||||
Linux+Mesa+X11 driver, Win95+Mesa+Voodoo driver and SGI Onyx IR thanks
|
|
||||||
to Mark Kilgard).
|
|
||||||
|
|
||||||
All the demos make an heavy use of texture mapping, blending, etc. so
|
|
||||||
you _need_ some kind of hardware support for the OpenGL otherwise they
|
|
||||||
will run at ~1fps. You need also a OpenGL 1.1 compliant library.
|
|
||||||
|
|
||||||
You can find some screenshot of these demos at
|
|
||||||
http://www-hmw.caribel.pisa.it/fxmesa/fxdemos.hmtl
|
|
||||||
|
|
||||||
Write me if you find some bug in the demos.
|
|
||||||
|
|
||||||
David Bucciarelli (tech.hmw@plus.it)
|
|
||||||
|
|
||||||
Humanware s.r.l.
|
|
||||||
Via XXIV Maggio 62
|
|
||||||
Pisa, Italy
|
|
||||||
Tel./Fax +39-50-554108
|
|
||||||
email: info.hmw@plus.it
|
|
||||||
www: www-hmw.caribel.pisa.it
|
|
||||||
|
|
||||||
|
|
||||||
A BRIEF DESCRIPTION OF THE DEMOS
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
IPERS
|
|
||||||
-----
|
|
||||||
|
|
||||||
Sources: ipers.c image.c
|
|
||||||
|
|
||||||
A nice spinning fractal object.
|
|
||||||
|
|
||||||
|
|
||||||
RAY
|
|
||||||
---
|
|
||||||
|
|
||||||
Sources: ray.c
|
|
||||||
|
|
||||||
I'm using ray tracing to dynamically generate texture maps with
|
|
||||||
specular, diffuse, shadows, and mirror colors. Each frame the texture
|
|
||||||
maps of the plane and of the sphere are partially updated. With this
|
|
||||||
technique you can obtain true mirrors, shadows, specular highlights,
|
|
||||||
bump mapping, etc. in realtime. This demo is really CPU intensive
|
|
||||||
(~25fps on a PentiumII@300MHz with a Pure3D). Support on-the-fly
|
|
||||||
switching between fullscreen and in-window rendering under Linux/Mesa
|
|
||||||
(start your X server in 16 bpp mode and press the spacebar).
|
|
||||||
|
|
||||||
|
|
||||||
TUNNEL
|
|
||||||
------
|
|
||||||
|
|
||||||
Sources: tunnel.c image.c sources.c
|
|
||||||
Data: bw.rgb tile.rgb
|
|
||||||
|
|
||||||
The model was designed and prelighted with Alias|Wavefront
|
|
||||||
PowerAnimator V8. Triangle strips were built with a tool written by me
|
|
||||||
and then statically included in the sources. This demo doesn't
|
|
||||||
require the ZBuffer and use antialiased polygons. Support on-the-fly
|
|
||||||
switching between fullscreen and in-window rendering under Linux/Mesa
|
|
||||||
(start your X server in 16 bpp mode and press the spacebar).
|
|
||||||
|
|
||||||
|
|
||||||
TUNNEL2
|
|
||||||
------
|
|
||||||
|
|
||||||
Sources: tunnel2.c image.c sources.c
|
|
||||||
Data: bw.rgb tile.rgb
|
|
||||||
|
|
||||||
The some tunnel demo but with two output channels. A nice
|
|
||||||
example of the Mesa/Voodoo support for multiple boards in
|
|
||||||
the some PC.
|
|
||||||
|
|
||||||
|
|
||||||
TEAPOT
|
|
||||||
------
|
|
||||||
|
|
||||||
Sources: teapot.c image.c dteapot.c shadow.c
|
|
||||||
Data: bw.rgb tile.rgb
|
|
||||||
|
|
||||||
The shadow is drawn projecting the teapot geometry over the plane. All
|
|
||||||
other light effects are drawn using the standard OpenGL capabilities.
|
|
||||||
Support on-the-fly switching between fullscreen and in-window
|
|
||||||
rendering under Linux/Mesa (start your X server in 16 bpp mode and
|
|
||||||
press the spacebar).
|
|
||||||
|
|
||||||
|
|
||||||
FIRE
|
|
||||||
----
|
|
||||||
|
|
||||||
Sources: fire.c image.c
|
|
||||||
Data: s128.rgb tree2.rgb
|
|
||||||
|
|
||||||
The demo use a small particle system to draw some nice visual effect.
|
|
||||||
You can interactively change many parameters of the particle system
|
|
||||||
and you can choose the number of particles at the startup ('fire
|
|
||||||
4000'). This demo should be called fountain. Support on-the-fly
|
|
||||||
switching between fullscreen and in-window rendering under Linux/Mesa
|
|
||||||
(start your X server in 16 bpp mode and press the spacebar).
|
|
||||||
|
|
||||||
|
|
||||||
TERRAIN
|
|
||||||
-------
|
|
||||||
|
|
||||||
Sources: mesaland.c
|
|
||||||
|
|
||||||
This demo is base on another demo written by Mikael SkiZoWalker. I
|
|
||||||
have added the capabilities to freely fly around, view culling and
|
|
||||||
some nice color. Support on-the-fly switching between fullscreen and
|
|
||||||
in-window rendering under Linux/Mesa (start your X server in 16 bpp
|
|
||||||
mode and press the spacebar).
|
|
||||||
|
|
||||||
|
|
||||||
GLTEST
|
|
||||||
------
|
|
||||||
|
|
||||||
Sources: gltest.c
|
|
||||||
|
|
||||||
This is a simple benchmark suite that I'm using in the development of
|
|
||||||
the Mesa/Voodoo driver. Type 'gltest >my.res' and you will get some
|
|
||||||
data about the performances of your OpenGL. Follow the results with my
|
|
||||||
PC (Linux+Mesa-2.6+PentiumII@300MHz+Pure3D):
|
|
||||||
|
|
||||||
Simple Points
|
|
||||||
587900.080674 Pnts/sec
|
|
||||||
|
|
||||||
Smooth Lines
|
|
||||||
SIZE=480 => 39007.426183 Lins/sec
|
|
||||||
SIZE=250 => 74575.016485 Lins/sec
|
|
||||||
SIZE=100 => 179734.882409 Lins/sec
|
|
||||||
SIZE=050 => 183987.795297 Lins/sec
|
|
||||||
SIZE=025 => 183820.086309 Lins/sec
|
|
||||||
|
|
||||||
|
|
||||||
ZSmooth Triangles
|
|
||||||
SIZE=480 => 784.954997 Tris/sec
|
|
||||||
SIZE=250 => 2862.325889 Tris/sec
|
|
||||||
SIZE=100 => 17779.492938 Tris/sec
|
|
||||||
SIZE=050 => 159339.829844 Tris/sec
|
|
||||||
SIZE=025 => 428602.984008 Tris/sec
|
|
||||||
|
|
||||||
|
|
||||||
ZSmooth Tex Blend Triangles
|
|
||||||
SIZE=480 => 784.473931 Tris/sec
|
|
||||||
SIZE=250 => 2853.781513 Tris/sec
|
|
||||||
SIZE=100 => 17598.252146 Tris/sec
|
|
||||||
SIZE=050 => 152632.578337 Tris/sec
|
|
||||||
SIZE=025 => 377584.760048 Tris/sec
|
|
||||||
|
|
||||||
|
|
||||||
ZSmooth Tex Blend TMesh Triangles
|
|
||||||
SIZE=400 => 563.900695 Tris/sec, MPixel Fill/sec: 45.112056
|
|
||||||
SIZE=250 => 1449.777225 Tris/sec, MPixel Fill/sec: 45.305538
|
|
||||||
SIZE=100 => 8702.869121 Tris/sec, MPixel Fill/sec: 43.514346
|
|
||||||
SIZE=050 => 31896.867466 Tris/sec, MPixel Fill/sec: 39.871084
|
|
||||||
SIZE=025 => 114037.262894 Tris/sec, MPixel Fill/sec: 35.636645
|
|
||||||
SIZE=010 => 220494.235839 Tris/sec, MPixel Fill/sec: 11.024712
|
|
||||||
SIZE=005 => 225615.506651 Tris/sec, MPixel Fill/sec: 2.820194
|
|
||||||
SIZE=002 => 225607.681439 Tris/sec, MPixel Fill/sec: 0.451215
|
|
||||||
|
|
||||||
|
|
||||||
Color/Depth Buffer Clears
|
|
||||||
295.042474 Clrs/sec, MPixel Fill/sec: 90.553256
|
|
||||||
|
|
||||||
|
|
||||||
Follow the results with my
|
|
||||||
PC (Linux+Mesa-3.0beta5+PentiumII@300MHz+Voodoo2):
|
|
||||||
|
|
||||||
|
|
||||||
Simple Points
|
|
||||||
1620113.525130 Pnts/sec
|
|
||||||
|
|
||||||
Smooth Lines
|
|
||||||
SIZE=480 => 73841.166065 Lins/sec
|
|
||||||
SIZE=250 => 140794.035316 Lins/sec
|
|
||||||
SIZE=100 => 344185.242157 Lins/sec
|
|
||||||
SIZE=050 => 420399.008289 Lins/sec
|
|
||||||
SIZE=025 => 420261.389773 Lins/sec
|
|
||||||
|
|
||||||
|
|
||||||
ZSmooth Triangles
|
|
||||||
SIZE=480 => 1434.668506 Tris/sec
|
|
||||||
SIZE=250 => 5228.449614 Tris/sec
|
|
||||||
SIZE=100 => 46603.815842 Tris/sec
|
|
||||||
SIZE=050 => 325757.045961 Tris/sec
|
|
||||||
SIZE=025 => 589022.403336 Tris/sec
|
|
||||||
|
|
||||||
|
|
||||||
ZSmooth Tex Blend Triangles
|
|
||||||
SIZE=480 => 1414.900041 Tris/sec
|
|
||||||
SIZE=250 => 5006.055235 Tris/sec
|
|
||||||
SIZE=100 => 43602.252031 Tris/sec
|
|
||||||
SIZE=050 => 303497.092692 Tris/sec
|
|
||||||
SIZE=025 => 517087.428669 Tris/sec
|
|
||||||
|
|
||||||
|
|
||||||
ZSmooth Tex Blend TMesh Triangles
|
|
||||||
SIZE=400 => 1023.273112 Tris/sec, MPixel Fill/sec: 81.861849
|
|
||||||
SIZE=250 => 2595.692121 Tris/sec, MPixel Fill/sec: 81.115379
|
|
||||||
SIZE=100 => 15788.198912 Tris/sec, MPixel Fill/sec: 78.940995
|
|
||||||
SIZE=050 => 58784.121300 Tris/sec, MPixel Fill/sec: 73.480152
|
|
||||||
SIZE=025 => 244233.873481 Tris/sec, MPixel Fill/sec: 76.323085
|
|
||||||
SIZE=010 => 474995.004191 Tris/sec, MPixel Fill/sec: 23.749750
|
|
||||||
SIZE=005 => 475124.354163 Tris/sec, MPixel Fill/sec: 5.939054
|
|
||||||
SIZE=002 => 474959.089503 Tris/sec, MPixel Fill/sec: 0.949918
|
|
||||||
|
|
||||||
|
|
||||||
Color/Depth Buffer Clears
|
|
||||||
478.654830 Clrs/sec, MPixel Fill/sec: 146.906826
|
|
||||||
|
|
||||||
|
|
||||||
PALTEX and GLBPALTX
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Sources: paltex.c and glbpaltx.c
|
|
||||||
|
|
||||||
The PALTEX example was written by Brian Paul and it shows the
|
|
||||||
capabilities of the GL_EXT_paletted_texture extension. I have written
|
|
||||||
the other example in order to show the capabilities of the
|
|
||||||
gl3DfxSetPaletteEXT() (it used only by GLQuake and Quake2).
|
|
||||||
@@ -1,13 +1,33 @@
|
|||||||
/* $Id: bounce.c,v 1.3 2000/08/16 20:36:34 brianp Exp $ */
|
/* $Id: bounce.c,v 1.1 1999/08/19 00:55:40 jtg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Bouncing ball demo.
|
* Bouncing ball demo. Color index mode only!
|
||||||
*
|
*
|
||||||
* This program is in the public domain
|
* This program is in the public domain
|
||||||
*
|
*
|
||||||
* Brian Paul
|
* Brian Paul
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Conversion to GLUT by Mark J. Kilgard */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Log: bounce.c,v $
|
||||||
|
* Revision 1.1 1999/08/19 00:55:40 jtg
|
||||||
|
* Initial revision
|
||||||
|
*
|
||||||
|
* Revision 3.3 1999/03/18 08:16:14 joukj
|
||||||
|
*
|
||||||
|
* cmpstr needs string.h to included to avoid warnings
|
||||||
|
*
|
||||||
|
* Revision 3.2 1998/11/28 01:13:02 brianp
|
||||||
|
* now sets an initial window position and size
|
||||||
|
*
|
||||||
|
* Revision 3.1 1998/11/28 01:06:57 brianp
|
||||||
|
* now works in RGB mode by default
|
||||||
|
*
|
||||||
|
* Revision 3.0 1998/02/14 18:42:29 brianp
|
||||||
|
* initial rev
|
||||||
*
|
*
|
||||||
* Conversion to GLUT by Mark J. Kilgard
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -61,9 +81,9 @@ make_ball(void)
|
|||||||
glColor3f(1, 1, 1);
|
glColor3f(1, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
x = radius * COS(b) * COS(a);
|
x = COS(b) * COS(a);
|
||||||
y = radius * SIN(b) * COS(a);
|
y = SIN(b) * COS(a);
|
||||||
z = radius * SIN(a);
|
z = SIN(a);
|
||||||
glVertex3f(x, y, z);
|
glVertex3f(x, y, z);
|
||||||
|
|
||||||
x = radius * COS(b) * COS(a + da);
|
x = radius * COS(b) * COS(a + da);
|
||||||
@@ -175,7 +195,7 @@ idle(void)
|
|||||||
glutPostRedisplay();
|
glutPostRedisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
visible(int vis)
|
visible(int vis)
|
||||||
{
|
{
|
||||||
if (vis == GLUT_VISIBLE)
|
if (vis == GLUT_VISIBLE)
|
||||||
|
|||||||
@@ -1,10 +1,30 @@
|
|||||||
/* $Id: clearspd.c,v 1.4 2002/04/22 16:03:37 brianp Exp $ */
|
/* $Id: clearspd.c,v 1.1 1999/08/19 00:55:40 jtg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Simple GLUT program to measure glClear() and glutSwapBuffers() speed.
|
* Simple GLUT program to measure glClear() and glutSwapBuffers() speed.
|
||||||
* Brian Paul February 15, 1997 This file in public domain.
|
* Brian Paul February 15, 1997 This file in public domain.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Log: clearspd.c,v $
|
||||||
|
* Revision 1.1 1999/08/19 00:55:40 jtg
|
||||||
|
* Initial revision
|
||||||
|
*
|
||||||
|
* Revision 3.3 1999/03/28 18:18:33 brianp
|
||||||
|
* minor clean-up
|
||||||
|
*
|
||||||
|
* Revision 3.2 1999/03/18 08:16:34 joukj
|
||||||
|
*
|
||||||
|
* cmpstr needs string.h to included to avoid warnings
|
||||||
|
*
|
||||||
|
* Revision 3.1 1998/06/29 02:38:30 brianp
|
||||||
|
* removed unneeded includes
|
||||||
|
*
|
||||||
|
* Revision 3.0 1998/02/14 18:42:29 brianp
|
||||||
|
* initial rev
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -48,7 +68,6 @@ static void Display( void )
|
|||||||
glClear( BufferMask );
|
glClear( BufferMask );
|
||||||
glutSwapBuffers();
|
glutSwapBuffers();
|
||||||
}
|
}
|
||||||
glFinish();
|
|
||||||
t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -56,7 +75,6 @@ static void Display( void )
|
|||||||
for (i=0;i<Loops;i++) {
|
for (i=0;i<Loops;i++) {
|
||||||
glClear( BufferMask );
|
glClear( BufferMask );
|
||||||
}
|
}
|
||||||
glFinish();
|
|
||||||
t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
||||||
glutSwapBuffers();
|
glutSwapBuffers();
|
||||||
}
|
}
|
||||||
@@ -70,12 +88,12 @@ static void Display( void )
|
|||||||
clearRate = Loops / (t1-t0);
|
clearRate = Loops / (t1-t0);
|
||||||
pixelRate = clearRate * Width * Height;
|
pixelRate = clearRate * Width * Height;
|
||||||
if (SwapFlag) {
|
if (SwapFlag) {
|
||||||
printf("Rate: %d clears+swaps in %gs = %g clears+swaps/s %g pixels/s\n",
|
printf("Rate: %d clears+swaps in %gs = %g clears+swaps/s %d pixels/s\n",
|
||||||
Loops, t1-t0, clearRate, pixelRate );
|
Loops, t1-t0, clearRate, (int)pixelRate );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
printf("Rate: %d clears in %gs = %g clears/s %g pixels/s\n",
|
printf("Rate: %d clears in %gs = %g clears/s %d pixels/s\n",
|
||||||
Loops, t1-t0, clearRate, pixelRate);
|
Loops, t1-t0, clearRate, (int)pixelRate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -176,8 +194,6 @@ static void Help( const char *program )
|
|||||||
|
|
||||||
int main( int argc, char *argv[] )
|
int main( int argc, char *argv[] )
|
||||||
{
|
{
|
||||||
GLint mode;
|
|
||||||
|
|
||||||
printf("For options: %s -help\n", argv[0]);
|
printf("For options: %s -help\n", argv[0]);
|
||||||
|
|
||||||
Init( argc, argv );
|
Init( argc, argv );
|
||||||
@@ -186,15 +202,7 @@ int main( int argc, char *argv[] )
|
|||||||
glutInitWindowSize( (int) Width, (int) Height );
|
glutInitWindowSize( (int) Width, (int) Height );
|
||||||
glutInitWindowPosition( 0, 0 );
|
glutInitWindowPosition( 0, 0 );
|
||||||
|
|
||||||
mode = ColorMode | GLUT_DOUBLE;
|
glutInitDisplayMode( ColorMode | GLUT_DOUBLE | GLUT_DEPTH | GLUT_STENCIL | GLUT_ACCUM );
|
||||||
if (BufferMask & GL_STENCIL_BUFFER_BIT)
|
|
||||||
mode |= GLUT_STENCIL;
|
|
||||||
if (BufferMask & GL_ACCUM_BUFFER_BIT)
|
|
||||||
mode |= GLUT_ACCUM;
|
|
||||||
if (BufferMask & GL_DEPTH_BUFFER_BIT)
|
|
||||||
mode |= GLUT_DEPTH;
|
|
||||||
|
|
||||||
glutInitDisplayMode(mode);
|
|
||||||
|
|
||||||
glutCreateWindow( argv[0] );
|
glutCreateWindow( argv[0] );
|
||||||
|
|
||||||
|
|||||||
@@ -1,412 +0,0 @@
|
|||||||
/* $Id: cubemap.c,v 1.4 2002/10/25 17:20:26 brianp Exp $ */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* GL_ARB_texture_cube_map demo
|
|
||||||
*
|
|
||||||
* Brian Paul
|
|
||||||
* May 2000
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* Copyright (C) 2000 Brian Paul All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
* and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is 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 Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS 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
|
|
||||||
* BRIAN PAUL 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This is a pretty minimalistic demo for now. Eventually, use some
|
|
||||||
* interesting cube map textures and 3D objects.
|
|
||||||
* For now, we use 6 checkerboard "walls" and a sphere (good for
|
|
||||||
* verification purposes).
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include <assert.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include "GL/glut.h"
|
|
||||||
#include "../util/readtex.c" /* a hack */
|
|
||||||
|
|
||||||
|
|
||||||
static GLfloat Xrot = 0, Yrot = 0;
|
|
||||||
static GLfloat EyeDist = 10;
|
|
||||||
|
|
||||||
|
|
||||||
static void draw_skybox( void )
|
|
||||||
{
|
|
||||||
const GLfloat eps1 = 0.99;
|
|
||||||
const GLfloat br = 20.0; /* box radius */
|
|
||||||
|
|
||||||
glBegin(GL_QUADS);
|
|
||||||
|
|
||||||
/* +X side */
|
|
||||||
glTexCoord3f(1.0, -eps1, -eps1); glVertex3f(br, -br, -br);
|
|
||||||
glTexCoord3f(1.0, -eps1, eps1); glVertex3f(br, -br, br);
|
|
||||||
glTexCoord3f(1.0, eps1, eps1); glVertex3f(br, br, br);
|
|
||||||
glTexCoord3f(1.0, eps1, -eps1); glVertex3f(br, br, -br);
|
|
||||||
|
|
||||||
/* -X side */
|
|
||||||
glTexCoord3f(-1.0, eps1, -eps1); glVertex3f(-br, br, -br);
|
|
||||||
glTexCoord3f(-1.0, eps1, eps1); glVertex3f(-br, br, br);
|
|
||||||
glTexCoord3f(-1.0, -eps1, eps1); glVertex3f(-br, -br, br);
|
|
||||||
glTexCoord3f(-1.0, -eps1, -eps1); glVertex3f(-br, -br, -br);
|
|
||||||
|
|
||||||
/* +Y side */
|
|
||||||
glTexCoord3f(-eps1, 1.0, -eps1); glVertex3f(-br, br, -br);
|
|
||||||
glTexCoord3f(-eps1, 1.0, eps1); glVertex3f(-br, br, br);
|
|
||||||
glTexCoord3f( eps1, 1.0, eps1); glVertex3f( br, br, br);
|
|
||||||
glTexCoord3f( eps1, 1.0, -eps1); glVertex3f( br, br, -br);
|
|
||||||
|
|
||||||
/* -Y side */
|
|
||||||
glTexCoord3f(-eps1, -1.0, -eps1); glVertex3f(-br, -br, -br);
|
|
||||||
glTexCoord3f(-eps1, -1.0, eps1); glVertex3f(-br, -br, br);
|
|
||||||
glTexCoord3f( eps1, -1.0, eps1); glVertex3f( br, -br, br);
|
|
||||||
glTexCoord3f( eps1, -1.0, -eps1); glVertex3f( br, -br, -br);
|
|
||||||
|
|
||||||
/* +Z side */
|
|
||||||
glTexCoord3f( eps1, -eps1, 1.0); glVertex3f( br, -br, br);
|
|
||||||
glTexCoord3f(-eps1, -eps1, 1.0); glVertex3f(-br, -br, br);
|
|
||||||
glTexCoord3f(-eps1, eps1, 1.0); glVertex3f(-br, br, br);
|
|
||||||
glTexCoord3f( eps1, eps1, 1.0); glVertex3f( br, br, br);
|
|
||||||
|
|
||||||
/* -Z side */
|
|
||||||
glTexCoord3f( eps1, eps1, -1.0); glVertex3f( br, br, -br);
|
|
||||||
glTexCoord3f(-eps1, eps1, -1.0); glVertex3f(-br, br, -br);
|
|
||||||
glTexCoord3f(-eps1, -eps1, -1.0); glVertex3f(-br, -br, -br);
|
|
||||||
glTexCoord3f( eps1, -eps1, -1.0); glVertex3f( br, -br, -br);
|
|
||||||
|
|
||||||
glEnd();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void draw( void )
|
|
||||||
{
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
|
||||||
|
|
||||||
glPushMatrix(); /*MODELVIEW*/
|
|
||||||
glTranslatef( 0.0, 0.0, -EyeDist );
|
|
||||||
|
|
||||||
/* skybox */
|
|
||||||
glDisable(GL_TEXTURE_GEN_S);
|
|
||||||
glDisable(GL_TEXTURE_GEN_T);
|
|
||||||
glDisable(GL_TEXTURE_GEN_R);
|
|
||||||
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
glPushMatrix();
|
|
||||||
glRotatef(Xrot, 1, 0, 0);
|
|
||||||
glRotatef(Yrot, 0, 1, 0);
|
|
||||||
draw_skybox();
|
|
||||||
glPopMatrix();
|
|
||||||
|
|
||||||
/* sphere */
|
|
||||||
glMatrixMode(GL_TEXTURE);
|
|
||||||
glLoadIdentity();
|
|
||||||
glRotatef(-Yrot, 0, 1, 0);
|
|
||||||
glRotatef(-Xrot, 1, 0, 0);
|
|
||||||
|
|
||||||
glEnable(GL_TEXTURE_GEN_S);
|
|
||||||
glEnable(GL_TEXTURE_GEN_T);
|
|
||||||
glEnable(GL_TEXTURE_GEN_R);
|
|
||||||
glutSolidSphere(2.0, 20, 20);
|
|
||||||
|
|
||||||
glLoadIdentity(); /* texture */
|
|
||||||
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
glPopMatrix();
|
|
||||||
|
|
||||||
glutSwapBuffers();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void idle(void)
|
|
||||||
{
|
|
||||||
GLfloat t = 0.05 * glutGet(GLUT_ELAPSED_TIME);
|
|
||||||
Yrot = t;
|
|
||||||
glutPostRedisplay();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void set_mode(GLuint mode)
|
|
||||||
{
|
|
||||||
if (mode == 0) {
|
|
||||||
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_ARB);
|
|
||||||
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_ARB);
|
|
||||||
glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_ARB);
|
|
||||||
printf("GL_REFLECTION_MAP_ARB mode\n");
|
|
||||||
}
|
|
||||||
else if (mode == 1) {
|
|
||||||
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_ARB);
|
|
||||||
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_ARB);
|
|
||||||
glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_ARB);
|
|
||||||
printf("GL_NORMAL_MAP_ARB mode\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void key(unsigned char k, int x, int y)
|
|
||||||
{
|
|
||||||
static GLboolean anim = GL_TRUE;
|
|
||||||
static GLuint mode = 0;
|
|
||||||
(void) x;
|
|
||||||
(void) y;
|
|
||||||
switch (k) {
|
|
||||||
case ' ':
|
|
||||||
anim = !anim;
|
|
||||||
if (anim)
|
|
||||||
glutIdleFunc(idle);
|
|
||||||
else
|
|
||||||
glutIdleFunc(NULL);
|
|
||||||
break;
|
|
||||||
case 'm':
|
|
||||||
mode = !mode;
|
|
||||||
set_mode(mode);
|
|
||||||
break;
|
|
||||||
case 'z':
|
|
||||||
EyeDist -= 0.5;
|
|
||||||
if (EyeDist < 6.0)
|
|
||||||
EyeDist = 6.0;
|
|
||||||
break;
|
|
||||||
case 'Z':
|
|
||||||
EyeDist += 0.5;
|
|
||||||
if (EyeDist > 90.0)
|
|
||||||
EyeDist = 90;
|
|
||||||
break;
|
|
||||||
case 27:
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
glutPostRedisplay();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void specialkey(int key, int x, int y)
|
|
||||||
{
|
|
||||||
GLfloat step = 5;
|
|
||||||
(void) x;
|
|
||||||
(void) y;
|
|
||||||
switch (key) {
|
|
||||||
case GLUT_KEY_UP:
|
|
||||||
Xrot += step;
|
|
||||||
break;
|
|
||||||
case GLUT_KEY_DOWN:
|
|
||||||
Xrot -= step;
|
|
||||||
break;
|
|
||||||
case GLUT_KEY_LEFT:
|
|
||||||
Yrot -= step;
|
|
||||||
break;
|
|
||||||
case GLUT_KEY_RIGHT:
|
|
||||||
Yrot += step;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
glutPostRedisplay();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* new window size or exposure */
|
|
||||||
static void reshape(int width, int height)
|
|
||||||
{
|
|
||||||
GLfloat ar = (float) width / (float) height;
|
|
||||||
glViewport(0, 0, (GLint)width, (GLint)height);
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
glLoadIdentity();
|
|
||||||
glFrustum( -2.0*ar, 2.0*ar, -2.0, 2.0, 4.0, 100.0 );
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
glLoadIdentity();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void init_checkers( void )
|
|
||||||
{
|
|
||||||
#define CUBE_TEX_SIZE 64
|
|
||||||
GLubyte image[CUBE_TEX_SIZE][CUBE_TEX_SIZE][3];
|
|
||||||
static const GLubyte colors[6][3] = {
|
|
||||||
{ 255, 0, 0 },
|
|
||||||
{ 0, 255, 255 },
|
|
||||||
{ 0, 255, 0 },
|
|
||||||
{ 255, 0, 255 },
|
|
||||||
{ 0, 0, 255 },
|
|
||||||
{ 255, 255, 0 }
|
|
||||||
};
|
|
||||||
static const GLenum targets[6] = {
|
|
||||||
GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB,
|
|
||||||
GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB,
|
|
||||||
GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB,
|
|
||||||
GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB,
|
|
||||||
GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB,
|
|
||||||
GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB
|
|
||||||
};
|
|
||||||
|
|
||||||
GLint i, j, f;
|
|
||||||
|
|
||||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
|
||||||
|
|
||||||
/* make colored checkerboard cube faces */
|
|
||||||
for (f = 0; f < 6; f++) {
|
|
||||||
for (i = 0; i < CUBE_TEX_SIZE; i++) {
|
|
||||||
for (j = 0; j < CUBE_TEX_SIZE; j++) {
|
|
||||||
if ((i/4 + j/4) & 1) {
|
|
||||||
image[i][j][0] = colors[f][0];
|
|
||||||
image[i][j][1] = colors[f][1];
|
|
||||||
image[i][j][2] = colors[f][2];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
image[i][j][0] = 255;
|
|
||||||
image[i][j][1] = 255;
|
|
||||||
image[i][j][2] = 255;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
glTexImage2D(targets[f], 0, GL_RGB, CUBE_TEX_SIZE, CUBE_TEX_SIZE, 0,
|
|
||||||
GL_RGB, GL_UNSIGNED_BYTE, image);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void load(GLenum target, const char *filename,
|
|
||||||
GLboolean flipTB, GLboolean flipLR)
|
|
||||||
{
|
|
||||||
GLint w, h;
|
|
||||||
GLenum format;
|
|
||||||
GLubyte *img = LoadRGBImage( filename, &w, &h, &format );
|
|
||||||
if (!img) {
|
|
||||||
printf("Error: couldn't load texture image %s\n", filename);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
assert(format == GL_RGB);
|
|
||||||
|
|
||||||
/* <sigh> the way the texture cube mapping works, we have to flip
|
|
||||||
* images to make things look right.
|
|
||||||
*/
|
|
||||||
if (flipTB) {
|
|
||||||
const int stride = 3 * w;
|
|
||||||
GLubyte temp[3*1024];
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < h / 2; i++) {
|
|
||||||
memcpy(temp, img + i * stride, stride);
|
|
||||||
memcpy(img + i * stride, img + (h - i - 1) * stride, stride);
|
|
||||||
memcpy(img + (h - i - 1) * stride, temp, stride);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (flipLR) {
|
|
||||||
const int stride = 3 * w;
|
|
||||||
GLubyte temp[3];
|
|
||||||
GLubyte *row;
|
|
||||||
int i, j;
|
|
||||||
for (i = 0; i < h; i++) {
|
|
||||||
row = img + i * stride;
|
|
||||||
for (j = 0; j < w / 2; j++) {
|
|
||||||
int k = w - j - 1;
|
|
||||||
temp[0] = row[j*3+0];
|
|
||||||
temp[1] = row[j*3+1];
|
|
||||||
temp[2] = row[j*3+2];
|
|
||||||
row[j*3+0] = row[k*3+0];
|
|
||||||
row[j*3+1] = row[k*3+1];
|
|
||||||
row[j*3+2] = row[k*3+2];
|
|
||||||
row[k*3+0] = temp[0];
|
|
||||||
row[k*3+1] = temp[1];
|
|
||||||
row[k*3+2] = temp[2];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
gluBuild2DMipmaps(target, GL_RGB, w, h, format, GL_UNSIGNED_BYTE, img);
|
|
||||||
free(img);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void load_envmaps(void)
|
|
||||||
{
|
|
||||||
load(GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB, "right.rgb", GL_TRUE, GL_FALSE);
|
|
||||||
load(GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB, "left.rgb", GL_TRUE, GL_FALSE);
|
|
||||||
load(GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB, "top.rgb", GL_FALSE, GL_TRUE);
|
|
||||||
load(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB, "bottom.rgb", GL_FALSE, GL_TRUE);
|
|
||||||
load(GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB, "front.rgb", GL_TRUE, GL_FALSE);
|
|
||||||
load(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB, "back.rgb", GL_TRUE, GL_FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void init( GLboolean useImageFiles )
|
|
||||||
{
|
|
||||||
GLenum filter;
|
|
||||||
|
|
||||||
/* check for extension */
|
|
||||||
{
|
|
||||||
char *exten = (char *) glGetString(GL_EXTENSIONS);
|
|
||||||
if (!strstr(exten, "GL_ARB_texture_cube_map")) {
|
|
||||||
printf("Sorry, this demo requires GL_ARB_texture_cube_map\n");
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
printf("GL_RENDERER: %s\n", (char *) glGetString(GL_RENDERER));
|
|
||||||
|
|
||||||
if (useImageFiles) {
|
|
||||||
load_envmaps();
|
|
||||||
filter = GL_LINEAR;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
init_checkers();
|
|
||||||
filter = GL_NEAREST;
|
|
||||||
}
|
|
||||||
|
|
||||||
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MIN_FILTER, filter);
|
|
||||||
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MAG_FILTER, filter);
|
|
||||||
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
|
||||||
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
|
||||||
|
|
||||||
glEnable(GL_TEXTURE_CUBE_MAP_ARB);
|
|
||||||
glEnable(GL_DEPTH_TEST);
|
|
||||||
|
|
||||||
glClearColor(.3, .3, .3, 0);
|
|
||||||
glColor3f( 1.0, 1.0, 1.0 );
|
|
||||||
|
|
||||||
set_mode(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void usage(void)
|
|
||||||
{
|
|
||||||
printf("keys:\n");
|
|
||||||
printf(" SPACE - toggle animation\n");
|
|
||||||
printf(" CURSOR KEYS - rotation\n");
|
|
||||||
printf(" m - toggle texgen reflection mode\n");
|
|
||||||
printf(" z/Z - change viewing distance\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int main( int argc, char *argv[] )
|
|
||||||
{
|
|
||||||
glutInitWindowPosition(0, 0);
|
|
||||||
glutInitWindowSize(600, 500);
|
|
||||||
glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE );
|
|
||||||
glutCreateWindow("Texture Cube Maping");
|
|
||||||
|
|
||||||
if (argc > 1 && strcmp(argv[1] , "-i") == 0)
|
|
||||||
init( 1 );
|
|
||||||
else
|
|
||||||
init( 0 );
|
|
||||||
glutReshapeFunc( reshape );
|
|
||||||
glutKeyboardFunc( key );
|
|
||||||
glutSpecialFunc( specialkey );
|
|
||||||
glutIdleFunc( idle );
|
|
||||||
glutDisplayFunc( draw );
|
|
||||||
usage();
|
|
||||||
glutMainLoop();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
##### MACROS #####
|
##### MACROS #####
|
||||||
|
|
||||||
INCDIR = ([-.include],[-.util])
|
INCDIR = [-.include]
|
||||||
CFLAGS = /include=$(INCDIR)/prefix=all/name=(as_is,short)
|
CFLAGS = /include=$(INCDIR)/prefix=all
|
||||||
|
|
||||||
.ifdef SHARE
|
.ifdef SHARE
|
||||||
GL_LIBS = $(XLIBS)
|
GL_LIBS = $(XLIBS)
|
||||||
@@ -28,7 +28,7 @@ PROGS = bounce.exe;,clearspd.exe;,drawpix.exe;,gamma.exe;,gears.exe;,\
|
|||||||
|
|
||||||
##### RULES #####
|
##### RULES #####
|
||||||
.obj.exe :
|
.obj.exe :
|
||||||
cxxlink $(MMS$TARGET_NAME),$(GL_LIBS)
|
link $(MMS$TARGET_NAME),$(GL_LIBS)
|
||||||
|
|
||||||
##### TARGETS #####
|
##### TARGETS #####
|
||||||
default :
|
default :
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: drawpix.c,v 1.8 2002/07/12 15:54:02 brianp Exp $ */
|
/* $Id: drawpix.c,v 1.3 1999/10/28 18:23:29 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* glDrawPixels demo/test/benchmark
|
* glDrawPixels demo/test/benchmark
|
||||||
@@ -6,12 +6,38 @@
|
|||||||
* Brian Paul September 25, 1997 This file is in the public domain.
|
* Brian Paul September 25, 1997 This file is in the public domain.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Log: drawpix.c,v $
|
||||||
|
* Revision 1.3 1999/10/28 18:23:29 brianp
|
||||||
|
* minor changes to Usage() function
|
||||||
|
*
|
||||||
|
* Revision 1.2 1999/10/21 22:13:58 brianp
|
||||||
|
* added f key to toggle front/back drawing
|
||||||
|
*
|
||||||
|
* Revision 1.1.1.1 1999/08/19 00:55:40 jtg
|
||||||
|
* Imported sources
|
||||||
|
*
|
||||||
|
* Revision 3.3 1999/03/28 18:18:33 brianp
|
||||||
|
* minor clean-up
|
||||||
|
*
|
||||||
|
* Revision 3.2 1998/11/05 04:34:04 brianp
|
||||||
|
* moved image files to ../images/ directory
|
||||||
|
*
|
||||||
|
* Revision 3.1 1998/02/22 16:43:17 brianp
|
||||||
|
* added a few casts to silence compiler warnings
|
||||||
|
*
|
||||||
|
* Revision 3.0 1998/02/14 18:42:29 brianp
|
||||||
|
* initial rev
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
|
|
||||||
#include "readtex.c"
|
#include "../util/readtex.c" /* a hack, I know */
|
||||||
|
|
||||||
#define IMAGE_FILE "../images/girl.rgb"
|
#define IMAGE_FILE "../images/girl.rgb"
|
||||||
|
|
||||||
@@ -23,11 +49,9 @@ static int Xpos, Ypos;
|
|||||||
static int SkipPixels, SkipRows;
|
static int SkipPixels, SkipRows;
|
||||||
static int DrawWidth, DrawHeight;
|
static int DrawWidth, DrawHeight;
|
||||||
static int Scissor = 0;
|
static int Scissor = 0;
|
||||||
static int Fog = 0;
|
|
||||||
static GLfloat Zpos = -1.0;
|
|
||||||
static float Xzoom, Yzoom;
|
static float Xzoom, Yzoom;
|
||||||
static GLboolean DrawFront = GL_FALSE;
|
static GLboolean DrawFront = GL_FALSE;
|
||||||
static GLboolean Dither = GL_TRUE;
|
|
||||||
|
|
||||||
|
|
||||||
static void Reset( void )
|
static void Reset( void )
|
||||||
@@ -37,8 +61,6 @@ static void Reset( void )
|
|||||||
DrawHeight = ImgHeight;
|
DrawHeight = ImgHeight;
|
||||||
SkipPixels = SkipRows = 0;
|
SkipPixels = SkipRows = 0;
|
||||||
Scissor = 0;
|
Scissor = 0;
|
||||||
Fog = 0;
|
|
||||||
Zpos = -1.0;
|
|
||||||
Xzoom = Yzoom = 1.0;
|
Xzoom = Yzoom = 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,7 +73,7 @@ static void Display( void )
|
|||||||
glRasterPos2i(Xpos, Ypos);
|
glRasterPos2i(Xpos, Ypos);
|
||||||
#else
|
#else
|
||||||
/* This allows negative raster positions: */
|
/* This allows negative raster positions: */
|
||||||
glRasterPos3f(0, 0, Zpos);
|
glRasterPos2i(0, 0);
|
||||||
glBitmap(0, 0, 0, 0, Xpos, Ypos, NULL);
|
glBitmap(0, 0, 0, 0, Xpos, Ypos, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -63,13 +85,9 @@ static void Display( void )
|
|||||||
if (Scissor)
|
if (Scissor)
|
||||||
glEnable(GL_SCISSOR_TEST);
|
glEnable(GL_SCISSOR_TEST);
|
||||||
|
|
||||||
if (Fog)
|
|
||||||
glEnable(GL_FOG);
|
|
||||||
|
|
||||||
glDrawPixels(DrawWidth, DrawHeight, ImgFormat, GL_UNSIGNED_BYTE, Image);
|
glDrawPixels(DrawWidth, DrawHeight, ImgFormat, GL_UNSIGNED_BYTE, Image);
|
||||||
|
|
||||||
glDisable(GL_SCISSOR_TEST);
|
glDisable(GL_SCISSOR_TEST);
|
||||||
glDisable(GL_FOG);
|
|
||||||
|
|
||||||
if (!DrawFront)
|
if (!DrawFront)
|
||||||
glutSwapBuffers();
|
glutSwapBuffers();
|
||||||
@@ -89,8 +107,6 @@ static void Benchmark( void )
|
|||||||
glPixelZoom( Xzoom, Yzoom );
|
glPixelZoom( Xzoom, Yzoom );
|
||||||
if (Scissor)
|
if (Scissor)
|
||||||
glEnable(GL_SCISSOR_TEST);
|
glEnable(GL_SCISSOR_TEST);
|
||||||
if (Fog)
|
|
||||||
glEnable(GL_FOG);
|
|
||||||
|
|
||||||
if (DrawFront)
|
if (DrawFront)
|
||||||
glDrawBuffer(GL_FRONT);
|
glDrawBuffer(GL_FRONT);
|
||||||
@@ -108,7 +124,6 @@ static void Benchmark( void )
|
|||||||
|
|
||||||
/* GL clean-up */
|
/* GL clean-up */
|
||||||
glDisable(GL_SCISSOR_TEST);
|
glDisable(GL_SCISSOR_TEST);
|
||||||
glDisable(GL_FOG);
|
|
||||||
|
|
||||||
/* Results */
|
/* Results */
|
||||||
seconds = (double) (endTime - startTime) / 1000.0;
|
seconds = (double) (endTime - startTime) / 1000.0;
|
||||||
@@ -123,7 +138,7 @@ static void Reshape( int width, int height )
|
|||||||
glViewport( 0, 0, width, height );
|
glViewport( 0, 0, width, height );
|
||||||
glMatrixMode( GL_PROJECTION );
|
glMatrixMode( GL_PROJECTION );
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
glOrtho( 0.0, width, 0.0, height, 0.0, 2.0 );
|
glOrtho( 0.0, width, 0.0, height, -1.0, 1.0 );
|
||||||
glMatrixMode( GL_MODELVIEW );
|
glMatrixMode( GL_MODELVIEW );
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
|
|
||||||
@@ -139,13 +154,6 @@ static void Key( unsigned char key, int x, int y )
|
|||||||
case ' ':
|
case ' ':
|
||||||
Reset();
|
Reset();
|
||||||
break;
|
break;
|
||||||
case 'd':
|
|
||||||
Dither = !Dither;
|
|
||||||
if (Dither)
|
|
||||||
glEnable(GL_DITHER);
|
|
||||||
else
|
|
||||||
glDisable(GL_DITHER);
|
|
||||||
break;
|
|
||||||
case 'w':
|
case 'w':
|
||||||
if (DrawWidth > 0)
|
if (DrawWidth > 0)
|
||||||
DrawWidth--;
|
DrawWidth--;
|
||||||
@@ -189,21 +197,9 @@ static void Key( unsigned char key, int x, int y )
|
|||||||
case 'Y':
|
case 'Y':
|
||||||
Yzoom += 0.1;
|
Yzoom += 0.1;
|
||||||
break;
|
break;
|
||||||
case 'z':
|
|
||||||
Zpos -= 0.1;
|
|
||||||
printf("RasterPos Z = %g\n", Zpos);
|
|
||||||
break;
|
|
||||||
case 'Z':
|
|
||||||
Zpos += 0.1;
|
|
||||||
printf("RasterPos Z = %g\n", Zpos);
|
|
||||||
break;
|
|
||||||
case 'b':
|
case 'b':
|
||||||
Benchmark();
|
Benchmark();
|
||||||
break;
|
break;
|
||||||
case 'F':
|
|
||||||
Fog = !Fog;
|
|
||||||
printf("Fog %d\n", Fog);
|
|
||||||
break;
|
|
||||||
case 'f':
|
case 'f':
|
||||||
DrawFront = !DrawFront;
|
DrawFront = !DrawFront;
|
||||||
if (DrawFront)
|
if (DrawFront)
|
||||||
@@ -244,8 +240,6 @@ static void SpecialKey( int key, int x, int y )
|
|||||||
|
|
||||||
static void Init( GLboolean ciMode )
|
static void Init( GLboolean ciMode )
|
||||||
{
|
{
|
||||||
static const GLfloat fogColor[4] = {0, 1, 0, 0};
|
|
||||||
|
|
||||||
printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
|
printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
|
||||||
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
|
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
|
||||||
|
|
||||||
@@ -257,7 +251,7 @@ static void Init( GLboolean ciMode )
|
|||||||
|
|
||||||
if (ciMode) {
|
if (ciMode) {
|
||||||
/* Convert RGB image to grayscale */
|
/* Convert RGB image to grayscale */
|
||||||
GLubyte *indexImage = (GLubyte *) malloc( ImgWidth * ImgHeight );
|
GLubyte *indexImage = malloc( ImgWidth * ImgHeight );
|
||||||
GLint i;
|
GLint i;
|
||||||
for (i=0; i<ImgWidth*ImgHeight; i++) {
|
for (i=0; i<ImgWidth*ImgHeight; i++) {
|
||||||
int gray = Image[i*3] + Image[i*3+1] + Image[i*3+2];
|
int gray = Image[i*3] + Image[i*3+1] + Image[i*3+2];
|
||||||
@@ -278,11 +272,6 @@ static void Init( GLboolean ciMode )
|
|||||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, ImgWidth);
|
glPixelStorei(GL_UNPACK_ROW_LENGTH, ImgWidth);
|
||||||
|
|
||||||
glFogi(GL_FOG_MODE, GL_LINEAR);
|
|
||||||
glFogf(GL_FOG_START, 0);
|
|
||||||
glFogf(GL_FOG_END, 2);
|
|
||||||
glFogfv(GL_FOG_COLOR, fogColor);
|
|
||||||
|
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -306,10 +295,6 @@ static void Usage(void)
|
|||||||
printf(" r Decrease GL_UNPACK_SKIP_ROWS*\n");
|
printf(" r Decrease GL_UNPACK_SKIP_ROWS*\n");
|
||||||
printf(" R Increase GL_UNPACK_SKIP_ROWS*\n");
|
printf(" R Increase GL_UNPACK_SKIP_ROWS*\n");
|
||||||
printf(" s Toggle GL_SCISSOR_TEST\n");
|
printf(" s Toggle GL_SCISSOR_TEST\n");
|
||||||
printf(" F Toggle GL_FOG\n");
|
|
||||||
printf(" z Decrease RasterPos Z\n");
|
|
||||||
printf(" Z Increase RasterPos Z\n");
|
|
||||||
|
|
||||||
printf(" f Toggle front/back buffer drawing\n");
|
printf(" f Toggle front/back buffer drawing\n");
|
||||||
printf(" b Benchmark test\n");
|
printf(" b Benchmark test\n");
|
||||||
printf(" ESC Exit\n");
|
printf(" ESC Exit\n");
|
||||||
@@ -333,7 +318,7 @@ int main( int argc, char *argv[] )
|
|||||||
if (ciMode)
|
if (ciMode)
|
||||||
glutInitDisplayMode( GLUT_INDEX | GLUT_DOUBLE );
|
glutInitDisplayMode( GLUT_INDEX | GLUT_DOUBLE );
|
||||||
else
|
else
|
||||||
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE);
|
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
|
||||||
|
|
||||||
glutCreateWindow(argv[0]);
|
glutCreateWindow(argv[0]);
|
||||||
|
|
||||||
|
|||||||
@@ -1,770 +0,0 @@
|
|||||||
/*
|
|
||||||
* This program is under the GNU GPL.
|
|
||||||
* Use at your own risk.
|
|
||||||
*
|
|
||||||
* written by David Bucciarelli (tech.hmw@plus.it)
|
|
||||||
* Humanware s.r.l.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
#include <windows.h>
|
|
||||||
#include <mmsystem.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <GL/glut.h>
|
|
||||||
#include "readtex.c"
|
|
||||||
|
|
||||||
#ifdef XMESA
|
|
||||||
#include "GL/xmesa.h"
|
|
||||||
static int fullscreen = 1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef M_PI
|
|
||||||
#define M_PI 3.1415926535
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define vinit(a,i,j,k) {\
|
|
||||||
(a)[0]=i;\
|
|
||||||
(a)[1]=j;\
|
|
||||||
(a)[2]=k;\
|
|
||||||
}
|
|
||||||
|
|
||||||
#define vinit4(a,i,j,k,w) {\
|
|
||||||
(a)[0]=i;\
|
|
||||||
(a)[1]=j;\
|
|
||||||
(a)[2]=k;\
|
|
||||||
(a)[3]=w;\
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#define vadds(a,dt,b) {\
|
|
||||||
(a)[0]+=(dt)*(b)[0];\
|
|
||||||
(a)[1]+=(dt)*(b)[1];\
|
|
||||||
(a)[2]+=(dt)*(b)[2];\
|
|
||||||
}
|
|
||||||
|
|
||||||
#define vequ(a,b) {\
|
|
||||||
(a)[0]=(b)[0];\
|
|
||||||
(a)[1]=(b)[1];\
|
|
||||||
(a)[2]=(b)[2];\
|
|
||||||
}
|
|
||||||
|
|
||||||
#define vinter(a,dt,b,c) {\
|
|
||||||
(a)[0]=(dt)*(b)[0]+(1.0-dt)*(c)[0];\
|
|
||||||
(a)[1]=(dt)*(b)[1]+(1.0-dt)*(c)[1];\
|
|
||||||
(a)[2]=(dt)*(b)[2]+(1.0-dt)*(c)[2];\
|
|
||||||
}
|
|
||||||
|
|
||||||
#define clamp(a) ((a) < 0.0 ? 0.0 : ((a) < 1.0 ? (a) : 1.0))
|
|
||||||
|
|
||||||
#define vclamp(v) {\
|
|
||||||
(v)[0]=clamp((v)[0]);\
|
|
||||||
(v)[1]=clamp((v)[1]);\
|
|
||||||
(v)[2]=clamp((v)[2]);\
|
|
||||||
}
|
|
||||||
|
|
||||||
static int WIDTH = 640;
|
|
||||||
static int HEIGHT = 480;
|
|
||||||
|
|
||||||
static GLint T0 = 0;
|
|
||||||
static GLint Frames = 0;
|
|
||||||
static GLint NiceFog = 1;
|
|
||||||
|
|
||||||
#define DIMP 20.0
|
|
||||||
#define DIMTP 16.0
|
|
||||||
|
|
||||||
#define RIDCOL 0.4
|
|
||||||
|
|
||||||
#define NUMTREE 50
|
|
||||||
#define TREEINR 2.5
|
|
||||||
#define TREEOUTR 8.0
|
|
||||||
|
|
||||||
#define AGRAV -9.8
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
int age;
|
|
||||||
float p[3][3];
|
|
||||||
float v[3];
|
|
||||||
float c[3][4];
|
|
||||||
}
|
|
||||||
part;
|
|
||||||
|
|
||||||
static float treepos[NUMTREE][3];
|
|
||||||
|
|
||||||
static float black[3] = { 0.0, 0.0, 0.0 };
|
|
||||||
static float blu[3] = { 0.0, 0.2, 1.0 };
|
|
||||||
static float blu2[3] = { 0.0, 1.0, 1.0 };
|
|
||||||
|
|
||||||
static float fogcolor[4] = { 1.0, 1.0, 1.0, 1.0 };
|
|
||||||
|
|
||||||
static float q[4][3] = {
|
|
||||||
{-DIMP, 0.0, -DIMP},
|
|
||||||
{DIMP, 0.0, -DIMP},
|
|
||||||
{DIMP, 0.0, DIMP},
|
|
||||||
{-DIMP, 0.0, DIMP}
|
|
||||||
};
|
|
||||||
|
|
||||||
static float qt[4][2] = {
|
|
||||||
{-DIMTP, -DIMTP},
|
|
||||||
{DIMTP, -DIMTP},
|
|
||||||
{DIMTP, DIMTP},
|
|
||||||
{-DIMTP, DIMTP}
|
|
||||||
};
|
|
||||||
|
|
||||||
static int win = 0;
|
|
||||||
|
|
||||||
static int np;
|
|
||||||
static float eject_r, dt, maxage, eject_vy, eject_vl;
|
|
||||||
static short shadows;
|
|
||||||
static float ridtri;
|
|
||||||
static int fog = 1;
|
|
||||||
static int help = 1;
|
|
||||||
static int joyavailable = 0;
|
|
||||||
static int joyactive = 0;
|
|
||||||
|
|
||||||
static part *p;
|
|
||||||
|
|
||||||
static GLuint groundid;
|
|
||||||
static GLuint treeid;
|
|
||||||
|
|
||||||
static float obs[3] = { 2.0, 1.0, 0.0 };
|
|
||||||
static float dir[3];
|
|
||||||
static float v = 0.0;
|
|
||||||
static float alpha = -90.0;
|
|
||||||
static float beta = 90.0;
|
|
||||||
|
|
||||||
static float
|
|
||||||
vrnd(void)
|
|
||||||
{
|
|
||||||
return (((float) rand()) / RAND_MAX);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
setnewpart(part * p)
|
|
||||||
{
|
|
||||||
float a, v[3], *c;
|
|
||||||
|
|
||||||
p->age = 0;
|
|
||||||
|
|
||||||
a = vrnd() * 3.14159265359 * 2.0;
|
|
||||||
|
|
||||||
vinit(v, sin(a) * eject_r * vrnd(), 0.15, cos(a) * eject_r * vrnd());
|
|
||||||
vinit(p->p[0], v[0] + vrnd() * ridtri, v[1] + vrnd() * ridtri,
|
|
||||||
v[2] + vrnd() * ridtri);
|
|
||||||
vinit(p->p[1], v[0] + vrnd() * ridtri, v[1] + vrnd() * ridtri,
|
|
||||||
v[2] + vrnd() * ridtri);
|
|
||||||
vinit(p->p[2], v[0] + vrnd() * ridtri, v[1] + vrnd() * ridtri,
|
|
||||||
v[2] + vrnd() * ridtri);
|
|
||||||
|
|
||||||
vinit(p->v, v[0] * eject_vl / (eject_r / 2),
|
|
||||||
vrnd() * eject_vy + eject_vy / 2, v[2] * eject_vl / (eject_r / 2));
|
|
||||||
|
|
||||||
c = blu;
|
|
||||||
|
|
||||||
vinit4(p->c[0], c[0] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
|
|
||||||
c[1] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
|
|
||||||
c[2] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), 1.0);
|
|
||||||
vinit4(p->c[1], c[0] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
|
|
||||||
c[1] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
|
|
||||||
c[2] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), 1.0);
|
|
||||||
vinit4(p->c[2], c[0] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
|
|
||||||
c[1] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
|
|
||||||
c[2] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), 1.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
setpart(part * p)
|
|
||||||
{
|
|
||||||
float fact;
|
|
||||||
|
|
||||||
if (p->p[0][1] < 0.1) {
|
|
||||||
setnewpart(p);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
p->v[1] += AGRAV * dt;
|
|
||||||
|
|
||||||
vadds(p->p[0], dt, p->v);
|
|
||||||
vadds(p->p[1], dt, p->v);
|
|
||||||
vadds(p->p[2], dt, p->v);
|
|
||||||
|
|
||||||
p->age++;
|
|
||||||
|
|
||||||
if ((p->age) > maxage) {
|
|
||||||
vequ(p->c[0], blu2);
|
|
||||||
vequ(p->c[1], blu2);
|
|
||||||
vequ(p->c[2], blu2);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
fact = 1.0 / maxage;
|
|
||||||
vadds(p->c[0], fact, blu2);
|
|
||||||
vclamp(p->c[0]);
|
|
||||||
p->c[0][3] = fact * (maxage - p->age);
|
|
||||||
|
|
||||||
vadds(p->c[1], fact, blu2);
|
|
||||||
vclamp(p->c[1]);
|
|
||||||
p->c[1][3] = fact * (maxage - p->age);
|
|
||||||
|
|
||||||
vadds(p->c[2], fact, blu2);
|
|
||||||
vclamp(p->c[2]);
|
|
||||||
p->c[2][3] = fact * (maxage - p->age);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
drawtree(float x, float y, float z)
|
|
||||||
{
|
|
||||||
glBegin(GL_QUADS);
|
|
||||||
glTexCoord2f(0.0, 0.0);
|
|
||||||
glVertex3f(x - 1.5, y + 0.0, z);
|
|
||||||
|
|
||||||
glTexCoord2f(1.0, 0.0);
|
|
||||||
glVertex3f(x + 1.5, y + 0.0, z);
|
|
||||||
|
|
||||||
glTexCoord2f(1.0, 1.0);
|
|
||||||
glVertex3f(x + 1.5, y + 3.0, z);
|
|
||||||
|
|
||||||
glTexCoord2f(0.0, 1.0);
|
|
||||||
glVertex3f(x - 1.5, y + 3.0, z);
|
|
||||||
|
|
||||||
|
|
||||||
glTexCoord2f(0.0, 0.0);
|
|
||||||
glVertex3f(x, y + 0.0, z - 1.5);
|
|
||||||
|
|
||||||
glTexCoord2f(1.0, 0.0);
|
|
||||||
glVertex3f(x, y + 0.0, z + 1.5);
|
|
||||||
|
|
||||||
glTexCoord2f(1.0, 1.0);
|
|
||||||
glVertex3f(x, y + 3.0, z + 1.5);
|
|
||||||
|
|
||||||
glTexCoord2f(0.0, 1.0);
|
|
||||||
glVertex3f(x, y + 3.0, z - 1.5);
|
|
||||||
|
|
||||||
glEnd();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
calcposobs(void)
|
|
||||||
{
|
|
||||||
dir[0] = sin(alpha * M_PI / 180.0);
|
|
||||||
dir[2] = cos(alpha * M_PI / 180.0) * sin(beta * M_PI / 180.0);
|
|
||||||
dir[1] = cos(beta * M_PI / 180.0);
|
|
||||||
|
|
||||||
if (dir[0] < 1.0e-5 && dir[0] > -1.0e-5)
|
|
||||||
dir[0] = 0;
|
|
||||||
if (dir[1] < 1.0e-5 && dir[1] > -1.0e-5)
|
|
||||||
dir[1] = 0;
|
|
||||||
if (dir[2] < 1.0e-5 && dir[2] > -1.0e-5)
|
|
||||||
dir[2] = 0;
|
|
||||||
|
|
||||||
obs[0] += v * dir[0];
|
|
||||||
obs[1] += v * dir[1];
|
|
||||||
obs[2] += v * dir[2];
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
printstring(void *font, char *string)
|
|
||||||
{
|
|
||||||
int len, i;
|
|
||||||
|
|
||||||
len = (int) strlen(string);
|
|
||||||
for (i = 0; i < len; i++)
|
|
||||||
glutBitmapCharacter(font, string[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
reshape(int width, int height)
|
|
||||||
{
|
|
||||||
WIDTH = width;
|
|
||||||
HEIGHT = height;
|
|
||||||
glViewport(0, 0, (GLint) width, (GLint) height);
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
glLoadIdentity();
|
|
||||||
gluPerspective(70.0, width / (float) height, 0.1, 30.0);
|
|
||||||
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
printhelp(void)
|
|
||||||
{
|
|
||||||
glColor4f(0.0, 0.0, 0.0, 0.5);
|
|
||||||
glRecti(40, 40, 600, 440);
|
|
||||||
|
|
||||||
glColor3f(1.0, 0.0, 0.0);
|
|
||||||
glRasterPos2i(300, 420);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Help");
|
|
||||||
|
|
||||||
glRasterPos2i(60, 390);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "h - Togle Help");
|
|
||||||
|
|
||||||
glRasterPos2i(60, 360);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "t - Increase particle size");
|
|
||||||
glRasterPos2i(60, 330);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "T - Decrease particle size");
|
|
||||||
|
|
||||||
glRasterPos2i(60, 300);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "r - Increase emission radius");
|
|
||||||
glRasterPos2i(60, 270);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "R - Decrease emission radius");
|
|
||||||
|
|
||||||
glRasterPos2i(60, 240);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "f - Togle Fog");
|
|
||||||
glRasterPos2i(60, 210);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "s - Togle shadows");
|
|
||||||
glRasterPos2i(60, 180);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Arrow Keys - Rotate");
|
|
||||||
glRasterPos2i(60, 150);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "a - Increase velocity");
|
|
||||||
glRasterPos2i(60, 120);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "z - Decrease velocity");
|
|
||||||
|
|
||||||
glRasterPos2i(60, 90);
|
|
||||||
if (joyavailable)
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24,
|
|
||||||
"j - Togle jostick control (Joystick control available)");
|
|
||||||
else
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24,
|
|
||||||
"(No Joystick control available)");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
dojoy(void)
|
|
||||||
{
|
|
||||||
#ifdef WIN32
|
|
||||||
static UINT max[2] = { 0, 0 };
|
|
||||||
static UINT min[2] = { 0xffffffff, 0xffffffff }, center[2];
|
|
||||||
MMRESULT res;
|
|
||||||
JOYINFO joy;
|
|
||||||
|
|
||||||
res = joyGetPos(JOYSTICKID1, &joy);
|
|
||||||
|
|
||||||
if (res == JOYERR_NOERROR) {
|
|
||||||
joyavailable = 1;
|
|
||||||
|
|
||||||
if (max[0] < joy.wXpos)
|
|
||||||
max[0] = joy.wXpos;
|
|
||||||
if (min[0] > joy.wXpos)
|
|
||||||
min[0] = joy.wXpos;
|
|
||||||
center[0] = (max[0] + min[0]) / 2;
|
|
||||||
|
|
||||||
if (max[1] < joy.wYpos)
|
|
||||||
max[1] = joy.wYpos;
|
|
||||||
if (min[1] > joy.wYpos)
|
|
||||||
min[1] = joy.wYpos;
|
|
||||||
center[1] = (max[1] + min[1]) / 2;
|
|
||||||
|
|
||||||
if (joyactive) {
|
|
||||||
if (fabs(center[0] - (float) joy.wXpos) > 0.1 * (max[0] - min[0]))
|
|
||||||
alpha +=
|
|
||||||
2.5 * (center[0] - (float) joy.wXpos) / (max[0] - min[0]);
|
|
||||||
if (fabs(center[1] - (float) joy.wYpos) > 0.1 * (max[1] - min[1]))
|
|
||||||
beta += 2.5 * (center[1] - (float) joy.wYpos) / (max[1] - min[1]);
|
|
||||||
|
|
||||||
if (joy.wButtons & JOY_BUTTON1)
|
|
||||||
v += 0.01;
|
|
||||||
if (joy.wButtons & JOY_BUTTON2)
|
|
||||||
v -= 0.01;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
joyavailable = 0;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
drawfire(void)
|
|
||||||
{
|
|
||||||
static char frbuf[80] = "";
|
|
||||||
int j;
|
|
||||||
|
|
||||||
dojoy();
|
|
||||||
|
|
||||||
if (NiceFog)
|
|
||||||
glHint(GL_FOG_HINT, GL_NICEST);
|
|
||||||
else
|
|
||||||
glHint(GL_FOG_HINT, GL_DONT_CARE);
|
|
||||||
|
|
||||||
glEnable(GL_DEPTH_TEST);
|
|
||||||
|
|
||||||
if (fog)
|
|
||||||
glEnable(GL_FOG);
|
|
||||||
else
|
|
||||||
glDisable(GL_FOG);
|
|
||||||
|
|
||||||
glDepthMask(GL_TRUE);
|
|
||||||
glClearColor(1.0, 1.0, 1.0, 1.0);
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
|
||||||
|
|
||||||
glPushMatrix();
|
|
||||||
calcposobs();
|
|
||||||
gluLookAt(obs[0], obs[1], obs[2],
|
|
||||||
obs[0] + dir[0], obs[1] + dir[1], obs[2] + dir[2],
|
|
||||||
0.0, 1.0, 0.0);
|
|
||||||
|
|
||||||
glColor4f(1.0, 1.0, 1.0, 1.0);
|
|
||||||
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
|
||||||
|
|
||||||
glBindTexture(GL_TEXTURE_2D, groundid);
|
|
||||||
#if 1
|
|
||||||
glBegin(GL_QUADS);
|
|
||||||
glTexCoord2fv(qt[0]);
|
|
||||||
glVertex3fv(q[0]);
|
|
||||||
glTexCoord2fv(qt[1]);
|
|
||||||
glVertex3fv(q[1]);
|
|
||||||
glTexCoord2fv(qt[2]);
|
|
||||||
glVertex3fv(q[2]);
|
|
||||||
glTexCoord2fv(qt[3]);
|
|
||||||
glVertex3fv(q[3]);
|
|
||||||
glEnd();
|
|
||||||
#else
|
|
||||||
/* Subdivide the ground into a bunch of quads. This improves fog
|
|
||||||
* if GL_FOG_HINT != GL_NICEST
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
float x, y;
|
|
||||||
float dx = 1.0, dy = 1.0;
|
|
||||||
glBegin(GL_QUADS);
|
|
||||||
for (y = -DIMP; y < DIMP; y += 1.0) {
|
|
||||||
for (x = -DIMP; x < DIMP; x += 1.0) {
|
|
||||||
glTexCoord2f(0, 0); glVertex3f(x, 0, y);
|
|
||||||
glTexCoord2f(1, 0); glVertex3f(x+dx, 0, y);
|
|
||||||
glTexCoord2f(1, 1); glVertex3f(x+dx, 0, y+dy);
|
|
||||||
glTexCoord2f(0, 1); glVertex3f(x, 0, y+dy);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
glEnable(GL_ALPHA_TEST);
|
|
||||||
glAlphaFunc(GL_GEQUAL, 0.9);
|
|
||||||
|
|
||||||
glBindTexture(GL_TEXTURE_2D, treeid);
|
|
||||||
for (j = 0; j < NUMTREE; j++)
|
|
||||||
drawtree(treepos[j][0], treepos[j][1], treepos[j][2]);
|
|
||||||
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
|
||||||
glDepthMask(GL_FALSE);
|
|
||||||
glDisable(GL_ALPHA_TEST);
|
|
||||||
|
|
||||||
if (shadows) {
|
|
||||||
glBegin(GL_TRIANGLES);
|
|
||||||
for (j = 0; j < np; j++) {
|
|
||||||
glColor4f(black[0], black[1], black[2], p[j].c[0][3]);
|
|
||||||
glVertex3f(p[j].p[0][0], 0.1, p[j].p[0][2]);
|
|
||||||
|
|
||||||
glColor4f(black[0], black[1], black[2], p[j].c[1][3]);
|
|
||||||
glVertex3f(p[j].p[1][0], 0.1, p[j].p[1][2]);
|
|
||||||
|
|
||||||
glColor4f(black[0], black[1], black[2], p[j].c[2][3]);
|
|
||||||
glVertex3f(p[j].p[2][0], 0.1, p[j].p[2][2]);
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
}
|
|
||||||
|
|
||||||
glBegin(GL_TRIANGLES);
|
|
||||||
for (j = 0; j < np; j++) {
|
|
||||||
glColor4fv(p[j].c[0]);
|
|
||||||
glVertex3fv(p[j].p[0]);
|
|
||||||
|
|
||||||
glColor4fv(p[j].c[1]);
|
|
||||||
glVertex3fv(p[j].p[1]);
|
|
||||||
|
|
||||||
glColor4fv(p[j].c[2]);
|
|
||||||
glVertex3fv(p[j].p[2]);
|
|
||||||
|
|
||||||
setpart(&p[j]);
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
|
||||||
glDisable(GL_ALPHA_TEST);
|
|
||||||
glDisable(GL_DEPTH_TEST);
|
|
||||||
glDisable(GL_FOG);
|
|
||||||
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
glLoadIdentity();
|
|
||||||
glOrtho(-0.5, 639.5, -0.5, 479.5, -1.0, 1.0);
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
glLoadIdentity();
|
|
||||||
|
|
||||||
glColor3f(1.0, 0.0, 0.0);
|
|
||||||
glRasterPos2i(10, 10);
|
|
||||||
printstring(GLUT_BITMAP_HELVETICA_18, frbuf);
|
|
||||||
glRasterPos2i(370, 470);
|
|
||||||
printstring(GLUT_BITMAP_HELVETICA_10,
|
|
||||||
"Fire V1.5 Written by David Bucciarelli (tech.hmw@plus.it)");
|
|
||||||
|
|
||||||
if (help)
|
|
||||||
printhelp();
|
|
||||||
|
|
||||||
reshape(WIDTH, HEIGHT);
|
|
||||||
glPopMatrix();
|
|
||||||
|
|
||||||
glutSwapBuffers();
|
|
||||||
|
|
||||||
Frames++;
|
|
||||||
{
|
|
||||||
GLint t = glutGet(GLUT_ELAPSED_TIME);
|
|
||||||
if (t - T0 >= 2000) {
|
|
||||||
GLfloat seconds = (t - T0) / 1000.0;
|
|
||||||
GLfloat fps = Frames / seconds;
|
|
||||||
sprintf(frbuf, "Frame rate: %f", fps);
|
|
||||||
T0 = t;
|
|
||||||
Frames = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
idle(void)
|
|
||||||
{
|
|
||||||
glutPostRedisplay();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
special(int key, int x, int y)
|
|
||||||
{
|
|
||||||
switch (key) {
|
|
||||||
case GLUT_KEY_LEFT:
|
|
||||||
alpha += 2.0;
|
|
||||||
break;
|
|
||||||
case GLUT_KEY_RIGHT:
|
|
||||||
alpha -= 2.0;
|
|
||||||
break;
|
|
||||||
case GLUT_KEY_DOWN:
|
|
||||||
beta -= 2.0;
|
|
||||||
break;
|
|
||||||
case GLUT_KEY_UP:
|
|
||||||
beta += 2.0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
glutPostRedisplay();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
key(unsigned char key, int x, int y)
|
|
||||||
{
|
|
||||||
switch (key) {
|
|
||||||
case 27:
|
|
||||||
exit(0);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'a':
|
|
||||||
v += 0.01;
|
|
||||||
break;
|
|
||||||
case 'z':
|
|
||||||
v -= 0.01;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'j':
|
|
||||||
joyactive = (!joyactive);
|
|
||||||
break;
|
|
||||||
case 'h':
|
|
||||||
help = (!help);
|
|
||||||
break;
|
|
||||||
case 'f':
|
|
||||||
fog = (!fog);
|
|
||||||
break;
|
|
||||||
case 's':
|
|
||||||
shadows = !shadows;
|
|
||||||
break;
|
|
||||||
case 'R':
|
|
||||||
eject_r -= 0.03;
|
|
||||||
break;
|
|
||||||
case 'r':
|
|
||||||
eject_r += 0.03;
|
|
||||||
break;
|
|
||||||
case 't':
|
|
||||||
ridtri += 0.005;
|
|
||||||
break;
|
|
||||||
case 'T':
|
|
||||||
ridtri -= 0.005;
|
|
||||||
break;
|
|
||||||
#ifdef XMESA
|
|
||||||
case ' ':
|
|
||||||
XMesaSetFXmode(fullscreen ? XMESA_FX_FULLSCREEN : XMESA_FX_WINDOW);
|
|
||||||
fullscreen = (!fullscreen);
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case 'n':
|
|
||||||
NiceFog = !NiceFog;
|
|
||||||
printf("NiceFog %d\n", NiceFog);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
glutPostRedisplay();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
inittextures(void)
|
|
||||||
{
|
|
||||||
GLenum gluerr;
|
|
||||||
GLubyte tex[128][128][4];
|
|
||||||
|
|
||||||
glGenTextures(1, &groundid);
|
|
||||||
glBindTexture(GL_TEXTURE_2D, groundid);
|
|
||||||
|
|
||||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
|
|
||||||
if (!LoadRGBMipmaps("../images/s128.rgb", GL_RGB)) {
|
|
||||||
fprintf(stderr, "Error reading a texture.\n");
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
|
||||||
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
|
|
||||||
GL_LINEAR_MIPMAP_LINEAR);
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
|
||||||
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
|
|
||||||
|
|
||||||
glGenTextures(1, &treeid);
|
|
||||||
glBindTexture(GL_TEXTURE_2D, treeid);
|
|
||||||
|
|
||||||
if (1)
|
|
||||||
{
|
|
||||||
int w, h;
|
|
||||||
GLenum format;
|
|
||||||
int x, y;
|
|
||||||
GLubyte *image = LoadRGBImage("../images/tree3.rgb", &w, &h, &format);
|
|
||||||
|
|
||||||
if (!image) {
|
|
||||||
fprintf(stderr, "Error reading a texture.\n");
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (y = 0; y < 128; y++)
|
|
||||||
for (x = 0; x < 128; x++) {
|
|
||||||
tex[x][y][0] = image[(y + x * 128) * 3];
|
|
||||||
tex[x][y][1] = image[(y + x * 128) * 3 + 1];
|
|
||||||
tex[x][y][2] = image[(y + x * 128) * 3 + 2];
|
|
||||||
if ((tex[x][y][0] == tex[x][y][1]) &&
|
|
||||||
(tex[x][y][1] == tex[x][y][2]) && (tex[x][y][2] == 255))
|
|
||||||
tex[x][y][3] = 0;
|
|
||||||
else
|
|
||||||
tex[x][y][3] = 255;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((gluerr = gluBuild2DMipmaps(GL_TEXTURE_2D, 4, 128, 128, GL_RGBA,
|
|
||||||
GL_UNSIGNED_BYTE, (GLvoid *) (tex)))) {
|
|
||||||
fprintf(stderr, "GLULib%s\n", (char *) gluErrorString(gluerr));
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (!LoadRGBMipmaps("../images/tree2.rgba", GL_RGBA)) {
|
|
||||||
fprintf(stderr, "Error reading a texture.\n");
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
|
||||||
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
|
|
||||||
GL_LINEAR_MIPMAP_LINEAR);
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
|
||||||
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
inittree(void)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
float dist;
|
|
||||||
|
|
||||||
for (i = 0; i < NUMTREE; i++)
|
|
||||||
do {
|
|
||||||
treepos[i][0] = vrnd() * TREEOUTR * 2.0 - TREEOUTR;
|
|
||||||
treepos[i][1] = 0.0;
|
|
||||||
treepos[i][2] = vrnd() * TREEOUTR * 2.0 - TREEOUTR;
|
|
||||||
dist =
|
|
||||||
sqrt(treepos[i][0] * treepos[i][0] +
|
|
||||||
treepos[i][2] * treepos[i][2]);
|
|
||||||
} while ((dist < TREEINR) || (dist > TREEOUTR));
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int ac, char **av)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
fprintf(stderr,
|
|
||||||
"Fire V1.5\nWritten by David Bucciarelli (tech.hmw@plus.it)\n");
|
|
||||||
|
|
||||||
/* Default settings */
|
|
||||||
|
|
||||||
np = 800;
|
|
||||||
eject_r = 0.1;
|
|
||||||
dt = 0.015;
|
|
||||||
eject_vy = 4;
|
|
||||||
eject_vl = 1;
|
|
||||||
shadows = 1;
|
|
||||||
ridtri = 0.1;
|
|
||||||
|
|
||||||
maxage = 1.0 / dt;
|
|
||||||
|
|
||||||
if (ac == 2)
|
|
||||||
np = atoi(av[1]);
|
|
||||||
|
|
||||||
if (ac == 4) {
|
|
||||||
WIDTH = atoi(av[2]);
|
|
||||||
HEIGHT = atoi(av[3]);
|
|
||||||
}
|
|
||||||
|
|
||||||
glutInitWindowPosition(0, 0);
|
|
||||||
glutInitWindowSize(WIDTH, HEIGHT);
|
|
||||||
glutInit(&ac, av);
|
|
||||||
|
|
||||||
glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
|
|
||||||
|
|
||||||
if (!(win = glutCreateWindow("Fire"))) {
|
|
||||||
fprintf(stderr, "Error opening a window.\n");
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
reshape(WIDTH, HEIGHT);
|
|
||||||
|
|
||||||
inittextures();
|
|
||||||
|
|
||||||
glShadeModel(GL_FLAT);
|
|
||||||
glEnable(GL_DEPTH_TEST);
|
|
||||||
|
|
||||||
glEnable(GL_BLEND);
|
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
||||||
|
|
||||||
glEnable(GL_FOG);
|
|
||||||
glFogi(GL_FOG_MODE, GL_EXP);
|
|
||||||
glFogfv(GL_FOG_COLOR, fogcolor);
|
|
||||||
glFogf(GL_FOG_DENSITY, 0.1);
|
|
||||||
|
|
||||||
p = (part *) malloc(sizeof(part) * np);
|
|
||||||
|
|
||||||
for (i = 0; i < np; i++)
|
|
||||||
setnewpart(&p[i]);
|
|
||||||
|
|
||||||
inittree();
|
|
||||||
|
|
||||||
glutKeyboardFunc(key);
|
|
||||||
glutSpecialFunc(special);
|
|
||||||
glutDisplayFunc(drawfire);
|
|
||||||
glutIdleFunc(idle);
|
|
||||||
glutReshapeFunc(reshape);
|
|
||||||
glutMainLoop();
|
|
||||||
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
/* $Id: gamma.c,v 1.3 2002/04/22 16:03:37 brianp Exp $ */
|
|
||||||
|
/* $Id: gamma.c,v 1.1.1.1.2.1 2000/03/18 01:14:01 brianp Exp $ */
|
||||||
|
|
||||||
/* Draw test patterns to help determine correct gamma value for a display.
|
/* Draw test patterns to help determine correct gamma value for a display.
|
||||||
When the intensities of the inner squares nearly match the intensities
|
When the intensities of the inner squares nearly match the intensities
|
||||||
@@ -22,6 +23,25 @@
|
|||||||
|
|
||||||
/* Conversion to GLUT by Mark J. Kilgard */
|
/* Conversion to GLUT by Mark J. Kilgard */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Log: gamma.c,v $
|
||||||
|
* Revision 1.1.1.1.2.1 2000/03/18 01:14:01 brianp
|
||||||
|
* colors were computed incorrectly (Hans Nelles)
|
||||||
|
*
|
||||||
|
* Revision 1.2 2000/03/18 01:13:29 brianp
|
||||||
|
* colors were computed incorrectly (Hans Nelles)
|
||||||
|
*
|
||||||
|
* Revision 1.1.1.1 1999/08/19 00:55:40 jtg
|
||||||
|
* Imported sources
|
||||||
|
*
|
||||||
|
* Revision 3.1 1999/06/19 01:35:38 brianp
|
||||||
|
* merged in Kai Schuetz's RGB changes
|
||||||
|
*
|
||||||
|
* Revision 3.0 1998/02/14 18:42:29 brianp
|
||||||
|
* initial rev
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
/* $Id: gears.c,v 1.6 2000/04/06 02:22:59 brianp Exp $ */
|
/* $Id: gears.c,v 1.2 1999/10/21 16:39:06 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 3-D gear wheels. This program is in the public domain.
|
* 3-D gear wheels. This program is in the public domain.
|
||||||
*
|
*
|
||||||
* Command line options:
|
* Command line options:
|
||||||
* -info print GL implementation information
|
* -info print GL implementation information
|
||||||
* -exit automatically exit after 30 seconds
|
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* Brian Paul
|
* Brian Paul
|
||||||
@@ -13,6 +12,24 @@
|
|||||||
|
|
||||||
/* Conversion to GLUT by Mark J. Kilgard */
|
/* Conversion to GLUT by Mark J. Kilgard */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Log: gears.c,v $
|
||||||
|
* Revision 1.2 1999/10/21 16:39:06 brianp
|
||||||
|
* added -info command line option
|
||||||
|
*
|
||||||
|
* Revision 1.1.1.1 1999/08/19 00:55:40 jtg
|
||||||
|
* Imported sources
|
||||||
|
*
|
||||||
|
* Revision 3.2 1999/06/03 17:07:36 brianp
|
||||||
|
* an extra quad was being drawn in front and back faces
|
||||||
|
*
|
||||||
|
* Revision 3.1 1998/11/03 02:49:10 brianp
|
||||||
|
* added fps output
|
||||||
|
*
|
||||||
|
* Revision 3.0 1998/02/14 18:42:29 brianp
|
||||||
|
* initial rev
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
@@ -27,7 +44,7 @@
|
|||||||
|
|
||||||
static GLint T0 = 0;
|
static GLint T0 = 0;
|
||||||
static GLint Frames = 0;
|
static GLint Frames = 0;
|
||||||
static GLint autoexit = 0;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
||||||
@@ -170,44 +187,41 @@ draw(void)
|
|||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glRotatef(view_rotx, 1.0, 0.0, 0.0);
|
glRotatef(view_rotx, 1.0, 0.0, 0.0);
|
||||||
glRotatef(view_roty, 0.0, 1.0, 0.0);
|
glRotatef(view_roty, 0.0, 1.0, 0.0);
|
||||||
glRotatef(view_rotz, 0.0, 0.0, 1.0);
|
glRotatef(view_rotz, 0.0, 0.0, 1.0);
|
||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef(-3.0, -2.0, 0.0);
|
glTranslatef(-3.0, -2.0, 0.0);
|
||||||
glRotatef(angle, 0.0, 0.0, 1.0);
|
glRotatef(angle, 0.0, 0.0, 1.0);
|
||||||
glCallList(gear1);
|
glCallList(gear1);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef(3.1, -2.0, 0.0);
|
glTranslatef(3.1, -2.0, 0.0);
|
||||||
glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0);
|
glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0);
|
||||||
glCallList(gear2);
|
glCallList(gear2);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef(-3.1, 4.2, 0.0);
|
glTranslatef(-3.1, 4.2, 0.0);
|
||||||
glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0);
|
glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0);
|
||||||
glCallList(gear3);
|
glCallList(gear3);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
glutSwapBuffers();
|
glutSwapBuffers();
|
||||||
|
|
||||||
Frames++;
|
Frames++;
|
||||||
|
|
||||||
{
|
{
|
||||||
GLint t = glutGet(GLUT_ELAPSED_TIME);
|
GLint t = glutGet(GLUT_ELAPSED_TIME);
|
||||||
if (t - T0 >= 5000) {
|
if (t - T0 >= 5000) {
|
||||||
GLfloat seconds = (t - T0) / 1000.0;
|
GLfloat seconds = (t - T0) / 1000.0;
|
||||||
GLfloat fps = Frames / seconds;
|
GLfloat fps = Frames / seconds;
|
||||||
printf("%d frames in %6.3f seconds = %6.3f FPS\n", Frames, seconds, fps);
|
printf("%d frames in %g seconds = %g FPS\n", Frames, seconds, fps);
|
||||||
T0 = t;
|
T0 = t;
|
||||||
Frames = 0;
|
Frames = 0;
|
||||||
if ((t >= 999.0 * autoexit) && (autoexit))
|
|
||||||
exit(0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -283,11 +297,14 @@ reshape(int width, int height)
|
|||||||
static void
|
static void
|
||||||
init(int argc, char *argv[])
|
init(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
static GLfloat pos[4] = {5.0, 5.0, 10.0, 0.0};
|
static GLfloat pos[4] =
|
||||||
static GLfloat red[4] = {0.8, 0.1, 0.0, 1.0};
|
{5.0, 5.0, 10.0, 0.0};
|
||||||
static GLfloat green[4] = {0.0, 0.8, 0.2, 1.0};
|
static GLfloat red[4] =
|
||||||
static GLfloat blue[4] = {0.2, 0.2, 1.0, 1.0};
|
{0.8, 0.1, 0.0, 1.0};
|
||||||
GLint i;
|
static GLfloat green[4] =
|
||||||
|
{0.0, 0.8, 0.2, 1.0};
|
||||||
|
static GLfloat blue[4] =
|
||||||
|
{0.2, 0.2, 1.0, 1.0};
|
||||||
|
|
||||||
glLightfv(GL_LIGHT0, GL_POSITION, pos);
|
glLightfv(GL_LIGHT0, GL_POSITION, pos);
|
||||||
glEnable(GL_CULL_FACE);
|
glEnable(GL_CULL_FACE);
|
||||||
@@ -316,21 +333,15 @@ init(int argc, char *argv[])
|
|||||||
|
|
||||||
glEnable(GL_NORMALIZE);
|
glEnable(GL_NORMALIZE);
|
||||||
|
|
||||||
for ( i=1; i<argc; i++ ) {
|
if (argc > 1 && strcmp(argv[1], "-info")==0) {
|
||||||
if (strcmp(argv[i], "-info")==0) {
|
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
|
||||||
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
|
printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
|
||||||
printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
|
printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR));
|
||||||
printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR));
|
printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS));
|
||||||
printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS));
|
|
||||||
}
|
|
||||||
else if ( strcmp(argv[i], "-exit")==0) {
|
|
||||||
autoexit = 30;
|
|
||||||
printf("Auto Exit after %i seconds.\n", autoexit );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
visible(int vis)
|
visible(int vis)
|
||||||
{
|
{
|
||||||
if (vis == GLUT_VISIBLE)
|
if (vis == GLUT_VISIBLE)
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,119 +0,0 @@
|
|||||||
BACKGROUND = 0.000 0.500 0.700
|
|
||||||
|
|
||||||
ANAME = AXLE1
|
|
||||||
ARADIUS = 1.000
|
|
||||||
AAXIS = 2
|
|
||||||
APOSITION = -7.000 0.000 0.000
|
|
||||||
ACOLOR = 0.800 0.500 0.200
|
|
||||||
ALENGTH = 6.000
|
|
||||||
AMOTORED = 1
|
|
||||||
AANGULARVELOCITY = 2.000
|
|
||||||
ADIRECTION = 1
|
|
||||||
|
|
||||||
ANAME = AXLE2
|
|
||||||
ARADIUS = 1.000
|
|
||||||
AAXIS = 2
|
|
||||||
APOSITION = -3.000 0.000 0.000
|
|
||||||
ACOLOR = 0.800 0.500 0.200
|
|
||||||
ALENGTH = 12.000
|
|
||||||
AMOTORED = 0
|
|
||||||
|
|
||||||
ANAME = AXLE3
|
|
||||||
ARADIUS = 1.000
|
|
||||||
AAXIS = 2
|
|
||||||
APOSITION = 1.000 0.000 0.000
|
|
||||||
ACOLOR = 0.800 0.500 0.200
|
|
||||||
ALENGTH = 6.000
|
|
||||||
AMOTORED = 0
|
|
||||||
|
|
||||||
ANAME = AXLE4
|
|
||||||
ARADIUS = 1.000
|
|
||||||
AAXIS = 2
|
|
||||||
APOSITION = 8.000 0.000 0.000
|
|
||||||
ACOLOR = 0.800 0.500 0.200
|
|
||||||
ALENGTH = 18.000
|
|
||||||
AMOTORED = 0
|
|
||||||
|
|
||||||
ANAME = AXLE5
|
|
||||||
ARADIUS = 1.000
|
|
||||||
AAXIS = 1
|
|
||||||
APOSITION = 8.000 -8.200 -7.400
|
|
||||||
ACOLOR = 0.800 0.500 0.200
|
|
||||||
ALENGTH = 12.000
|
|
||||||
AMOTORED = 0
|
|
||||||
|
|
||||||
GNAME = GEAR1
|
|
||||||
GTYPE = NORMAL
|
|
||||||
GRADIUS = 2.200
|
|
||||||
GWIDTH = 3.000
|
|
||||||
GTEETH = 40
|
|
||||||
GTOOTHDEPTH = 0.500
|
|
||||||
GCOLOR = 0.500 0.500 0.500
|
|
||||||
GAXLE = AXLE1
|
|
||||||
GPOSITION = 0.000
|
|
||||||
|
|
||||||
GNAME = GEAR2
|
|
||||||
GTYPE = NORMAL
|
|
||||||
GRADIUS = 2.200
|
|
||||||
GWIDTH = 3.000
|
|
||||||
GTEETH = 30
|
|
||||||
GTOOTHDEPTH = 0.500
|
|
||||||
GCOLOR = 0.500 0.500 0.500
|
|
||||||
GAXLE = AXLE2
|
|
||||||
GPOSITION = 0.000
|
|
||||||
|
|
||||||
GNAME = GEAR3
|
|
||||||
GTYPE = NORMAL
|
|
||||||
GRADIUS = 2.200
|
|
||||||
GWIDTH = 3.000
|
|
||||||
GTEETH = 20
|
|
||||||
GTOOTHDEPTH = 0.500
|
|
||||||
GCOLOR = 0.500 0.500 0.500
|
|
||||||
GAXLE = AXLE3
|
|
||||||
GPOSITION = 0.000
|
|
||||||
|
|
||||||
GNAME = GEAR4
|
|
||||||
GTYPE = NORMAL
|
|
||||||
GRADIUS = 1.700
|
|
||||||
GWIDTH = 1.000
|
|
||||||
GTEETH = 20
|
|
||||||
GTOOTHDEPTH = 0.500
|
|
||||||
GCOLOR = 0.500 0.500 0.500
|
|
||||||
GAXLE = AXLE2
|
|
||||||
GPOSITION = 5.000
|
|
||||||
|
|
||||||
GNAME = GEAR5
|
|
||||||
GTYPE = NORMAL
|
|
||||||
GRADIUS = 3.000
|
|
||||||
GWIDTH = 1.000
|
|
||||||
GTEETH = 20
|
|
||||||
GTOOTHDEPTH = 0.500
|
|
||||||
GCOLOR = 0.500 0.500 0.500
|
|
||||||
GAXLE = AXLE4
|
|
||||||
GPOSITION = 5.000
|
|
||||||
|
|
||||||
GNAME = GEAR6
|
|
||||||
GTYPE = BEVEL
|
|
||||||
GFACE = 0
|
|
||||||
GRADIUS = 4.000
|
|
||||||
GWIDTH = 1.000
|
|
||||||
GTEETH = 20
|
|
||||||
GTOOTHDEPTH = 1.700
|
|
||||||
GCOLOR = 0.500 0.500 0.500
|
|
||||||
GAXLE = AXLE4
|
|
||||||
GPOSITION = -4.000
|
|
||||||
|
|
||||||
GNAME = GEAR7
|
|
||||||
GTYPE = BEVEL
|
|
||||||
GFACE = 0
|
|
||||||
GRADIUS = 4.000
|
|
||||||
GWIDTH = 1.000
|
|
||||||
GTEETH = 20
|
|
||||||
GTOOTHDEPTH = 1.700
|
|
||||||
GCOLOR = 0.500 0.500 0.500
|
|
||||||
GAXLE = AXLE5
|
|
||||||
GPOSITION = 5.000
|
|
||||||
|
|
||||||
BELTNAME = BELT1
|
|
||||||
GEAR1NAME = GEAR5
|
|
||||||
GEAR2NAME = GEAR4
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: glinfo.c,v 1.2 2002/04/22 16:03:37 brianp Exp $ */
|
/* $Id: glinfo.c,v 1.1 1999/08/19 00:55:40 jtg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print GL, GLU and GLUT version and extension info
|
* Print GL, GLU and GLUT version and extension info
|
||||||
@@ -8,6 +8,23 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Log: glinfo.c,v $
|
||||||
|
* Revision 1.1 1999/08/19 00:55:40 jtg
|
||||||
|
* Initial revision
|
||||||
|
*
|
||||||
|
* Revision 3.2 1999/02/02 04:45:49 brianp
|
||||||
|
* include stdio.h before glut.h
|
||||||
|
*
|
||||||
|
* Revision 3.1 1998/02/22 16:42:54 brianp
|
||||||
|
* added casts to prevent compiler warnings
|
||||||
|
*
|
||||||
|
* Revision 3.0 1998/02/14 18:42:29 brianp
|
||||||
|
* initial rev
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: gloss.c,v 1.6 2000/12/24 22:53:54 pesco Exp $ */
|
/* $Id: gloss.c,v 1.3 1999/10/26 17:08:31 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Specular reflection demo. The specular highlight is modulated by
|
* Specular reflection demo. The specular highlight is modulated by
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
|
|
||||||
#include "readtex.c" /* I know, this is a hack. */
|
#include "../util/readtex.c" /* I know, this is a hack. */
|
||||||
|
|
||||||
#define SPECULAR_TEXTURE_FILE "../images/reflect.rgb"
|
#define SPECULAR_TEXTURE_FILE "../images/reflect.rgb"
|
||||||
#define BASE_TEXTURE_FILE "../images/tile.rgb"
|
#define BASE_TEXTURE_FILE "../images/tile.rgb"
|
||||||
@@ -46,7 +46,7 @@ static GLfloat DXrot = 1.0, DYrot = 2.5;
|
|||||||
static GLfloat Black[4] = { 0, 0, 0, 0 };
|
static GLfloat Black[4] = { 0, 0, 0, 0 };
|
||||||
static GLfloat White[4] = { 1, 1, 1, 1 };
|
static GLfloat White[4] = { 1, 1, 1, 1 };
|
||||||
static GLfloat Diffuse[4] = { .3, .3, 1.0, 1.0 }; /* blue */
|
static GLfloat Diffuse[4] = { .3, .3, 1.0, 1.0 }; /* blue */
|
||||||
static GLfloat Shininess = 6;
|
static GLfloat Shininess = 15;
|
||||||
|
|
||||||
static GLuint BaseTexture, SpecularTexture;
|
static GLuint BaseTexture, SpecularTexture;
|
||||||
static GLboolean DoSpecTexture = GL_TRUE;
|
static GLboolean DoSpecTexture = GL_TRUE;
|
||||||
@@ -245,7 +245,7 @@ static void Init( int argc, char *argv[] )
|
|||||||
|
|
||||||
glMatrixMode(GL_TEXTURE);
|
glMatrixMode(GL_TEXTURE);
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
/*glScalef(8.0, 4.0, 2.0);*/
|
glScalef(8.0, 4.0, 2.0);
|
||||||
glMatrixMode(GL_MODELVIEW);
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
|
||||||
/* cylinder */
|
/* cylinder */
|
||||||
@@ -322,14 +322,8 @@ static void Init( int argc, char *argv[] )
|
|||||||
glBindTexture(GL_TEXTURE_2D, SpecularTexture);
|
glBindTexture(GL_TEXTURE_2D, SpecularTexture);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
#if 1
|
|
||||||
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
|
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
|
||||||
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
|
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
|
||||||
#else
|
|
||||||
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_NV);
|
|
||||||
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_NV);
|
|
||||||
glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_NV);
|
|
||||||
#endif
|
|
||||||
if (!LoadRGBMipmaps(SPECULAR_TEXTURE_FILE, GL_RGB)) {
|
if (!LoadRGBMipmaps(SPECULAR_TEXTURE_FILE, GL_RGB)) {
|
||||||
printf("Error: couldn't load texture image file %s\n", SPECULAR_TEXTURE_FILE);
|
printf("Error: couldn't load texture image file %s\n", SPECULAR_TEXTURE_FILE);
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|||||||
@@ -1,580 +0,0 @@
|
|||||||
/*
|
|
||||||
* This program is under the GNU GPL.
|
|
||||||
* Use at your own risk.
|
|
||||||
*
|
|
||||||
* written by David Bucciarelli (tech.hmw@plus.it)
|
|
||||||
* Humanware s.r.l.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <GL/glut.h>
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
char *name;
|
|
||||||
char *unit;
|
|
||||||
void (*init) (void);
|
|
||||||
int (*run) (int, int);
|
|
||||||
int type;
|
|
||||||
int numsize;
|
|
||||||
int size[10];
|
|
||||||
}
|
|
||||||
benchmark;
|
|
||||||
|
|
||||||
static int frontbuffer = 1;
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
static void
|
|
||||||
init_test01(void)
|
|
||||||
{
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
glLoadIdentity();
|
|
||||||
gluOrtho2D(-0.5, 639.5, -0.5, 479.5);
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
|
|
||||||
glShadeModel(GL_FLAT);
|
|
||||||
glDisable(GL_DEPTH_TEST);
|
|
||||||
|
|
||||||
glClearColor(0.0, 0.1, 1.0, 0.0);
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
|
||||||
glColor3f(1.0, 0.0, 0.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
test01(int size, int num)
|
|
||||||
{
|
|
||||||
int x, y;
|
|
||||||
|
|
||||||
glBegin(GL_POINTS);
|
|
||||||
for (y = 0; y < num; y++)
|
|
||||||
for (x = 0; x < 480; x++)
|
|
||||||
glVertex2i(x, x);
|
|
||||||
glEnd();
|
|
||||||
|
|
||||||
return 480 * num;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
static void
|
|
||||||
init_test02(void)
|
|
||||||
{
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
glLoadIdentity();
|
|
||||||
gluOrtho2D(-0.5, 639.5, -0.5, 479.5);
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
|
|
||||||
glShadeModel(GL_SMOOTH);
|
|
||||||
glDisable(GL_DEPTH_TEST);
|
|
||||||
|
|
||||||
glClearColor(0.0, 0.1, 1.0, 0.0);
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
test02(int size, int num)
|
|
||||||
{
|
|
||||||
int x, y;
|
|
||||||
|
|
||||||
glBegin(GL_LINES);
|
|
||||||
for (y = 0; y < num; y++)
|
|
||||||
for (x = 0; x < size; x++) {
|
|
||||||
glColor3f(0.0, 1.0, y / (float) num);
|
|
||||||
glVertex2i(0, size - 1);
|
|
||||||
glColor3f(1.0, 0.0, x / (float) size);
|
|
||||||
glVertex2i(x, x);
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
|
|
||||||
return num * size;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
static void
|
|
||||||
init_test03(void)
|
|
||||||
{
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
glLoadIdentity();
|
|
||||||
glOrtho(-0.5, 639.5, -0.5, 479.5, 1.0, -1000.0 * 480.0);
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
|
|
||||||
glShadeModel(GL_SMOOTH);
|
|
||||||
glEnable(GL_DEPTH_TEST);
|
|
||||||
|
|
||||||
glClearColor(0.0, 0.1, 1.0, 0.0);
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
test03(int size, int num)
|
|
||||||
{
|
|
||||||
int x, y, z;
|
|
||||||
|
|
||||||
glBegin(GL_TRIANGLES);
|
|
||||||
for (y = 0; y < num; y++)
|
|
||||||
for (x = 0; x < size; x += 5) {
|
|
||||||
z = num * size - (y * size + x);
|
|
||||||
glColor3f(0.0, 1.0, 0.0);
|
|
||||||
glVertex3i(0, x, z);
|
|
||||||
|
|
||||||
glColor3f(1.0, 0.0, x / (float) size);
|
|
||||||
glVertex3i(size - 1 - x, 0, z);
|
|
||||||
|
|
||||||
glColor3f(1.0, x / (float) size, 0.0);
|
|
||||||
glVertex3i(x, size - 1 - x, z);
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
|
|
||||||
return size * num / 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
static void
|
|
||||||
init_test04(void)
|
|
||||||
{
|
|
||||||
int x, y;
|
|
||||||
GLubyte tex[128 * 128 * 3];
|
|
||||||
GLenum gluerr;
|
|
||||||
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
glLoadIdentity();
|
|
||||||
glOrtho(-0.5, 639.5, -0.5, 479.5, 1.0, -1000.0 * 480.0);
|
|
||||||
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
|
|
||||||
glShadeModel(GL_SMOOTH);
|
|
||||||
glEnable(GL_DEPTH_TEST);
|
|
||||||
|
|
||||||
glEnable(GL_BLEND);
|
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
||||||
|
|
||||||
for (y = 0; y < 128; y++)
|
|
||||||
for (x = 0; x < 128; x++) {
|
|
||||||
tex[(x + y * 128) * 3 + 0] = ((x % (128 / 4)) < (128 / 8)) ? 255 : 0;
|
|
||||||
tex[(x + y * 128) * 3 + 1] = ((y % (128 / 4)) < (128 / 8)) ? 255 : 0;
|
|
||||||
tex[(x + y * 128) * 3 + 2] = x;
|
|
||||||
}
|
|
||||||
|
|
||||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
|
||||||
if ((gluerr = gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 128, 128, GL_RGB,
|
|
||||||
GL_UNSIGNED_BYTE, (GLvoid *) (&tex[0])))) {
|
|
||||||
fprintf(stderr, "GLULib%s\n", gluErrorString(gluerr));
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
|
||||||
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
|
|
||||||
GL_LINEAR_MIPMAP_NEAREST);
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
|
||||||
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
|
||||||
|
|
||||||
glClearColor(0.0, 0.1, 1.0, 0.0);
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
test04(int size, int num)
|
|
||||||
{
|
|
||||||
int x, y, z;
|
|
||||||
|
|
||||||
glBegin(GL_TRIANGLES);
|
|
||||||
for (y = 0; y < num; y++)
|
|
||||||
for (x = 0; x < size; x += 5) {
|
|
||||||
z = num * size - (y * size + x);
|
|
||||||
glTexCoord2f(1.0, 1.0);
|
|
||||||
glColor3f(1.0, 0.0, 0.0);
|
|
||||||
glVertex3i(0, x, z);
|
|
||||||
|
|
||||||
glTexCoord2f(0.0, 1.0);
|
|
||||||
glColor3f(0.0, 1.0, 0.0);
|
|
||||||
glVertex3i(size - 1 - x, 0, z);
|
|
||||||
|
|
||||||
glTexCoord2f(1.0, 0.0);
|
|
||||||
glColor3f(0.0, 0.0, 1.0);
|
|
||||||
glVertex3i(x, size - 1 - x, z);
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
|
|
||||||
return num * size / 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
static void
|
|
||||||
init_test05(void)
|
|
||||||
{
|
|
||||||
int x, y;
|
|
||||||
GLubyte tex[128 * 128 * 3];
|
|
||||||
GLenum gluerr;
|
|
||||||
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
glLoadIdentity();
|
|
||||||
glOrtho(-0.5, 639.5, -0.5, 479.5, -1.0, 1.0);
|
|
||||||
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
|
|
||||||
glShadeModel(GL_SMOOTH);
|
|
||||||
glEnable(GL_DEPTH_TEST);
|
|
||||||
|
|
||||||
glEnable(GL_BLEND);
|
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
||||||
|
|
||||||
for (y = 0; y < 128; y++)
|
|
||||||
for (x = 0; x < 128; x++) {
|
|
||||||
tex[(x + y * 128) * 3 + 0] = ((x % (128 / 4)) < (128 / 8)) ? 255 : 0;
|
|
||||||
tex[(x + y * 128) * 3 + 1] = ((y % (128 / 4)) < (128 / 8)) ? 255 : 0;
|
|
||||||
tex[(x + y * 128) * 3 + 2] = x;
|
|
||||||
}
|
|
||||||
|
|
||||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
|
||||||
if ((gluerr = gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 128, 128, GL_RGB,
|
|
||||||
GL_UNSIGNED_BYTE, (GLvoid *) (&tex[0])))) {
|
|
||||||
fprintf(stderr, "GLULib%s\n", gluErrorString(gluerr));
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
|
||||||
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
|
|
||||||
GL_LINEAR_MIPMAP_NEAREST);
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
|
||||||
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
|
||||||
|
|
||||||
glDepthFunc(GL_ALWAYS);
|
|
||||||
|
|
||||||
glClearColor(0.0, 0.1, 1.0, 0.0);
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
test05(int size, int num)
|
|
||||||
{
|
|
||||||
int y;
|
|
||||||
float v0[3], v1[3], v2[3], v3[3];
|
|
||||||
float cv0[3], cv1[3], cv2[3], cv3[3];
|
|
||||||
float tv0[3], tv1[3], tv2[3], tv3[3];
|
|
||||||
|
|
||||||
v0[0] = 320 - size / 2;
|
|
||||||
v0[1] = 240 - size / 2;
|
|
||||||
v0[2] = 0.0;
|
|
||||||
v1[0] = 320 + size / 2;
|
|
||||||
v1[1] = 240 - size / 2;
|
|
||||||
v1[2] = 0.0;
|
|
||||||
v2[0] = 320 - size / 2;
|
|
||||||
v2[1] = 240 + size / 2;
|
|
||||||
v2[2] = 0.0;
|
|
||||||
v3[0] = 320 + size / 2;
|
|
||||||
v3[1] = 240 + size / 2;
|
|
||||||
v3[2] = 0.0;
|
|
||||||
cv0[0] = 1.0;
|
|
||||||
cv0[1] = 0.0;
|
|
||||||
cv0[2] = 0.0;
|
|
||||||
cv1[0] = 1.0;
|
|
||||||
cv1[1] = 1.0;
|
|
||||||
cv1[2] = 0.0;
|
|
||||||
cv2[0] = 1.0;
|
|
||||||
cv2[1] = 0.0;
|
|
||||||
cv2[2] = 1.0;
|
|
||||||
cv3[0] = 1.0;
|
|
||||||
cv3[1] = 1.0;
|
|
||||||
cv3[2] = 1.0;
|
|
||||||
tv0[0] = 0.0;
|
|
||||||
tv0[1] = 0.0;
|
|
||||||
tv0[2] = 0.0;
|
|
||||||
tv1[0] = 1.0;
|
|
||||||
tv1[1] = 0.0;
|
|
||||||
tv1[2] = 0.0;
|
|
||||||
tv2[0] = 0.0;
|
|
||||||
tv2[1] = 1.0;
|
|
||||||
tv2[2] = 0.0;
|
|
||||||
tv3[0] = 1.0;
|
|
||||||
tv3[1] = 1.0;
|
|
||||||
tv3[2] = 0.0;
|
|
||||||
|
|
||||||
glBegin(GL_TRIANGLE_STRIP);
|
|
||||||
for (y = 0; y < num; y++) {
|
|
||||||
glColor3fv(cv0);
|
|
||||||
glTexCoord2fv(tv0);
|
|
||||||
glVertex3fv(v0);
|
|
||||||
|
|
||||||
glColor3fv(cv1);
|
|
||||||
glTexCoord2fv(tv1);
|
|
||||||
glVertex3fv(v1);
|
|
||||||
|
|
||||||
glColor3fv(cv2);
|
|
||||||
glTexCoord2fv(tv2);
|
|
||||||
glVertex3fv(v2);
|
|
||||||
|
|
||||||
glColor3fv(cv3);
|
|
||||||
glTexCoord2fv(tv3);
|
|
||||||
glVertex3fv(v3);
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
|
|
||||||
return 4 * num - 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
static void
|
|
||||||
init_test06(void)
|
|
||||||
{
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
glLoadIdentity();
|
|
||||||
gluOrtho2D(-0.5, 639.5, -0.5, 479.5);
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
|
|
||||||
glShadeModel(GL_SMOOTH);
|
|
||||||
glEnable(GL_DEPTH_TEST);
|
|
||||||
|
|
||||||
glClearColor(0.0, 0.1, 1.0, 0.0);
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
test06(int size, int num)
|
|
||||||
{
|
|
||||||
int y;
|
|
||||||
|
|
||||||
for (y = 0; y < num; y++) {
|
|
||||||
glClearColor(y / (float) num, 0.1, 1.0, 0.0);
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
|
||||||
}
|
|
||||||
|
|
||||||
return num;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
#define BMARKS_TIME 5.0
|
|
||||||
|
|
||||||
#define NUM_BMARKS 6
|
|
||||||
|
|
||||||
/* 554 ~= sqrt(640*480) */
|
|
||||||
|
|
||||||
static benchmark bmarks[NUM_BMARKS] = {
|
|
||||||
{"Simple Points", "Pnts", init_test01, test01, 0, 0,
|
|
||||||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
|
|
||||||
{"Smooth Lines", "Lins", init_test02, test02, 1, 5,
|
|
||||||
{480, 250, 100, 50, 25, 0, 0, 0, 0, 0}},
|
|
||||||
{"ZSmooth Triangles", "Tris", init_test03, test03, 1, 5,
|
|
||||||
{480, 250, 100, 50, 25, 0, 0, 0, 0, 0}},
|
|
||||||
{"ZSmooth Tex Blend Triangles", "Tris", init_test04, test04, 1, 5,
|
|
||||||
{480, 250, 100, 50, 25, 0, 0, 0, 0, 0}},
|
|
||||||
{"ZSmooth Tex Blend TMesh Triangles", "Tris", init_test05, test05, 2, 8,
|
|
||||||
{400, 250, 100, 50, 25, 10, 5, 2, 0, 0}},
|
|
||||||
{"Color/Depth Buffer Clears", "Clrs", init_test06, test06, 3, 0,
|
|
||||||
{554, 0, 0, 0, 0, 0, 0, 0, 0, 0}}
|
|
||||||
};
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
static void
|
|
||||||
dotest0param(benchmark * bmark)
|
|
||||||
{
|
|
||||||
float stime, etime, dtime, tottime, maxtime, mintime;
|
|
||||||
int num, numelem, calibnum, j;
|
|
||||||
|
|
||||||
glPushAttrib(GL_ALL_ATTRIB_BITS);
|
|
||||||
bmark->init();
|
|
||||||
|
|
||||||
stime = glutGet(GLUT_ELAPSED_TIME);
|
|
||||||
|
|
||||||
dtime = 0.0;
|
|
||||||
calibnum = 0;
|
|
||||||
while (dtime < 2.0) {
|
|
||||||
bmark->run(0, 1);
|
|
||||||
glFinish();
|
|
||||||
etime = glutGet(GLUT_ELAPSED_TIME);
|
|
||||||
dtime = (etime - stime) / 1000.0;
|
|
||||||
calibnum++;
|
|
||||||
}
|
|
||||||
glPopAttrib();
|
|
||||||
|
|
||||||
fprintf(stderr, "Elapsed time for the calibration test (%d): %f\n",
|
|
||||||
calibnum, dtime);
|
|
||||||
|
|
||||||
num = (int) ((BMARKS_TIME / dtime) * calibnum);
|
|
||||||
|
|
||||||
if (num < 1)
|
|
||||||
num = 1;
|
|
||||||
|
|
||||||
fprintf(stderr, "Selected number of benchmark iterations: %d\n", num);
|
|
||||||
|
|
||||||
mintime = HUGE_VAL;
|
|
||||||
maxtime = -HUGE_VAL;
|
|
||||||
|
|
||||||
for (tottime = 0.0, j = 0; j < 5; j++) {
|
|
||||||
glPushAttrib(GL_ALL_ATTRIB_BITS);
|
|
||||||
bmark->init();
|
|
||||||
|
|
||||||
stime = glutGet(GLUT_ELAPSED_TIME);
|
|
||||||
numelem = bmark->run(0, num);
|
|
||||||
glFinish();
|
|
||||||
etime = glutGet(GLUT_ELAPSED_TIME);
|
|
||||||
|
|
||||||
glPopAttrib();
|
|
||||||
|
|
||||||
dtime = (etime - stime) / 1000.0;
|
|
||||||
tottime += dtime;
|
|
||||||
|
|
||||||
fprintf(stderr, "Elapsed time for run %d: %f\n", j, dtime);
|
|
||||||
|
|
||||||
if (dtime < mintime)
|
|
||||||
mintime = dtime;
|
|
||||||
if (dtime > maxtime)
|
|
||||||
maxtime = dtime;
|
|
||||||
}
|
|
||||||
|
|
||||||
tottime -= mintime + maxtime;
|
|
||||||
|
|
||||||
fprintf(stdout, "%s\n%f %s/sec", bmark->name, numelem / (tottime / 3.0),
|
|
||||||
bmark->unit);
|
|
||||||
|
|
||||||
if (bmark->type == 3)
|
|
||||||
fprintf(stdout, ", MPixel Fill/sec: %f\n\n",
|
|
||||||
(numelem * bmark->size[0] * (float) bmark->size[0]) /
|
|
||||||
(1000000.0 * tottime / 3.0));
|
|
||||||
else
|
|
||||||
fprintf(stdout, "\n\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
static void
|
|
||||||
dotest1param(benchmark * bmark)
|
|
||||||
{
|
|
||||||
float stime, etime, dtime, tottime, maxtime, mintime;
|
|
||||||
int num, numelem, calibnum, j, k;
|
|
||||||
|
|
||||||
fprintf(stdout, "%s\n", bmark->name);
|
|
||||||
|
|
||||||
for (j = 0; j < bmark->numsize; j++) {
|
|
||||||
fprintf(stderr, "Current size: %d\n", bmark->size[j]);
|
|
||||||
|
|
||||||
glPushAttrib(GL_ALL_ATTRIB_BITS);
|
|
||||||
bmark->init();
|
|
||||||
|
|
||||||
stime = glutGet(GLUT_ELAPSED_TIME);
|
|
||||||
|
|
||||||
dtime = 0.0;
|
|
||||||
calibnum = 0;
|
|
||||||
while (dtime < 2.0) {
|
|
||||||
bmark->run(bmark->size[j], 1);
|
|
||||||
glFinish();
|
|
||||||
etime = glutGet(GLUT_ELAPSED_TIME);
|
|
||||||
dtime = (etime - stime) / 1000.0;
|
|
||||||
calibnum++;
|
|
||||||
}
|
|
||||||
glPopAttrib();
|
|
||||||
|
|
||||||
fprintf(stderr, "Elapsed time for the calibration test (%d): %f\n",
|
|
||||||
calibnum, dtime);
|
|
||||||
|
|
||||||
num = (int) ((BMARKS_TIME / dtime) * calibnum);
|
|
||||||
|
|
||||||
if (num < 1)
|
|
||||||
num = 1;
|
|
||||||
|
|
||||||
fprintf(stderr, "Selected number of benchmark iterations: %d\n", num);
|
|
||||||
|
|
||||||
mintime = HUGE_VAL;
|
|
||||||
maxtime = -HUGE_VAL;
|
|
||||||
|
|
||||||
for (numelem = 1, tottime = 0.0, k = 0; k < 5; k++) {
|
|
||||||
glPushAttrib(GL_ALL_ATTRIB_BITS);
|
|
||||||
bmark->init();
|
|
||||||
|
|
||||||
stime = glutGet(GLUT_ELAPSED_TIME);
|
|
||||||
numelem = bmark->run(bmark->size[j], num);
|
|
||||||
glFinish();
|
|
||||||
etime = glutGet(GLUT_ELAPSED_TIME);
|
|
||||||
|
|
||||||
glPopAttrib();
|
|
||||||
|
|
||||||
dtime = (etime - stime) / 1000.0;
|
|
||||||
tottime += dtime;
|
|
||||||
|
|
||||||
fprintf(stderr, "Elapsed time for run %d: %f\n", k, dtime);
|
|
||||||
|
|
||||||
if (dtime < mintime)
|
|
||||||
mintime = dtime;
|
|
||||||
if (dtime > maxtime)
|
|
||||||
maxtime = dtime;
|
|
||||||
}
|
|
||||||
|
|
||||||
tottime -= mintime + maxtime;
|
|
||||||
|
|
||||||
fprintf(stdout, "SIZE=%03d => %f %s/sec", bmark->size[j],
|
|
||||||
numelem / (tottime / 3.0), bmark->unit);
|
|
||||||
if (bmark->type == 2)
|
|
||||||
fprintf(stdout, ", MPixel Fill/sec: %f\n",
|
|
||||||
(numelem * bmark->size[j] * bmark->size[j] / 2) /
|
|
||||||
(1000000.0 * tottime / 3.0));
|
|
||||||
else
|
|
||||||
fprintf(stdout, "\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
fprintf(stdout, "\n\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
static void
|
|
||||||
display(void)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (frontbuffer)
|
|
||||||
glDrawBuffer(GL_FRONT);
|
|
||||||
else
|
|
||||||
glDrawBuffer(GL_BACK);
|
|
||||||
|
|
||||||
for (i = 0; i < NUM_BMARKS; i++) {
|
|
||||||
fprintf(stderr, "Benchmark: %d\n", i);
|
|
||||||
|
|
||||||
switch (bmarks[i].type) {
|
|
||||||
case 0:
|
|
||||||
case 3:
|
|
||||||
dotest0param(&bmarks[i]);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
case 2:
|
|
||||||
dotest1param(&bmarks[i]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int ac, char **av)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "GLTest v1.0\nWritten by David Bucciarelli\n");
|
|
||||||
|
|
||||||
if (ac == 2)
|
|
||||||
frontbuffer = 0;
|
|
||||||
|
|
||||||
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
|
|
||||||
glutInitWindowPosition(0, 0);
|
|
||||||
glutInitWindowSize(640, 480);
|
|
||||||
glutCreateWindow("OpenGL/Mesa Performances");
|
|
||||||
glutDisplayFunc(display);
|
|
||||||
glutMainLoop();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: glutfx.c,v 1.3 2002/04/22 16:03:37 brianp Exp $ */
|
/* $Id: glutfx.c,v 1.1 1999/08/19 00:55:40 jtg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Example of how one might use GLUT with the 3Dfx driver in full-screen mode.
|
* Example of how one might use GLUT with the 3Dfx driver in full-screen mode.
|
||||||
@@ -14,6 +14,22 @@
|
|||||||
* Brian Paul This file is in the public domain.
|
* Brian Paul This file is in the public domain.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Log: glutfx.c,v $
|
||||||
|
* Revision 1.1 1999/08/19 00:55:40 jtg
|
||||||
|
* Initial revision
|
||||||
|
*
|
||||||
|
* Revision 3.2 1999/03/28 18:18:33 brianp
|
||||||
|
* minor clean-up
|
||||||
|
*
|
||||||
|
* Revision 3.1 1998/06/29 02:37:30 brianp
|
||||||
|
* minor changes for Windows (Ted Jump)
|
||||||
|
*
|
||||||
|
* Revision 3.0 1998/02/14 18:42:29 brianp
|
||||||
|
* initial rev
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -148,6 +164,7 @@ int main( int argc, char *argv[] )
|
|||||||
printf("NOTE: if you've got 3Dfx VooDoo hardware you must run this");
|
printf("NOTE: if you've got 3Dfx VooDoo hardware you must run this");
|
||||||
printf(" program as root.\n\n");
|
printf(" program as root.\n\n");
|
||||||
printf("Move the mouse. Press ESC to exit.\n\n");
|
printf("Move the mouse. Press ESC to exit.\n\n");
|
||||||
|
sleep(2);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Tell Mesa GLX to use 3Dfx driver in fullscreen mode. */
|
/* Tell Mesa GLX to use 3Dfx driver in fullscreen mode. */
|
||||||
|
|||||||
@@ -1,706 +0,0 @@
|
|||||||
/*
|
|
||||||
* This program is under the GNU GPL.
|
|
||||||
* Use at your own risk.
|
|
||||||
*
|
|
||||||
* written by David Bucciarelli (tech.hmw@plus.it)
|
|
||||||
* Humanware s.r.l.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
#if defined (WIN32)|| defined(_WIN32)
|
|
||||||
#include <windows.h>
|
|
||||||
#include <mmsystem.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <GL/glut.h>
|
|
||||||
|
|
||||||
#include "readtex.c"
|
|
||||||
|
|
||||||
#ifdef XMESA
|
|
||||||
#include "GL/xmesa.h"
|
|
||||||
static int fullscreen = 1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int WIDTH = 640;
|
|
||||||
static int HEIGHT = 480;
|
|
||||||
|
|
||||||
static GLint T0;
|
|
||||||
static GLint Frames;
|
|
||||||
|
|
||||||
#define MAX_LOD 9
|
|
||||||
|
|
||||||
#define TEX_SKY_WIDTH 256
|
|
||||||
#define TEX_SKY_HEIGHT TEX_SKY_WIDTH
|
|
||||||
|
|
||||||
#ifndef M_PI
|
|
||||||
#define M_PI 3.1415926535
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define FROM_NONE 0
|
|
||||||
#define FROM_DOWN 1
|
|
||||||
#define FROM_UP 2
|
|
||||||
#define FROM_LEFT 3
|
|
||||||
#define FROM_RIGHT 4
|
|
||||||
#define FROM_FRONT 5
|
|
||||||
#define FROM_BACK 6
|
|
||||||
|
|
||||||
static int win = 0;
|
|
||||||
|
|
||||||
static float obs[3] = { 3.8, 0.0, 0.0 };
|
|
||||||
static float dir[3];
|
|
||||||
static float v = 0.0;
|
|
||||||
static float alpha = -90.0;
|
|
||||||
static float beta = 90.0;
|
|
||||||
|
|
||||||
static int fog = 1;
|
|
||||||
static int bfcull = 1;
|
|
||||||
static int usetex = 1;
|
|
||||||
static int help = 1;
|
|
||||||
static int poutline = 0;
|
|
||||||
static int normext = 1;
|
|
||||||
static int joyavailable = 0;
|
|
||||||
static int joyactive = 0;
|
|
||||||
static int LODbias = 3;
|
|
||||||
static int maxdepth = MAX_LOD;
|
|
||||||
|
|
||||||
static unsigned int totpoly = 0;
|
|
||||||
|
|
||||||
static GLuint t1id, t2id;
|
|
||||||
static GLuint skydlist, LODdlist[MAX_LOD], LODnumpoly[MAX_LOD];
|
|
||||||
|
|
||||||
static void
|
|
||||||
initlight(void)
|
|
||||||
{
|
|
||||||
GLfloat lspec[4] = { 1.0, 1.0, 1.0, 1.0 };
|
|
||||||
static GLfloat lightpos[4] = { 30, 15.0, 30.0, 1.0 };
|
|
||||||
|
|
||||||
glLightfv(GL_LIGHT0, GL_POSITION, lightpos);
|
|
||||||
glLightfv(GL_LIGHT0, GL_SPECULAR, lspec);
|
|
||||||
|
|
||||||
glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 32.0);
|
|
||||||
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, lspec);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
initdlists(void)
|
|
||||||
{
|
|
||||||
static int slicetable[MAX_LOD][2] = {
|
|
||||||
{21, 10},
|
|
||||||
{18, 9},
|
|
||||||
{15, 8},
|
|
||||||
{12, 7},
|
|
||||||
{9, 6},
|
|
||||||
{7, 5},
|
|
||||||
{5, 4},
|
|
||||||
{4, 3},
|
|
||||||
{3, 2}
|
|
||||||
};
|
|
||||||
GLUquadricObj *obj;
|
|
||||||
int i, xslices, yslices;
|
|
||||||
|
|
||||||
obj = gluNewQuadric();
|
|
||||||
|
|
||||||
skydlist = glGenLists(1);
|
|
||||||
glNewList(skydlist, GL_COMPILE);
|
|
||||||
glBindTexture(GL_TEXTURE_2D, t2id);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
|
||||||
glColor3f(1.0f, 1.0f, 1.0f);
|
|
||||||
|
|
||||||
gluQuadricDrawStyle(obj, GLU_FILL);
|
|
||||||
gluQuadricNormals(obj, GLU_NONE);
|
|
||||||
gluQuadricTexture(obj, GL_TRUE);
|
|
||||||
gluQuadricOrientation(obj, GLU_INSIDE);
|
|
||||||
gluSphere(obj, 40.0f, 18, 9);
|
|
||||||
|
|
||||||
glEndList();
|
|
||||||
|
|
||||||
for (i = 0; i < MAX_LOD; i++) {
|
|
||||||
LODdlist[i] = glGenLists(1);
|
|
||||||
glNewList(LODdlist[i], GL_COMPILE);
|
|
||||||
|
|
||||||
gluQuadricDrawStyle(obj, GLU_FILL);
|
|
||||||
gluQuadricNormals(obj, GLU_SMOOTH);
|
|
||||||
gluQuadricTexture(obj, GL_TRUE);
|
|
||||||
gluQuadricOrientation(obj, GLU_OUTSIDE);
|
|
||||||
xslices = slicetable[i][0];
|
|
||||||
yslices = slicetable[i][1];
|
|
||||||
gluSphere(obj, 1.0f, xslices, yslices);
|
|
||||||
LODnumpoly[i] = xslices * (yslices - 2) + 2 * (xslices - 1);
|
|
||||||
|
|
||||||
glEndList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
inittextures(void)
|
|
||||||
{
|
|
||||||
GLubyte tsky[TEX_SKY_HEIGHT][TEX_SKY_WIDTH][3];
|
|
||||||
GLuint x, y;
|
|
||||||
GLfloat fact;
|
|
||||||
GLenum gluerr;
|
|
||||||
|
|
||||||
/* Brick */
|
|
||||||
|
|
||||||
glGenTextures(1, &t1id);
|
|
||||||
glBindTexture(GL_TEXTURE_2D, t1id);
|
|
||||||
|
|
||||||
if (!LoadRGBMipmaps("../images/bw.rgb", 3)) {
|
|
||||||
fprintf(stderr, "Error reading a texture.\n");
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
|
||||||
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
|
|
||||||
GL_LINEAR_MIPMAP_LINEAR);
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
|
||||||
|
|
||||||
/* Sky */
|
|
||||||
|
|
||||||
glGenTextures(1, &t2id);
|
|
||||||
glBindTexture(GL_TEXTURE_2D, t2id);
|
|
||||||
|
|
||||||
for (y = 0; y < TEX_SKY_HEIGHT; y++)
|
|
||||||
for (x = 0; x < TEX_SKY_WIDTH; x++)
|
|
||||||
if (y < TEX_SKY_HEIGHT / 2) {
|
|
||||||
fact = y / (GLfloat) (TEX_SKY_HEIGHT / 2);
|
|
||||||
tsky[y][x][0] =
|
|
||||||
(GLubyte) (255.0f * (0.1f * fact + 0.3f * (1.0f - fact)));
|
|
||||||
tsky[y][x][1] =
|
|
||||||
(GLubyte) (255.0f * (0.2f * fact + 1.0f * (1.0f - fact)));
|
|
||||||
tsky[y][x][2] = 255;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
tsky[y][x][0] = tsky[TEX_SKY_HEIGHT - y - 1][x][0];
|
|
||||||
tsky[y][x][1] = tsky[TEX_SKY_HEIGHT - y - 1][x][1];
|
|
||||||
tsky[y][x][2] = 255;
|
|
||||||
}
|
|
||||||
|
|
||||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
|
||||||
if (
|
|
||||||
(gluerr =
|
|
||||||
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TEX_SKY_WIDTH, TEX_SKY_HEIGHT,
|
|
||||||
GL_RGB, GL_UNSIGNED_BYTE, (GLvoid *) (tsky)))) {
|
|
||||||
fprintf(stderr, "GLULib%s\n", (char *) gluErrorString(gluerr));
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
|
||||||
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
|
|
||||||
GL_LINEAR_MIPMAP_LINEAR);
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
calcposobs(void)
|
|
||||||
{
|
|
||||||
dir[0] = sin(alpha * M_PI / 180.0);
|
|
||||||
dir[1] = cos(alpha * M_PI / 180.0) * sin(beta * M_PI / 180.0);
|
|
||||||
dir[2] = cos(beta * M_PI / 180.0);
|
|
||||||
|
|
||||||
if (dir[0] < 1.0e-5 && dir[0] > -1.0e-5)
|
|
||||||
dir[0] = 0;
|
|
||||||
if (dir[1] < 1.0e-5 && dir[1] > -1.0e-5)
|
|
||||||
dir[1] = 0;
|
|
||||||
if (dir[2] < 1.0e-5 && dir[2] > -1.0e-5)
|
|
||||||
dir[2] = 0;
|
|
||||||
|
|
||||||
obs[0] += v * dir[0];
|
|
||||||
obs[1] += v * dir[1];
|
|
||||||
obs[2] += v * dir[2];
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
special(int k, int x, int y)
|
|
||||||
{
|
|
||||||
switch (k) {
|
|
||||||
case GLUT_KEY_LEFT:
|
|
||||||
alpha -= 2.0;
|
|
||||||
break;
|
|
||||||
case GLUT_KEY_RIGHT:
|
|
||||||
alpha += 2.0;
|
|
||||||
break;
|
|
||||||
case GLUT_KEY_DOWN:
|
|
||||||
beta -= 2.0;
|
|
||||||
break;
|
|
||||||
case GLUT_KEY_UP:
|
|
||||||
beta += 2.0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
key(unsigned char k, int x, int y)
|
|
||||||
{
|
|
||||||
switch (k) {
|
|
||||||
case 27:
|
|
||||||
exit(0);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'a':
|
|
||||||
v += 0.01;
|
|
||||||
break;
|
|
||||||
case 'z':
|
|
||||||
v -= 0.01;
|
|
||||||
break;
|
|
||||||
|
|
||||||
#ifdef XMESA
|
|
||||||
case ' ':
|
|
||||||
fullscreen = (!fullscreen);
|
|
||||||
XMesaSetFXmode(fullscreen ? XMESA_FX_FULLSCREEN : XMESA_FX_WINDOW);
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
case '+':
|
|
||||||
LODbias--;
|
|
||||||
break;
|
|
||||||
case '-':
|
|
||||||
LODbias++;
|
|
||||||
break;
|
|
||||||
case 'j':
|
|
||||||
joyactive = (!joyactive);
|
|
||||||
break;
|
|
||||||
case 'h':
|
|
||||||
help = (!help);
|
|
||||||
break;
|
|
||||||
case 'f':
|
|
||||||
fog = (!fog);
|
|
||||||
break;
|
|
||||||
case 't':
|
|
||||||
usetex = (!usetex);
|
|
||||||
break;
|
|
||||||
case 'n':
|
|
||||||
normext = (!normext);
|
|
||||||
break;
|
|
||||||
case 'b':
|
|
||||||
if (bfcull) {
|
|
||||||
glDisable(GL_CULL_FACE);
|
|
||||||
bfcull = 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
glEnable(GL_CULL_FACE);
|
|
||||||
bfcull = 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'p':
|
|
||||||
if (poutline) {
|
|
||||||
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
|
||||||
poutline = 0;
|
|
||||||
usetex = 1;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
|
|
||||||
poutline = 1;
|
|
||||||
usetex = 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
reshape(int w, int h)
|
|
||||||
{
|
|
||||||
WIDTH = w;
|
|
||||||
HEIGHT = h;
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
glLoadIdentity();
|
|
||||||
gluPerspective(90.0, w / (float) h, 0.8, 100.0);
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
glLoadIdentity();
|
|
||||||
glViewport(0, 0, w, h);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
printstring(void *font, char *string)
|
|
||||||
{
|
|
||||||
int len, i;
|
|
||||||
|
|
||||||
len = (int) strlen(string);
|
|
||||||
for (i = 0; i < len; i++)
|
|
||||||
glutBitmapCharacter(font, string[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
printhelp(void)
|
|
||||||
{
|
|
||||||
glEnable(GL_BLEND);
|
|
||||||
glColor4f(0.5, 0.5, 0.5, 0.5);
|
|
||||||
glRecti(40, 40, 600, 440);
|
|
||||||
glDisable(GL_BLEND);
|
|
||||||
|
|
||||||
glColor3f(1.0, 0.0, 0.0);
|
|
||||||
glRasterPos2i(300, 420);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Help");
|
|
||||||
|
|
||||||
glRasterPos2i(60, 390);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "h - Toggle Help");
|
|
||||||
glRasterPos2i(60, 360);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "t - Toggle Textures");
|
|
||||||
glRasterPos2i(60, 330);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "f - Toggle Fog");
|
|
||||||
glRasterPos2i(60, 300);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "b - Toggle Back face culling");
|
|
||||||
glRasterPos2i(60, 270);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Arrow Keys - Rotate");
|
|
||||||
glRasterPos2i(60, 240);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "a - Increase velocity");
|
|
||||||
glRasterPos2i(60, 210);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "z - Decrease velocity");
|
|
||||||
glRasterPos2i(60, 180);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24, "p - Toggle Wire frame");
|
|
||||||
glRasterPos2i(60, 150);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24,
|
|
||||||
"b - Toggle GL_EXT_rescale_normal extension");
|
|
||||||
glRasterPos2i(60, 120);
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24,
|
|
||||||
"+/- - Increase/decrease the Object maximum LOD");
|
|
||||||
|
|
||||||
glRasterPos2i(60, 90);
|
|
||||||
if (joyavailable)
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24,
|
|
||||||
"j - Toggle jostick control (Joystick control available)");
|
|
||||||
else
|
|
||||||
printstring(GLUT_BITMAP_TIMES_ROMAN_24,
|
|
||||||
"(No Joystick control available)");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
dojoy(void)
|
|
||||||
{
|
|
||||||
#ifdef _WIN32
|
|
||||||
static UINT max[2] = { 0, 0 };
|
|
||||||
static UINT min[2] = { 0xffffffff, 0xffffffff }, center[2];
|
|
||||||
MMRESULT res;
|
|
||||||
JOYINFO joy;
|
|
||||||
|
|
||||||
res = joyGetPos(JOYSTICKID1, &joy);
|
|
||||||
|
|
||||||
if (res == JOYERR_NOERROR) {
|
|
||||||
joyavailable = 1;
|
|
||||||
|
|
||||||
if (max[0] < joy.wXpos)
|
|
||||||
max[0] = joy.wXpos;
|
|
||||||
if (min[0] > joy.wXpos)
|
|
||||||
min[0] = joy.wXpos;
|
|
||||||
center[0] = (max[0] + min[0]) / 2;
|
|
||||||
|
|
||||||
if (max[1] < joy.wYpos)
|
|
||||||
max[1] = joy.wYpos;
|
|
||||||
if (min[1] > joy.wYpos)
|
|
||||||
min[1] = joy.wYpos;
|
|
||||||
center[1] = (max[1] + min[1]) / 2;
|
|
||||||
|
|
||||||
if (joyactive) {
|
|
||||||
if (fabs(center[0] - (float) joy.wXpos) > 0.1 * (max[0] - min[0]))
|
|
||||||
alpha -=
|
|
||||||
2.0 * (center[0] - (float) joy.wXpos) / (max[0] - min[0]);
|
|
||||||
if (fabs(center[1] - (float) joy.wYpos) > 0.1 * (max[1] - min[1]))
|
|
||||||
beta += 2.0 * (center[1] - (float) joy.wYpos) / (max[1] - min[1]);
|
|
||||||
|
|
||||||
if (joy.wButtons & JOY_BUTTON1)
|
|
||||||
v += 0.01;
|
|
||||||
if (joy.wButtons & JOY_BUTTON2)
|
|
||||||
v -= 0.01;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
joyavailable = 0;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
drawipers(int depth, int from)
|
|
||||||
{
|
|
||||||
int lod;
|
|
||||||
|
|
||||||
if (depth == maxdepth)
|
|
||||||
return;
|
|
||||||
|
|
||||||
lod = depth + LODbias;
|
|
||||||
if (lod < 0)
|
|
||||||
lod = 0;
|
|
||||||
if (lod >= MAX_LOD)
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch (from) {
|
|
||||||
case FROM_NONE:
|
|
||||||
glCallList(LODdlist[lod]);
|
|
||||||
|
|
||||||
depth++;
|
|
||||||
drawipers(depth, FROM_DOWN);
|
|
||||||
drawipers(depth, FROM_UP);
|
|
||||||
drawipers(depth, FROM_FRONT);
|
|
||||||
drawipers(depth, FROM_BACK);
|
|
||||||
drawipers(depth, FROM_LEFT);
|
|
||||||
drawipers(depth, FROM_RIGHT);
|
|
||||||
break;
|
|
||||||
case FROM_FRONT:
|
|
||||||
glPushMatrix();
|
|
||||||
glTranslatef(0.0f, -1.5f, 0.0f);
|
|
||||||
glScalef(0.5f, 0.5f, 0.5f);
|
|
||||||
|
|
||||||
glCallList(LODdlist[lod]);
|
|
||||||
|
|
||||||
depth++;
|
|
||||||
drawipers(depth, FROM_DOWN);
|
|
||||||
drawipers(depth, FROM_UP);
|
|
||||||
drawipers(depth, FROM_FRONT);
|
|
||||||
drawipers(depth, FROM_LEFT);
|
|
||||||
drawipers(depth, FROM_RIGHT);
|
|
||||||
glPopMatrix();
|
|
||||||
break;
|
|
||||||
case FROM_BACK:
|
|
||||||
glPushMatrix();
|
|
||||||
glTranslatef(0.0f, 1.5f, 0.0f);
|
|
||||||
glScalef(0.5f, 0.5f, 0.5f);
|
|
||||||
|
|
||||||
glCallList(LODdlist[lod]);
|
|
||||||
|
|
||||||
depth++;
|
|
||||||
drawipers(depth, FROM_DOWN);
|
|
||||||
drawipers(depth, FROM_UP);
|
|
||||||
drawipers(depth, FROM_BACK);
|
|
||||||
drawipers(depth, FROM_LEFT);
|
|
||||||
drawipers(depth, FROM_RIGHT);
|
|
||||||
glPopMatrix();
|
|
||||||
break;
|
|
||||||
case FROM_LEFT:
|
|
||||||
glPushMatrix();
|
|
||||||
glTranslatef(-1.5f, 0.0f, 0.0f);
|
|
||||||
glScalef(0.5f, 0.5f, 0.5f);
|
|
||||||
|
|
||||||
glCallList(LODdlist[lod]);
|
|
||||||
|
|
||||||
depth++;
|
|
||||||
drawipers(depth, FROM_DOWN);
|
|
||||||
drawipers(depth, FROM_UP);
|
|
||||||
drawipers(depth, FROM_FRONT);
|
|
||||||
drawipers(depth, FROM_BACK);
|
|
||||||
drawipers(depth, FROM_LEFT);
|
|
||||||
glPopMatrix();
|
|
||||||
break;
|
|
||||||
case FROM_RIGHT:
|
|
||||||
glPushMatrix();
|
|
||||||
glTranslatef(1.5f, 0.0f, 0.0f);
|
|
||||||
glScalef(0.5f, 0.5f, 0.5f);
|
|
||||||
|
|
||||||
glCallList(LODdlist[lod]);
|
|
||||||
|
|
||||||
depth++;
|
|
||||||
drawipers(depth, FROM_DOWN);
|
|
||||||
drawipers(depth, FROM_UP);
|
|
||||||
drawipers(depth, FROM_FRONT);
|
|
||||||
drawipers(depth, FROM_BACK);
|
|
||||||
drawipers(depth, FROM_RIGHT);
|
|
||||||
glPopMatrix();
|
|
||||||
break;
|
|
||||||
case FROM_DOWN:
|
|
||||||
glPushMatrix();
|
|
||||||
glTranslatef(0.0f, 0.0f, 1.5f);
|
|
||||||
glScalef(0.5f, 0.5f, 0.5f);
|
|
||||||
|
|
||||||
glCallList(LODdlist[lod]);
|
|
||||||
|
|
||||||
depth++;
|
|
||||||
drawipers(depth, FROM_DOWN);
|
|
||||||
drawipers(depth, FROM_FRONT);
|
|
||||||
drawipers(depth, FROM_BACK);
|
|
||||||
drawipers(depth, FROM_LEFT);
|
|
||||||
drawipers(depth, FROM_RIGHT);
|
|
||||||
glPopMatrix();
|
|
||||||
break;
|
|
||||||
case FROM_UP:
|
|
||||||
glPushMatrix();
|
|
||||||
glTranslatef(0.0f, 0.0f, -1.5f);
|
|
||||||
glScalef(0.5f, 0.5f, 0.5f);
|
|
||||||
|
|
||||||
glCallList(LODdlist[lod]);
|
|
||||||
|
|
||||||
depth++;
|
|
||||||
drawipers(depth, FROM_UP);
|
|
||||||
drawipers(depth, FROM_FRONT);
|
|
||||||
drawipers(depth, FROM_BACK);
|
|
||||||
drawipers(depth, FROM_LEFT);
|
|
||||||
drawipers(depth, FROM_RIGHT);
|
|
||||||
glPopMatrix();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
totpoly += LODnumpoly[lod];
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
draw(void)
|
|
||||||
{
|
|
||||||
static char frbuf[80] = "";
|
|
||||||
static GLfloat alpha = 0.0f;
|
|
||||||
static GLfloat beta = 0.0f;
|
|
||||||
static float fr = 0.0;
|
|
||||||
|
|
||||||
dojoy();
|
|
||||||
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
|
||||||
|
|
||||||
if (usetex)
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
|
||||||
else
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
|
||||||
|
|
||||||
if (fog)
|
|
||||||
glEnable(GL_FOG);
|
|
||||||
else
|
|
||||||
glDisable(GL_FOG);
|
|
||||||
|
|
||||||
glPushMatrix();
|
|
||||||
calcposobs();
|
|
||||||
gluLookAt(obs[0], obs[1], obs[2],
|
|
||||||
obs[0] + dir[0], obs[1] + dir[1], obs[2] + dir[2],
|
|
||||||
0.0, 0.0, 1.0);
|
|
||||||
|
|
||||||
/* Scene */
|
|
||||||
glEnable(GL_DEPTH_TEST);
|
|
||||||
|
|
||||||
glShadeModel(GL_SMOOTH);
|
|
||||||
glBindTexture(GL_TEXTURE_2D, t1id);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
glColor3f(1.0f, 1.0f, 1.0f);
|
|
||||||
glEnable(GL_LIGHT0);
|
|
||||||
glEnable(GL_LIGHTING);
|
|
||||||
|
|
||||||
if (normext)
|
|
||||||
glEnable(GL_RESCALE_NORMAL_EXT);
|
|
||||||
else
|
|
||||||
glEnable(GL_NORMALIZE);
|
|
||||||
|
|
||||||
glPushMatrix();
|
|
||||||
glRotatef(alpha, 0.0f, 0.0f, 1.0f);
|
|
||||||
glRotatef(beta, 1.0f, 0.0f, 0.0f);
|
|
||||||
totpoly = 0;
|
|
||||||
drawipers(0, FROM_NONE);
|
|
||||||
glPopMatrix();
|
|
||||||
|
|
||||||
alpha += 0.5f;
|
|
||||||
beta += 0.3f;
|
|
||||||
|
|
||||||
glDisable(GL_LIGHTING);
|
|
||||||
glDisable(GL_LIGHT0);
|
|
||||||
glShadeModel(GL_FLAT);
|
|
||||||
|
|
||||||
if (normext)
|
|
||||||
glDisable(GL_RESCALE_NORMAL_EXT);
|
|
||||||
else
|
|
||||||
glDisable(GL_NORMALIZE);
|
|
||||||
|
|
||||||
glCallList(skydlist);
|
|
||||||
|
|
||||||
glPopMatrix();
|
|
||||||
|
|
||||||
/* Help Screen */
|
|
||||||
|
|
||||||
sprintf(frbuf,
|
|
||||||
"Frame rate: %0.2f LOD: %d Tot. poly.: %d Poly/sec: %.1f",
|
|
||||||
fr, LODbias, totpoly, totpoly * fr);
|
|
||||||
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
|
||||||
glDisable(GL_FOG);
|
|
||||||
glShadeModel(GL_FLAT);
|
|
||||||
glDisable(GL_DEPTH_TEST);
|
|
||||||
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
glPushMatrix();
|
|
||||||
glLoadIdentity();
|
|
||||||
glOrtho(-0.5, 639.5, -0.5, 479.5, -1.0, 1.0);
|
|
||||||
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
glLoadIdentity();
|
|
||||||
|
|
||||||
glColor3f(1.0, 0.0, 0.0);
|
|
||||||
glRasterPos2i(10, 10);
|
|
||||||
printstring(GLUT_BITMAP_HELVETICA_18, frbuf);
|
|
||||||
glRasterPos2i(350, 470);
|
|
||||||
printstring(GLUT_BITMAP_HELVETICA_10,
|
|
||||||
"IperS V1.0 Written by David Bucciarelli (tech.hmw@plus.it)");
|
|
||||||
|
|
||||||
if (help)
|
|
||||||
printhelp();
|
|
||||||
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
glPopMatrix();
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
|
|
||||||
glutSwapBuffers();
|
|
||||||
|
|
||||||
Frames++;
|
|
||||||
{
|
|
||||||
GLint t = glutGet(GLUT_ELAPSED_TIME);
|
|
||||||
if (t - T0 >= 2000) {
|
|
||||||
GLfloat seconds = (t - T0) / 1000.0;
|
|
||||||
fr = Frames / seconds;
|
|
||||||
T0 = t;
|
|
||||||
Frames = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int ac, char **av)
|
|
||||||
{
|
|
||||||
float fogcolor[4] = { 0.7, 0.7, 0.7, 1.0 };
|
|
||||||
|
|
||||||
fprintf(stderr,
|
|
||||||
"IperS V1.0\nWritten by David Bucciarelli (tech.hmw@plus.it)\n");
|
|
||||||
|
|
||||||
glutInitWindowPosition(0, 0);
|
|
||||||
glutInitWindowSize(WIDTH, HEIGHT);
|
|
||||||
glutInit(&ac, av);
|
|
||||||
|
|
||||||
glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
|
|
||||||
|
|
||||||
if (!(win = glutCreateWindow("IperS"))) {
|
|
||||||
fprintf(stderr, "Error, couldn't open window\n");
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
reshape(WIDTH, HEIGHT);
|
|
||||||
|
|
||||||
glShadeModel(GL_SMOOTH);
|
|
||||||
glEnable(GL_DEPTH_TEST);
|
|
||||||
glEnable(GL_CULL_FACE);
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
|
||||||
|
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
||||||
|
|
||||||
glEnable(GL_FOG);
|
|
||||||
glFogi(GL_FOG_MODE, GL_EXP2);
|
|
||||||
glFogfv(GL_FOG_COLOR, fogcolor);
|
|
||||||
|
|
||||||
glFogf(GL_FOG_DENSITY, 0.006);
|
|
||||||
|
|
||||||
glHint(GL_FOG_HINT, GL_NICEST);
|
|
||||||
|
|
||||||
inittextures();
|
|
||||||
initdlists();
|
|
||||||
initlight();
|
|
||||||
|
|
||||||
glClearColor(fogcolor[0], fogcolor[1], fogcolor[2], fogcolor[3]);
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
|
||||||
|
|
||||||
calcposobs();
|
|
||||||
|
|
||||||
glutReshapeFunc(reshape);
|
|
||||||
glutDisplayFunc(draw);
|
|
||||||
glutKeyboardFunc(key);
|
|
||||||
glutSpecialFunc(special);
|
|
||||||
glutIdleFunc(draw);
|
|
||||||
|
|
||||||
glutMainLoop();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: isosurf.c,v 1.15 2002/10/18 17:47:35 kschultz Exp $ */
|
/* $Id: isosurf.c,v 1.4 1999/10/21 16:39:06 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Display an isosurface of 3-D wind speed volume.
|
* Display an isosurface of 3-D wind speed volume.
|
||||||
@@ -25,99 +25,101 @@
|
|||||||
* Other options are available via the popup menu.
|
* Other options are available via the popup menu.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Log: isosurf.c,v $
|
||||||
|
* Revision 1.4 1999/10/21 16:39:06 brianp
|
||||||
|
* added -info command line option
|
||||||
|
*
|
||||||
|
* Revision 1.3 1999/09/08 22:14:31 brianp
|
||||||
|
* minor changes. always call compactify_arrays()
|
||||||
|
*
|
||||||
|
* Revision 1.2 1999/09/03 14:56:40 keithw
|
||||||
|
* Fog, displaylist and zoom operations
|
||||||
|
*
|
||||||
|
* Revision 3.4 1999/04/24 01:10:47 keithw
|
||||||
|
* clip planes, materials
|
||||||
|
*
|
||||||
|
* Revision 3.3 1999/03/31 19:42:14 keithw
|
||||||
|
* support for cva
|
||||||
|
*
|
||||||
|
* Revision 3.1 1998/11/01 20:30:20 brianp
|
||||||
|
* added benchmark feature (b key)
|
||||||
|
*
|
||||||
|
* Revision 3.0 1998/02/14 18:42:29 brianp
|
||||||
|
* initial rev
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#ifdef _WIN32
|
|
||||||
#include <windows.h>
|
|
||||||
#undef CLIP_MASK
|
|
||||||
#endif
|
|
||||||
#define GL_GLEXT_LEGACY
|
|
||||||
#include "GL/glut.h"
|
#include "GL/glut.h"
|
||||||
|
|
||||||
#include "readtex.c" /* I know, this is a hack. KW: me too. */
|
#include "../util/readtex.c" /* I know, this is a hack. KW: me too. */
|
||||||
#define TEXTURE_FILE "../images/reflect.rgb"
|
#define TEXTURE_FILE "../images/reflect.rgb"
|
||||||
|
|
||||||
#define LIT 0x00000001
|
#define LIT 0x1
|
||||||
#define UNLIT 0x00000002
|
#define UNLIT 0x2
|
||||||
#define REFLECT 0x00000004
|
#define TEXTURE 0x4
|
||||||
#define POINT_FILTER 0x00000008
|
#define NO_TEXTURE 0x8
|
||||||
#define LINEAR_FILTER 0x00000010
|
#define REFLECT 0x10
|
||||||
#define GLVERTEX 0x00000020
|
#define NO_REFLECT 0x20
|
||||||
#define DRAW_ELTS 0x00000040
|
#define POINT_FILTER 0x40
|
||||||
#define DRAW_ARRAYS 0x00000080
|
#define LINEAR_FILTER 0x80
|
||||||
#define ARRAY_ELT 0x00000100
|
#define GLVERTEX 0x100
|
||||||
#define LOCKED 0x00000200
|
#define DRAW_ARRAYS 0x200 /* or draw_elts, if compiled */
|
||||||
#define UNLOCKED 0x00000400
|
#define ARRAY_ELT 0x400
|
||||||
#define IMMEDIATE 0x00000800
|
#define COMPILED 0x800
|
||||||
#define DISPLAYLIST 0x00001000
|
#define IMMEDIATE 0x1000
|
||||||
#define SHADE_SMOOTH 0x00002000
|
#define SHADE_SMOOTH 0x2000
|
||||||
#define SHADE_FLAT 0x00004000
|
#define SHADE_FLAT 0x4000
|
||||||
#define TRIANGLES 0x00008000
|
#define TRIANGLES 0x8000
|
||||||
#define STRIPS 0x00010000
|
#define STRIPS 0x10000
|
||||||
#define POINTS 0x00020000
|
#define USER_CLIP 0x20000
|
||||||
#define USER_CLIP 0x00040000
|
#define NO_USER_CLIP 0x40000
|
||||||
#define NO_USER_CLIP 0x00080000
|
#define MATERIALS 0x80000
|
||||||
#define MATERIALS 0x00100000
|
#define NO_MATERIALS 0x100000
|
||||||
#define NO_MATERIALS 0x00200000
|
#define FOG 0x200000
|
||||||
#define FOG 0x00400000
|
#define NO_FOG 0x400000
|
||||||
#define NO_FOG 0x00800000
|
#define QUIT 0x800000
|
||||||
#define QUIT 0x01000000
|
#define DISPLAYLIST 0x1000000
|
||||||
#define GLINFO 0x02000000
|
|
||||||
#define STIPPLE 0x04000000
|
|
||||||
#define NO_STIPPLE 0x08000000
|
|
||||||
#define POLYGON_FILL 0x10000000
|
|
||||||
#define POLYGON_LINE 0x20000000
|
|
||||||
|
|
||||||
#define LIGHT_MASK (LIT|UNLIT|REFLECT)
|
#define LIGHT_MASK (LIT|UNLIT)
|
||||||
#define FILTER_MASK (POINT_FILTER|LINEAR_FILTER)
|
#define TEXTURE_MASK (TEXTURE|NO_TEXTURE)
|
||||||
#define RENDER_STYLE_MASK (GLVERTEX|DRAW_ARRAYS|DRAW_ELTS|ARRAY_ELT)
|
#define REFLECT_MASK (REFLECT|NO_REFLECT)
|
||||||
#define DLIST_MASK (IMMEDIATE|DISPLAYLIST)
|
#define FILTER_MASK (POINT_FILTER|LINEAR_FILTER)
|
||||||
#define LOCK_MASK (LOCKED|UNLOCKED)
|
#define RENDER_STYLE_MASK (GLVERTEX|DRAW_ARRAYS|ARRAY_ELT)
|
||||||
#define MATERIAL_MASK (MATERIALS|NO_MATERIALS)
|
#define COMPILED_MASK (COMPILED|IMMEDIATE|DISPLAYLIST)
|
||||||
#define PRIMITIVE_MASK (TRIANGLES|STRIPS|POINTS)
|
#define MATERIAL_MASK (MATERIALS|NO_MATERIALS)
|
||||||
#define CLIP_MASK (USER_CLIP|NO_USER_CLIP)
|
#define PRIMITIVE_MASK (TRIANGLES|STRIPS)
|
||||||
#define SHADE_MASK (SHADE_SMOOTH|SHADE_FLAT)
|
#define CLIP_MASK (USER_CLIP|NO_USER_CLIP)
|
||||||
#define FOG_MASK (FOG|NO_FOG)
|
#define SHADE_MASK (SHADE_SMOOTH|SHADE_FLAT)
|
||||||
#define STIPPLE_MASK (STIPPLE|NO_STIPPLE)
|
#define FOG_MASK (FOG|NO_FOG)
|
||||||
#define POLYGON_MASK (POLYGON_FILL|POLYGON_LINE)
|
|
||||||
|
|
||||||
#define MAXVERTS 10000
|
#define MAXVERTS 10000
|
||||||
static GLint maxverts = MAXVERTS;
|
|
||||||
static float data[MAXVERTS][6];
|
static float data[MAXVERTS][6];
|
||||||
static float compressed_data[MAXVERTS][6];
|
static float compressed_data[MAXVERTS][6];
|
||||||
static float expanded_data[MAXVERTS*3][6];
|
|
||||||
static GLuint indices[MAXVERTS];
|
static GLuint indices[MAXVERTS];
|
||||||
static GLuint tri_indices[MAXVERTS*3];
|
static GLuint tri_indices[MAXVERTS*3];
|
||||||
static GLuint strip_indices[MAXVERTS];
|
|
||||||
static GLfloat col[100][4];
|
static GLfloat col[100][4];
|
||||||
static GLint numverts, num_tri_verts, numuniq;
|
static GLint numverts, num_tri_verts, numuniq;
|
||||||
|
|
||||||
static GLfloat xrot;
|
static GLfloat xrot;
|
||||||
static GLfloat yrot;
|
static GLfloat yrot;
|
||||||
static GLfloat dist;
|
static GLfloat dist = -6;
|
||||||
static GLint state, allowed = ~0;
|
static GLint state, allowed = ~0;
|
||||||
static GLboolean doubleBuffer = GL_TRUE;
|
static GLboolean doubleBuffer = GL_TRUE;
|
||||||
static GLdouble plane[4];
|
static GLdouble plane[4] = {1.0, 0.0, -1.0, 0.0};
|
||||||
static GLuint surf1, dlist_state;
|
static GLuint surf1;
|
||||||
|
|
||||||
static GLboolean PrintInfo = GL_FALSE;
|
static GLboolean PrintInfo = GL_FALSE;
|
||||||
|
|
||||||
|
/* forward decl */
|
||||||
static GLubyte halftone[] = {
|
int BuildList( int mode );
|
||||||
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
|
|
||||||
0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
|
|
||||||
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
|
|
||||||
0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
|
|
||||||
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
|
|
||||||
0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
|
|
||||||
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
|
|
||||||
0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
|
|
||||||
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
|
|
||||||
0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
|
|
||||||
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55};
|
|
||||||
|
|
||||||
|
|
||||||
static void read_surface( char *filename )
|
static void read_surface( char *filename )
|
||||||
@@ -131,7 +133,7 @@ static void read_surface( char *filename )
|
|||||||
}
|
}
|
||||||
|
|
||||||
numverts = 0;
|
numverts = 0;
|
||||||
while (!feof(f) && numverts<maxverts) {
|
while (!feof(f) && numverts<MAXVERTS) {
|
||||||
fscanf( f, "%f %f %f %f %f %f",
|
fscanf( f, "%f %f %f %f %f %f",
|
||||||
&data[numverts][0], &data[numverts][1], &data[numverts][2],
|
&data[numverts][0], &data[numverts][1], &data[numverts][2],
|
||||||
&data[numverts][3], &data[numverts][4], &data[numverts][5] );
|
&data[numverts][3], &data[numverts][4], &data[numverts][5] );
|
||||||
@@ -145,32 +147,6 @@ static void read_surface( char *filename )
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void print_flags( const char *msg, GLuint flags )
|
|
||||||
{
|
|
||||||
fprintf(stderr,
|
|
||||||
"%s (0x%x): %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
|
|
||||||
msg, flags,
|
|
||||||
(flags & GLVERTEX) ? "glVertex, " : "",
|
|
||||||
(flags & DRAW_ARRAYS) ? "glDrawArrays, " : "",
|
|
||||||
(flags & DRAW_ELTS) ? "glDrawElements, " : "",
|
|
||||||
(flags & ARRAY_ELT) ? "glArrayElement, " : "",
|
|
||||||
(flags & LOCKED) ? "locked arrays, " : "",
|
|
||||||
(flags & TRIANGLES) ? "GL_TRIANGLES, " : "",
|
|
||||||
(flags & STRIPS) ? "GL_TRIANGLE_STRIP, " : "",
|
|
||||||
(flags & POINTS) ? "GL_POINTS, " : "",
|
|
||||||
(flags & DISPLAYLIST) ? "as a displaylist, " : "",
|
|
||||||
(flags & LIT) ? "lit, " : "",
|
|
||||||
(flags & UNLIT) ? "unlit, " : "",
|
|
||||||
(flags & REFLECT) ? "reflect, " : "",
|
|
||||||
(flags & SHADE_FLAT) ? "flat-shaded, " : "",
|
|
||||||
(flags & USER_CLIP) ? "user_clip, " : "",
|
|
||||||
(flags & MATERIALS) ? "materials, " : "",
|
|
||||||
(flags & FOG) ? "fog, " : "",
|
|
||||||
(flags & STIPPLE) ? "stipple, " : "",
|
|
||||||
(flags & POLYGON_LINE) ? "polygon mode line, " : "");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct data_idx {
|
struct data_idx {
|
||||||
float *data;
|
float *data;
|
||||||
@@ -314,20 +290,6 @@ static void compactify_arrays(void)
|
|||||||
free( ind );
|
free( ind );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void expand_arrays(void)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
int parity = 0;
|
|
||||||
for (i = 2 ; i < numverts ; i++, parity ^= 1) {
|
|
||||||
int v0 = i-2+parity;
|
|
||||||
int v1 = i-1-parity;
|
|
||||||
int v2 = i;
|
|
||||||
memcpy( expanded_data[(i-2)*3+0], data[v0], sizeof(data[0]) );
|
|
||||||
memcpy( expanded_data[(i-2)*3+1], data[v1], sizeof(data[0]) );
|
|
||||||
memcpy( expanded_data[(i-2)*3+2], data[v2], sizeof(data[0]) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static float myrand( float max )
|
static float myrand( float max )
|
||||||
{
|
{
|
||||||
return max*rand()/(RAND_MAX+1.0);
|
return max*rand()/(RAND_MAX+1.0);
|
||||||
@@ -338,7 +300,7 @@ static void make_tri_indices( void )
|
|||||||
{
|
{
|
||||||
unsigned int *v = tri_indices;
|
unsigned int *v = tri_indices;
|
||||||
unsigned int parity = 0;
|
unsigned int parity = 0;
|
||||||
int i, j;
|
unsigned int i, j;
|
||||||
|
|
||||||
for (j=2;j<numverts;j++,parity^=1) {
|
for (j=2;j<numverts;j++,parity^=1) {
|
||||||
if (parity) {
|
if (parity) {
|
||||||
@@ -361,43 +323,31 @@ static void make_tri_indices( void )
|
|||||||
col[j][1] = myrand(1);
|
col[j][1] = myrand(1);
|
||||||
col[j][0] = myrand(1);
|
col[j][0] = myrand(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < numverts ; i++)
|
|
||||||
strip_indices[i] = i;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MIN(x,y) (x < y) ? x : y
|
#define MIN(x,y) (x < y) ? x : y
|
||||||
|
|
||||||
static void draw_surface( unsigned int with_state )
|
static void draw_surface( int with_state )
|
||||||
{
|
{
|
||||||
GLint i, j;
|
GLuint i, j;
|
||||||
|
|
||||||
if (with_state & DISPLAYLIST) {
|
switch (with_state & (COMPILED_MASK|RENDER_STYLE_MASK|PRIMITIVE_MASK)) {
|
||||||
if ((with_state & (RENDER_STYLE_MASK|PRIMITIVE_MASK|MATERIAL_MASK)) !=
|
|
||||||
dlist_state) {
|
|
||||||
/*
|
|
||||||
*/
|
|
||||||
fprintf(stderr, "rebuilding displaylist\n");
|
|
||||||
|
|
||||||
if (dlist_state)
|
|
||||||
glDeleteLists( surf1, 1 );
|
|
||||||
|
|
||||||
dlist_state = with_state & (RENDER_STYLE_MASK|PRIMITIVE_MASK|
|
|
||||||
MATERIAL_MASK);
|
|
||||||
surf1 = glGenLists(1);
|
|
||||||
glNewList(surf1, GL_COMPILE);
|
|
||||||
draw_surface( dlist_state );
|
|
||||||
glEndList();
|
|
||||||
}
|
|
||||||
|
|
||||||
glCallList( surf1 );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (with_state & (RENDER_STYLE_MASK|PRIMITIVE_MASK)) {
|
|
||||||
#ifdef GL_EXT_vertex_array
|
#ifdef GL_EXT_vertex_array
|
||||||
|
|
||||||
case (DRAW_ELTS|TRIANGLES):
|
case (COMPILED|DRAW_ARRAYS|STRIPS):
|
||||||
|
glDrawElements( GL_TRIANGLE_STRIP, numverts, GL_UNSIGNED_INT, indices );
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case (COMPILED|ARRAY_ELT|STRIPS):
|
||||||
|
glBegin( GL_TRIANGLE_STRIP );
|
||||||
|
for (i = 0 ; i < numverts ; i++)
|
||||||
|
glArrayElement( indices[i] );
|
||||||
|
glEnd();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case (COMPILED|DRAW_ARRAYS|TRIANGLES):
|
||||||
|
case (IMMEDIATE|DRAW_ARRAYS|TRIANGLES):
|
||||||
if (with_state & MATERIALS) {
|
if (with_state & MATERIALS) {
|
||||||
for (j = i = 0 ; i < num_tri_verts ; i += 600, j++) {
|
for (j = i = 0 ; i < num_tri_verts ; i += 600, j++) {
|
||||||
GLuint nr = MIN(num_tri_verts-i, 600);
|
GLuint nr = MIN(num_tri_verts-i, 600);
|
||||||
@@ -409,13 +359,26 @@ static void draw_surface( unsigned int with_state )
|
|||||||
glDrawElements( GL_TRIANGLES, num_tri_verts, GL_UNSIGNED_INT,
|
glDrawElements( GL_TRIANGLES, num_tri_verts, GL_UNSIGNED_INT,
|
||||||
tri_indices );
|
tri_indices );
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (DRAW_ARRAYS|TRIANGLES):
|
/* Uses the original arrays (including duplicate elements):
|
||||||
glDrawArraysEXT( GL_TRIANGLES, 0, (numverts-2)*3 );
|
*/
|
||||||
|
case (IMMEDIATE|DRAW_ARRAYS|STRIPS):
|
||||||
|
glDrawArraysEXT( GL_TRIANGLE_STRIP, 0, numverts );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (ARRAY_ELT|TRIANGLES):
|
/* Uses the original arrays (including duplicate elements):
|
||||||
|
*/
|
||||||
|
case (IMMEDIATE|ARRAY_ELT|STRIPS):
|
||||||
|
glBegin( GL_TRIANGLE_STRIP );
|
||||||
|
for (i = 0 ; i < numverts ; i++)
|
||||||
|
glArrayElement( i );
|
||||||
|
glEnd();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case (IMMEDIATE|ARRAY_ELT|TRIANGLES):
|
||||||
|
case (COMPILED|ARRAY_ELT|TRIANGLES):
|
||||||
if (with_state & MATERIALS) {
|
if (with_state & MATERIALS) {
|
||||||
for (j = i = 0 ; i < num_tri_verts ; i += 600, j++) {
|
for (j = i = 0 ; i < num_tri_verts ; i += 600, j++) {
|
||||||
GLuint nr = MIN(num_tri_verts-i, 600);
|
GLuint nr = MIN(num_tri_verts-i, 600);
|
||||||
@@ -436,46 +399,7 @@ static void draw_surface( unsigned int with_state )
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case (IMMEDIATE|GLVERTEX|TRIANGLES):
|
||||||
/* Uses the original arrays (including duplicate elements):
|
|
||||||
*/
|
|
||||||
case (DRAW_ARRAYS|STRIPS):
|
|
||||||
glDrawArraysEXT( GL_TRIANGLE_STRIP, 0, numverts );
|
|
||||||
break;
|
|
||||||
case (DRAW_ELTS|STRIPS):
|
|
||||||
glDrawElements( GL_TRIANGLE_STRIP, numverts,
|
|
||||||
GL_UNSIGNED_INT, strip_indices );
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* Uses the original arrays (including duplicate elements):
|
|
||||||
*/
|
|
||||||
case (ARRAY_ELT|STRIPS):
|
|
||||||
glBegin( GL_TRIANGLE_STRIP );
|
|
||||||
for (i = 0 ; i < numverts ; i++)
|
|
||||||
glArrayElement( i );
|
|
||||||
glEnd();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case (DRAW_ARRAYS|POINTS):
|
|
||||||
glDrawArraysEXT( GL_POINTS, 0, numuniq );
|
|
||||||
break;
|
|
||||||
case (DRAW_ELTS|POINTS):
|
|
||||||
/* can use numuniq with strip_indices as strip_indices[i] == i.
|
|
||||||
*/
|
|
||||||
glDrawElements( GL_POINTS, numuniq,
|
|
||||||
GL_UNSIGNED_INT, strip_indices );
|
|
||||||
break;
|
|
||||||
case (ARRAY_ELT|POINTS):
|
|
||||||
/* just emit each unique element once:
|
|
||||||
*/
|
|
||||||
glBegin( GL_POINTS );
|
|
||||||
for (i = 0 ; i < numuniq ; i++)
|
|
||||||
glArrayElement( i );
|
|
||||||
glEnd();
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
case (GLVERTEX|TRIANGLES):
|
|
||||||
if (with_state & MATERIALS) {
|
if (with_state & MATERIALS) {
|
||||||
for (j = i = 0 ; i < num_tri_verts ; i += 600, j++) {
|
for (j = i = 0 ; i < num_tri_verts ; i += 600, j++) {
|
||||||
GLuint nr = MIN(num_tri_verts-i, 600);
|
GLuint nr = MIN(num_tri_verts-i, 600);
|
||||||
@@ -499,32 +423,24 @@ static void draw_surface( unsigned int with_state )
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (GLVERTEX|POINTS):
|
case (DISPLAYLIST|GLVERTEX|STRIPS):
|
||||||
/* Renders all points, but not in strip order... Shouldn't be a
|
if (!surf1)
|
||||||
* problem, but people may be confused as to why points are so
|
surf1 = BuildList( GL_COMPILE_AND_EXECUTE );
|
||||||
* much faster in this demo... And why cva doesn't help them...
|
else
|
||||||
*/
|
glCallList(surf1);
|
||||||
glBegin( GL_POINTS );
|
|
||||||
for ( i = 0 ; i < numuniq ; i++ ) {
|
|
||||||
glNormal3fv( &compressed_data[i][3] );
|
|
||||||
glVertex3fv( &compressed_data[i][0] );
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (GLVERTEX|STRIPS):
|
#endif
|
||||||
|
|
||||||
|
/* Uses the original arrays (including duplicate elements):
|
||||||
|
*/
|
||||||
|
default:
|
||||||
glBegin( GL_TRIANGLE_STRIP );
|
glBegin( GL_TRIANGLE_STRIP );
|
||||||
for (i=0;i<numverts;i++) {
|
for (i=0;i<numverts;i++) {
|
||||||
glNormal3fv( &data[i][3] );
|
glNormal3fv( &data[i][3] );
|
||||||
glVertex3fv( &data[i][0] );
|
glVertex3fv( &data[i][0] );
|
||||||
}
|
}
|
||||||
glEnd();
|
glEnd();
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
fprintf(stderr, "unimplemented mode %x...\n",
|
|
||||||
(with_state & (RENDER_STYLE_MASK|PRIMITIVE_MASK)));
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -538,6 +454,14 @@ static void Display(void)
|
|||||||
if (doubleBuffer) glutSwapBuffers();
|
if (doubleBuffer) glutSwapBuffers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int BuildList( int mode )
|
||||||
|
{
|
||||||
|
int rv = glGenLists(1);
|
||||||
|
glNewList(rv, mode );
|
||||||
|
draw_surface( IMMEDIATE|GLVERTEX|STRIPS );
|
||||||
|
glEndList();
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
/* KW: only do this when necessary, so CVA can re-use results.
|
/* KW: only do this when necessary, so CVA can re-use results.
|
||||||
*/
|
*/
|
||||||
@@ -611,14 +535,13 @@ static void InitMaterials(void)
|
|||||||
glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_mat_shininess);
|
glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_mat_shininess);
|
||||||
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_mat_specular);
|
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_mat_specular);
|
||||||
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, front_mat_diffuse);
|
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, front_mat_diffuse);
|
||||||
|
|
||||||
glPolygonStipple (halftone);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define UPDATE(o,n,mask) (o&=~mask, o|=n&mask)
|
#define UPDATE(o,n,mask) (o&=~mask, o|=n&mask)
|
||||||
#define CHANGED(o,n,mask) ((n&mask) && (n&mask) != (o&mask) )
|
#define CHANGED(o,n,mask) ((n&mask) && \
|
||||||
|
(n&mask) != (o&mask) ? UPDATE(o,n,mask) : 0)
|
||||||
|
|
||||||
static void ModeMenu(int m)
|
static void ModeMenu(int m)
|
||||||
{
|
{
|
||||||
@@ -629,15 +552,7 @@ static void ModeMenu(int m)
|
|||||||
if (m==QUIT)
|
if (m==QUIT)
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|
||||||
if (m==GLINFO) {
|
|
||||||
printf("GL_VERSION: %s\n", (char *) glGetString(GL_VERSION));
|
|
||||||
printf("GL_EXTENSIONS: %s\n", (char *) glGetString(GL_EXTENSIONS));
|
|
||||||
printf("GL_RENDERER: %s\n", (char *) glGetString(GL_RENDERER));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (CHANGED(state, m, FILTER_MASK)) {
|
if (CHANGED(state, m, FILTER_MASK)) {
|
||||||
UPDATE(state, m, FILTER_MASK);
|
|
||||||
if (m & LINEAR_FILTER) {
|
if (m & LINEAR_FILTER) {
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
@@ -648,29 +563,13 @@ static void ModeMenu(int m)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (CHANGED(state, m, LIGHT_MASK)) {
|
if (CHANGED(state, m, LIGHT_MASK)) {
|
||||||
UPDATE(state, m, LIGHT_MASK);
|
if (m & LIT)
|
||||||
if (m & LIT) {
|
|
||||||
glEnable(GL_LIGHTING);
|
glEnable(GL_LIGHTING);
|
||||||
glDisable(GL_TEXTURE_GEN_S);
|
else
|
||||||
glDisable(GL_TEXTURE_GEN_T);
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
|
||||||
}
|
|
||||||
else if (m & UNLIT) {
|
|
||||||
glDisable(GL_LIGHTING);
|
glDisable(GL_LIGHTING);
|
||||||
glDisable(GL_TEXTURE_GEN_S);
|
|
||||||
glDisable(GL_TEXTURE_GEN_T);
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
|
||||||
}
|
|
||||||
else if (m & REFLECT) {
|
|
||||||
glDisable(GL_LIGHTING);
|
|
||||||
glEnable(GL_TEXTURE_GEN_S);
|
|
||||||
glEnable(GL_TEXTURE_GEN_T);
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CHANGED(state, m, SHADE_MASK)) {
|
if (CHANGED(state, m, SHADE_MASK)) {
|
||||||
UPDATE(state, m, SHADE_MASK);
|
|
||||||
if (m & SHADE_SMOOTH)
|
if (m & SHADE_SMOOTH)
|
||||||
glShadeModel(GL_SMOOTH);
|
glShadeModel(GL_SMOOTH);
|
||||||
else
|
else
|
||||||
@@ -678,8 +577,24 @@ static void ModeMenu(int m)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (CHANGED(state, m, TEXTURE_MASK)) {
|
||||||
|
if (m & TEXTURE)
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
else
|
||||||
|
glDisable(GL_TEXTURE_2D);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CHANGED(state, m, REFLECT_MASK)) {
|
||||||
|
if (m & REFLECT) {
|
||||||
|
glEnable(GL_TEXTURE_GEN_S);
|
||||||
|
glEnable(GL_TEXTURE_GEN_T);
|
||||||
|
} else {
|
||||||
|
glDisable(GL_TEXTURE_GEN_S);
|
||||||
|
glDisable(GL_TEXTURE_GEN_T);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (CHANGED(state, m, CLIP_MASK)) {
|
if (CHANGED(state, m, CLIP_MASK)) {
|
||||||
UPDATE(state, m, CLIP_MASK);
|
|
||||||
if (m & USER_CLIP) {
|
if (m & USER_CLIP) {
|
||||||
glEnable(GL_CLIP_PLANE0);
|
glEnable(GL_CLIP_PLANE0);
|
||||||
} else {
|
} else {
|
||||||
@@ -688,127 +603,51 @@ static void ModeMenu(int m)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (CHANGED(state, m, FOG_MASK)) {
|
if (CHANGED(state, m, FOG_MASK)) {
|
||||||
UPDATE(state, m, FOG_MASK);
|
if (m & FOG)
|
||||||
if (m & FOG) {
|
{
|
||||||
glEnable(GL_FOG);
|
glEnable(GL_FOG);
|
||||||
|
printf("FOG enable\n");
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
glDisable(GL_FOG);
|
glDisable(GL_FOG);
|
||||||
}
|
printf("FOG disable\n");
|
||||||
}
|
|
||||||
|
|
||||||
if (CHANGED(state, m, STIPPLE_MASK)) {
|
|
||||||
UPDATE(state, m, STIPPLE_MASK);
|
|
||||||
if (m & STIPPLE) {
|
|
||||||
glEnable(GL_POLYGON_STIPPLE);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
glDisable(GL_POLYGON_STIPPLE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (CHANGED(state, m, POLYGON_MASK)) {
|
|
||||||
UPDATE(state, m, POLYGON_MASK);
|
|
||||||
if (m & POLYGON_FILL) {
|
|
||||||
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef GL_EXT_vertex_array
|
#ifdef GL_EXT_vertex_array
|
||||||
if (CHANGED(state, m, (LOCK_MASK|RENDER_STYLE_MASK|PRIMITIVE_MASK)))
|
if (CHANGED(state, m, (COMPILED_MASK|RENDER_STYLE_MASK|PRIMITIVE_MASK)))
|
||||||
{
|
{
|
||||||
if (m & (PRIMITIVE_MASK)) {
|
if ((m & (COMPILED_MASK|PRIMITIVE_MASK)) == (IMMEDIATE|STRIPS))
|
||||||
UPDATE(state, m, (PRIMITIVE_MASK));
|
{
|
||||||
}
|
glVertexPointerEXT( 3, GL_FLOAT, sizeof(data[0]), numverts, data );
|
||||||
|
glNormalPointerEXT( GL_FLOAT, sizeof(data[0]), numverts, &data[0][3]);
|
||||||
if (m & (RENDER_STYLE_MASK)) {
|
}
|
||||||
UPDATE(state, m, (RENDER_STYLE_MASK));
|
else
|
||||||
}
|
|
||||||
|
|
||||||
if (m & LOCK_MASK) {
|
|
||||||
UPDATE(state, m, (LOCK_MASK));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
print_flags("primitive", state & PRIMITIVE_MASK);
|
|
||||||
print_flags("render style", state & RENDER_STYLE_MASK);
|
|
||||||
|
|
||||||
if ((state & PRIMITIVE_MASK) != STRIPS &&
|
|
||||||
((state & RENDER_STYLE_MASK) == DRAW_ELTS ||
|
|
||||||
(state & RENDER_STYLE_MASK) == ARRAY_ELT ||
|
|
||||||
(state & PRIMITIVE_MASK) == POINTS))
|
|
||||||
{
|
{
|
||||||
fprintf(stderr, "enabling small arrays\n");
|
|
||||||
/* Rendering any primitive with draw-element/array-element
|
|
||||||
* --> Can't do strips here as ordering has been lost in
|
|
||||||
* compaction process...
|
|
||||||
*/
|
|
||||||
glVertexPointerEXT( 3, GL_FLOAT, sizeof(data[0]), numuniq,
|
glVertexPointerEXT( 3, GL_FLOAT, sizeof(data[0]), numuniq,
|
||||||
compressed_data );
|
compressed_data );
|
||||||
glNormalPointerEXT( GL_FLOAT, sizeof(data[0]), numuniq,
|
glNormalPointerEXT( GL_FLOAT, sizeof(data[0]), numuniq,
|
||||||
&compressed_data[0][3]);
|
&compressed_data[0][3]);
|
||||||
#ifdef GL_EXT_compiled_vertex_array
|
|
||||||
if (allowed & LOCKED) {
|
|
||||||
if (state & LOCKED) {
|
|
||||||
glLockArraysEXT( 0, numuniq );
|
|
||||||
} else {
|
|
||||||
glUnlockArraysEXT();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else if ((state & PRIMITIVE_MASK) == TRIANGLES &&
|
|
||||||
(state & RENDER_STYLE_MASK) == DRAW_ARRAYS) {
|
|
||||||
fprintf(stderr, "enabling big arrays\n");
|
|
||||||
/* Only get here for TRIANGLES and drawarrays
|
|
||||||
*/
|
|
||||||
glVertexPointerEXT( 3, GL_FLOAT, sizeof(data[0]), (numverts-2) * 3,
|
|
||||||
expanded_data );
|
|
||||||
glNormalPointerEXT( GL_FLOAT, sizeof(data[0]), (numverts-2) * 3,
|
|
||||||
&expanded_data[0][3]);
|
|
||||||
|
|
||||||
#ifdef GL_EXT_compiled_vertex_array
|
#ifdef GL_EXT_compiled_vertex_array
|
||||||
if (allowed & LOCKED) {
|
if (m & COMPILED) {
|
||||||
if (state & LOCKED) {
|
glLockArraysEXT( 0, numuniq );
|
||||||
glLockArraysEXT( 0, (numverts-2)*3 );
|
} else {
|
||||||
} else {
|
glUnlockArraysEXT();
|
||||||
glUnlockArraysEXT();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
fprintf(stderr, "enabling normal arrays\n");
|
|
||||||
glVertexPointerEXT( 3, GL_FLOAT, sizeof(data[0]), numverts, data );
|
|
||||||
glNormalPointerEXT( GL_FLOAT, sizeof(data[0]), numverts, &data[0][3]);
|
|
||||||
#ifdef GL_EXT_compiled_vertex_array
|
|
||||||
if (allowed & LOCKED) {
|
|
||||||
if (state & LOCKED) {
|
|
||||||
glLockArraysEXT( 0, numverts );
|
|
||||||
} else {
|
|
||||||
glUnlockArraysEXT();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (m & (RENDER_STYLE_MASK|PRIMITIVE_MASK)) {
|
||||||
if (m & DLIST_MASK) {
|
UPDATE(state, m, (RENDER_STYLE_MASK|PRIMITIVE_MASK));
|
||||||
UPDATE(state, m, DLIST_MASK);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m & MATERIAL_MASK) {
|
if (m & MATERIAL_MASK) {
|
||||||
UPDATE(state, m, MATERIAL_MASK);
|
UPDATE(state, m, MATERIAL_MASK);
|
||||||
}
|
}
|
||||||
|
|
||||||
print_flags("new flags", state);
|
|
||||||
|
|
||||||
glutPostRedisplay();
|
glutPostRedisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -818,19 +657,13 @@ static void Init(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
GLfloat fogColor[4] = {0.5,1.0,0.5,1.0};
|
GLfloat fogColor[4] = {0.5,1.0,0.5,1.0};
|
||||||
|
|
||||||
xrot = 0;
|
glClearColor(0.0, 0.0, 0.0, 0.0);
|
||||||
yrot = 0;
|
|
||||||
dist = -6;
|
|
||||||
plane[0] = 1.0;
|
|
||||||
plane[1] = 0.0;
|
|
||||||
plane[2] = -1.0;
|
|
||||||
plane[3] = 0.0;
|
|
||||||
|
|
||||||
glClearColor(0.0, 0.0, 1.0, 0.0);
|
|
||||||
glEnable( GL_DEPTH_TEST );
|
glEnable( GL_DEPTH_TEST );
|
||||||
glEnable( GL_VERTEX_ARRAY_EXT );
|
glEnable( GL_VERTEX_ARRAY_EXT );
|
||||||
glEnable( GL_NORMAL_ARRAY_EXT );
|
glEnable( GL_NORMAL_ARRAY_EXT );
|
||||||
|
|
||||||
|
InitMaterials();
|
||||||
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
glMatrixMode(GL_PROJECTION);
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
glFrustum( -1.0, 1.0, -1.0, 1.0, 5, 25 );
|
glFrustum( -1.0, 1.0, -1.0, 1.0, 5, 25 );
|
||||||
@@ -839,16 +672,18 @@ static void Init(int argc, char *argv[])
|
|||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
glClipPlane(GL_CLIP_PLANE0, plane);
|
glClipPlane(GL_CLIP_PLANE0, plane);
|
||||||
|
|
||||||
InitMaterials();
|
|
||||||
|
|
||||||
set_matrix();
|
set_matrix();
|
||||||
|
|
||||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
|
||||||
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
|
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
|
||||||
|
|
||||||
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
|
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
|
||||||
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
|
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
|
||||||
|
|
||||||
|
if (!LoadRGBMipmaps(TEXTURE_FILE, GL_RGB)) {
|
||||||
|
printf("Error: couldn't load texture image\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
/* Green fog is easy to see */
|
/* Green fog is easy to see */
|
||||||
glFogi(GL_FOG_MODE,GL_EXP2);
|
glFogi(GL_FOG_MODE,GL_EXP2);
|
||||||
@@ -856,31 +691,21 @@ static void Init(int argc, char *argv[])
|
|||||||
glFogf(GL_FOG_DENSITY,0.15);
|
glFogf(GL_FOG_DENSITY,0.15);
|
||||||
glHint(GL_FOG_HINT,GL_DONT_CARE);
|
glHint(GL_FOG_HINT,GL_DONT_CARE);
|
||||||
|
|
||||||
{
|
|
||||||
static int firsttime = 1;
|
|
||||||
if (firsttime) {
|
|
||||||
firsttime = 0;
|
|
||||||
compactify_arrays();
|
|
||||||
expand_arrays();
|
|
||||||
make_tri_indices();
|
|
||||||
|
|
||||||
if (!LoadRGBMipmaps(TEXTURE_FILE, GL_RGB)) {
|
compactify_arrays();
|
||||||
printf("Error: couldn't load texture image\n");
|
make_tri_indices();
|
||||||
exit(1);
|
|
||||||
}
|
surf1 = BuildList( GL_COMPILE );
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ModeMenu(SHADE_SMOOTH|
|
ModeMenu(SHADE_SMOOTH|
|
||||||
LIT|
|
LIT|
|
||||||
|
NO_TEXTURE|
|
||||||
|
NO_REFLECT|
|
||||||
POINT_FILTER|
|
POINT_FILTER|
|
||||||
|
IMMEDIATE|
|
||||||
NO_USER_CLIP|
|
NO_USER_CLIP|
|
||||||
NO_MATERIALS|
|
NO_MATERIALS|
|
||||||
NO_FOG|
|
NO_FOG|
|
||||||
NO_STIPPLE|
|
|
||||||
IMMEDIATE|
|
|
||||||
STRIPS|
|
|
||||||
UNLOCKED|
|
|
||||||
GLVERTEX);
|
GLVERTEX);
|
||||||
|
|
||||||
if (PrintInfo) {
|
if (PrintInfo) {
|
||||||
@@ -913,11 +738,8 @@ static void Key( unsigned char key, int x, int y )
|
|||||||
case 's':
|
case 's':
|
||||||
ModeMenu((state ^ SHADE_MASK) & SHADE_MASK);
|
ModeMenu((state ^ SHADE_MASK) & SHADE_MASK);
|
||||||
break;
|
break;
|
||||||
case 't':
|
|
||||||
ModeMenu((state ^ STIPPLE_MASK) & STIPPLE_MASK);
|
|
||||||
break;
|
|
||||||
case 'l':
|
case 'l':
|
||||||
ModeMenu((state ^ LIGHT_MASK) & (LIT|UNLIT));
|
ModeMenu((state ^ LIGHT_MASK) & LIGHT_MASK);
|
||||||
break;
|
break;
|
||||||
case 'm':
|
case 'm':
|
||||||
ModeMenu((state ^ MATERIAL_MASK) & MATERIAL_MASK);
|
ModeMenu((state ^ MATERIAL_MASK) & MATERIAL_MASK);
|
||||||
@@ -925,12 +747,6 @@ static void Key( unsigned char key, int x, int y )
|
|||||||
case 'c':
|
case 'c':
|
||||||
ModeMenu((state ^ CLIP_MASK) & CLIP_MASK);
|
ModeMenu((state ^ CLIP_MASK) & CLIP_MASK);
|
||||||
break;
|
break;
|
||||||
case 'v':
|
|
||||||
ModeMenu((LOCKED|IMMEDIATE|DRAW_ELTS|TRIANGLES) & allowed);
|
|
||||||
break;
|
|
||||||
case 'V':
|
|
||||||
ModeMenu(UNLOCKED|IMMEDIATE|GLVERTEX|STRIPS);
|
|
||||||
break;
|
|
||||||
case 'b':
|
case 'b':
|
||||||
Benchmark(5.0, 0);
|
Benchmark(5.0, 0);
|
||||||
break;
|
break;
|
||||||
@@ -965,9 +781,7 @@ static void Key( unsigned char key, int x, int y )
|
|||||||
set_matrix();
|
set_matrix();
|
||||||
glutPostRedisplay();
|
glutPostRedisplay();
|
||||||
break;
|
break;
|
||||||
case ' ':
|
|
||||||
Init(0,0);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1013,15 +827,6 @@ static GLint Args(int argc, char **argv)
|
|||||||
else if (strcmp(argv[i], "-info") == 0) {
|
else if (strcmp(argv[i], "-info") == 0) {
|
||||||
PrintInfo = GL_TRUE;
|
PrintInfo = GL_TRUE;
|
||||||
}
|
}
|
||||||
else if (strcmp(argv[i], "-10") == 0) {
|
|
||||||
maxverts = 10;
|
|
||||||
}
|
|
||||||
else if (strcmp(argv[i], "-100") == 0) {
|
|
||||||
maxverts = 100;
|
|
||||||
}
|
|
||||||
else if (strcmp(argv[i], "-1000") == 0) {
|
|
||||||
maxverts = 1000;
|
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
printf("%s (Bad option).\n", argv[i]);
|
printf("%s (Bad option).\n", argv[i]);
|
||||||
return QUIT;
|
return QUIT;
|
||||||
@@ -1061,23 +866,22 @@ int main(int argc, char **argv)
|
|||||||
if (!strstr( extensions, "GL_EXT_vertex_array" ))
|
if (!strstr( extensions, "GL_EXT_vertex_array" ))
|
||||||
{
|
{
|
||||||
printf("Vertex arrays not supported by this renderer\n");
|
printf("Vertex arrays not supported by this renderer\n");
|
||||||
allowed &= ~(LOCKED|DRAW_ARRAYS|DRAW_ELTS|ARRAY_ELT);
|
allowed &= ~(COMPILED|DRAW_ARRAYS|ARRAY_ELT);
|
||||||
}
|
}
|
||||||
else if (!strstr( extensions, "GL_EXT_compiled_vertex_array" ))
|
else if (!strstr( extensions, "GL_EXT_compiled_vertex_array" ))
|
||||||
{
|
{
|
||||||
printf("Compiled vertex arrays not supported by this renderer\n");
|
printf("Compiled vertex arrays not supported by this renderer\n");
|
||||||
allowed &= ~LOCKED;
|
allowed &= ~COMPILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
Init(argc, argv);
|
Init(argc, argv);
|
||||||
ModeMenu(arg_mode);
|
ModeMenu(arg_mode);
|
||||||
|
|
||||||
glutCreateMenu(ModeMenu);
|
glutCreateMenu(ModeMenu);
|
||||||
glutAddMenuEntry("GL info", GLINFO);
|
glutAddMenuEntry("Lit", LIT|NO_TEXTURE|NO_REFLECT);
|
||||||
glutAddMenuEntry("", 0);
|
glutAddMenuEntry("Unlit", UNLIT|NO_TEXTURE|NO_REFLECT);
|
||||||
glutAddMenuEntry("Lit", LIT);
|
/* glutAddMenuEntry("Textured", TEXTURE); */
|
||||||
glutAddMenuEntry("Unlit", UNLIT);
|
glutAddMenuEntry("Reflect", TEXTURE|REFLECT);
|
||||||
glutAddMenuEntry("Reflect", REFLECT);
|
|
||||||
glutAddMenuEntry("", 0);
|
glutAddMenuEntry("", 0);
|
||||||
glutAddMenuEntry("Smooth", SHADE_SMOOTH);
|
glutAddMenuEntry("Smooth", SHADE_SMOOTH);
|
||||||
glutAddMenuEntry("Flat", SHADE_FLAT);
|
glutAddMenuEntry("Flat", SHADE_FLAT);
|
||||||
@@ -1085,42 +889,45 @@ int main(int argc, char **argv)
|
|||||||
glutAddMenuEntry("Fog", FOG);
|
glutAddMenuEntry("Fog", FOG);
|
||||||
glutAddMenuEntry("No Fog", NO_FOG);
|
glutAddMenuEntry("No Fog", NO_FOG);
|
||||||
glutAddMenuEntry("", 0);
|
glutAddMenuEntry("", 0);
|
||||||
glutAddMenuEntry("Stipple", STIPPLE);
|
|
||||||
glutAddMenuEntry("No Stipple", NO_STIPPLE);
|
|
||||||
glutAddMenuEntry("", 0);
|
|
||||||
glutAddMenuEntry("Polygon Mode Fill", POLYGON_FILL);
|
|
||||||
glutAddMenuEntry("Polygon Mode Line", POLYGON_LINE);
|
|
||||||
glutAddMenuEntry("", 0);
|
|
||||||
glutAddMenuEntry("Point Filtered", POINT_FILTER);
|
glutAddMenuEntry("Point Filtered", POINT_FILTER);
|
||||||
glutAddMenuEntry("Linear Filtered", LINEAR_FILTER);
|
glutAddMenuEntry("Linear Filtered", LINEAR_FILTER);
|
||||||
glutAddMenuEntry("", 0);
|
glutAddMenuEntry("", 0);
|
||||||
glutAddMenuEntry("GL_TRIANGLES", TRIANGLES);
|
glutAddMenuEntry("glVertex (STRIPS)", IMMEDIATE|GLVERTEX|STRIPS);
|
||||||
glutAddMenuEntry("GL_TRIANGLE_STRIPS", STRIPS);
|
glutAddMenuEntry("glVertex (TRIANGLES)", IMMEDIATE|GLVERTEX|TRIANGLES);
|
||||||
glutAddMenuEntry("GL_POINTS", POINTS);
|
|
||||||
glutAddMenuEntry("", 0);
|
glutAddMenuEntry("", 0);
|
||||||
glutAddMenuEntry("Displaylist", DISPLAYLIST);
|
glutAddMenuEntry("glVertex display list (STRIPS)",
|
||||||
glutAddMenuEntry("Immediate", IMMEDIATE);
|
DISPLAYLIST|GLVERTEX|STRIPS);
|
||||||
glutAddMenuEntry("", 0);
|
glutAddMenuEntry("", 0);
|
||||||
if (allowed & LOCKED) {
|
if (allowed & DRAW_ARRAYS) {
|
||||||
glutAddMenuEntry("Locked Arrays (CVA)", LOCKED);
|
glutAddMenuEntry("DrawArrays (STRIPS)",
|
||||||
glutAddMenuEntry("Unlocked Arrays", UNLOCKED);
|
IMMEDIATE|DRAW_ARRAYS|STRIPS);
|
||||||
|
glutAddMenuEntry("ArrayElement (STRIPS)",
|
||||||
|
IMMEDIATE|ARRAY_ELT|STRIPS);
|
||||||
|
glutAddMenuEntry("DrawElements (TRIANGLES)",
|
||||||
|
IMMEDIATE|DRAW_ARRAYS|TRIANGLES);
|
||||||
|
glutAddMenuEntry("ArrayElement (TRIANGLES)",
|
||||||
|
IMMEDIATE|ARRAY_ELT|TRIANGLES);
|
||||||
|
glutAddMenuEntry("", 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
if (allowed & COMPILED) {
|
||||||
|
glutAddMenuEntry("Compiled DrawElements (TRIANGLES)",
|
||||||
|
COMPILED|DRAW_ARRAYS|TRIANGLES);
|
||||||
|
glutAddMenuEntry("Compiled DrawElements (STRIPS)",
|
||||||
|
COMPILED|DRAW_ARRAYS|STRIPS);
|
||||||
|
glutAddMenuEntry("Compiled ArrayElement (TRIANGLES)",
|
||||||
|
COMPILED|ARRAY_ELT|TRIANGLES);
|
||||||
|
glutAddMenuEntry("Compiled ArrayElement (STRIPS)",
|
||||||
|
COMPILED|ARRAY_ELT|STRIPS);
|
||||||
glutAddMenuEntry("", 0);
|
glutAddMenuEntry("", 0);
|
||||||
}
|
}
|
||||||
glutAddMenuEntry("glVertex", GLVERTEX);
|
glutAddMenuEntry("Quit", QUIT);
|
||||||
if (allowed & DRAW_ARRAYS) {
|
|
||||||
glutAddMenuEntry("glDrawElements", DRAW_ELTS);
|
|
||||||
glutAddMenuEntry("glDrawArrays", DRAW_ARRAYS);
|
|
||||||
glutAddMenuEntry("glArrayElement", ARRAY_ELT);
|
|
||||||
}
|
|
||||||
glutAddMenuEntry("", 0);
|
|
||||||
glutAddMenuEntry("Quit", QUIT);
|
|
||||||
glutAttachMenu(GLUT_RIGHT_BUTTON);
|
glutAttachMenu(GLUT_RIGHT_BUTTON);
|
||||||
|
|
||||||
glutReshapeFunc(Reshape);
|
glutReshapeFunc(Reshape);
|
||||||
glutKeyboardFunc(Key);
|
glutKeyboardFunc(Key);
|
||||||
glutSpecialFunc(SpecialKey);
|
glutSpecialFunc(SpecialKey);
|
||||||
glutDisplayFunc(Display);
|
glutDisplayFunc(Display);
|
||||||
|
|
||||||
glutMainLoop();
|
glutMainLoop();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,236 +0,0 @@
|
|||||||
/*
|
|
||||||
* GL_EXT_texture_lod_bias demo
|
|
||||||
*
|
|
||||||
* Thanks to Michael Vance for implementing this extension in Mesa.
|
|
||||||
*
|
|
||||||
* Brian Paul
|
|
||||||
* 20 March 2000
|
|
||||||
*
|
|
||||||
* Copyright (C) 2000 Brian Paul All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
* and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is 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 Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS 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
|
|
||||||
* BRIAN PAUL 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <GL/glut.h>
|
|
||||||
#include <GL/glext.h>
|
|
||||||
|
|
||||||
#include "readtex.c" /* I know, this is a hack. */
|
|
||||||
|
|
||||||
#define TEXTURE_FILE "../images/girl.rgb"
|
|
||||||
|
|
||||||
static GLfloat Xrot = 0, Yrot = -30, Zrot = 0;
|
|
||||||
static GLboolean Anim = GL_TRUE;
|
|
||||||
static GLint Bias = 0, BiasStepSign = +1; /* ints avoid fp precision problem */
|
|
||||||
static GLint BiasMin = -400, BiasMax = 400;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
PrintString(const char *s)
|
|
||||||
{
|
|
||||||
while (*s) {
|
|
||||||
glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s);
|
|
||||||
s++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void Idle( void )
|
|
||||||
{
|
|
||||||
static int lastTime = 0;
|
|
||||||
int time = glutGet(GLUT_ELAPSED_TIME);
|
|
||||||
int step;
|
|
||||||
|
|
||||||
if (lastTime == 0)
|
|
||||||
lastTime = time;
|
|
||||||
else if (time - lastTime < 10)
|
|
||||||
return;
|
|
||||||
|
|
||||||
step = (time - lastTime) / 10 * BiasStepSign;
|
|
||||||
lastTime = time;
|
|
||||||
|
|
||||||
Bias += step;
|
|
||||||
if (Bias < BiasMin) {
|
|
||||||
Bias = BiasMin;
|
|
||||||
BiasStepSign = +1;
|
|
||||||
}
|
|
||||||
else if (Bias > BiasMax) {
|
|
||||||
Bias = BiasMax;
|
|
||||||
BiasStepSign = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
glutPostRedisplay();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void Display( void )
|
|
||||||
{
|
|
||||||
char str[100];
|
|
||||||
|
|
||||||
glClear( GL_COLOR_BUFFER_BIT );
|
|
||||||
|
|
||||||
glMatrixMode( GL_PROJECTION );
|
|
||||||
glLoadIdentity();
|
|
||||||
glOrtho(-1, 1, -1, 1, -1, 1);
|
|
||||||
glMatrixMode( GL_MODELVIEW );
|
|
||||||
glLoadIdentity();
|
|
||||||
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
|
||||||
glColor3f(1,1,1);
|
|
||||||
glRasterPos3f(-0.9, -0.9, 0.0);
|
|
||||||
sprintf(str, "Texture LOD Bias = %4.1f", Bias * 0.01);
|
|
||||||
PrintString(str);
|
|
||||||
|
|
||||||
glMatrixMode( GL_PROJECTION );
|
|
||||||
glLoadIdentity();
|
|
||||||
glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 );
|
|
||||||
glMatrixMode( GL_MODELVIEW );
|
|
||||||
glLoadIdentity();
|
|
||||||
glTranslatef( 0.0, 0.0, -8.0 );
|
|
||||||
|
|
||||||
glPushMatrix();
|
|
||||||
glRotatef(Xrot, 1, 0, 0);
|
|
||||||
glRotatef(Yrot, 0, 1, 0);
|
|
||||||
glRotatef(Zrot, 0, 0, 1);
|
|
||||||
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
|
||||||
glTexEnvf(GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, 0.01 * Bias);
|
|
||||||
|
|
||||||
glBegin(GL_POLYGON);
|
|
||||||
glTexCoord2f(0, 0); glVertex2f(-1, -1);
|
|
||||||
glTexCoord2f(2, 0); glVertex2f( 1, -1);
|
|
||||||
glTexCoord2f(2, 2); glVertex2f( 1, 1);
|
|
||||||
glTexCoord2f(0, 2); glVertex2f(-1, 1);
|
|
||||||
glEnd();
|
|
||||||
|
|
||||||
glPopMatrix();
|
|
||||||
|
|
||||||
glutSwapBuffers();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void Reshape( int width, int height )
|
|
||||||
{
|
|
||||||
glViewport( 0, 0, width, height );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void Key( unsigned char key, int x, int y )
|
|
||||||
{
|
|
||||||
const GLfloat step = 3.0;
|
|
||||||
(void) x;
|
|
||||||
(void) y;
|
|
||||||
switch (key) {
|
|
||||||
case 'a':
|
|
||||||
Anim = !Anim;
|
|
||||||
if (Anim)
|
|
||||||
glutIdleFunc(Idle);
|
|
||||||
else
|
|
||||||
glutIdleFunc(NULL);
|
|
||||||
break;
|
|
||||||
case 'z':
|
|
||||||
Zrot -= step;
|
|
||||||
break;
|
|
||||||
case 'Z':
|
|
||||||
Zrot += step;
|
|
||||||
break;
|
|
||||||
case 'b':
|
|
||||||
Bias -= 10;
|
|
||||||
break;
|
|
||||||
case 'B':
|
|
||||||
Bias += 10;
|
|
||||||
break;
|
|
||||||
case 27:
|
|
||||||
exit(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
glutPostRedisplay();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void SpecialKey( int key, int x, int y )
|
|
||||||
{
|
|
||||||
const GLfloat step = 3.0;
|
|
||||||
(void) x;
|
|
||||||
(void) y;
|
|
||||||
switch (key) {
|
|
||||||
case GLUT_KEY_UP:
|
|
||||||
Xrot -= step;
|
|
||||||
break;
|
|
||||||
case GLUT_KEY_DOWN:
|
|
||||||
Xrot += step;
|
|
||||||
break;
|
|
||||||
case GLUT_KEY_LEFT:
|
|
||||||
Yrot -= step;
|
|
||||||
break;
|
|
||||||
case GLUT_KEY_RIGHT:
|
|
||||||
Yrot += step;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
glutPostRedisplay();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void Init( void )
|
|
||||||
{
|
|
||||||
const char *exten = (const char *) glGetString(GL_EXTENSIONS);
|
|
||||||
GLfloat maxBias;
|
|
||||||
|
|
||||||
if (!strstr(exten, "GL_EXT_texture_lod_bias")) {
|
|
||||||
printf("Sorry, GL_EXT_texture_lod_bias not supported by this renderer.\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
|
||||||
if (!LoadRGBMipmaps(TEXTURE_FILE, GL_RGB)) {
|
|
||||||
printf("Error: could not load texture image %s\n", TEXTURE_FILE);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* mipmapping required for this extension */
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
|
||||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
|
|
||||||
glGetFloatv(GL_MAX_TEXTURE_LOD_BIAS_EXT, &maxBias);
|
|
||||||
printf("LOD bias range: [%g, %g]\n", -maxBias, maxBias);
|
|
||||||
BiasMin = -100 * maxBias;
|
|
||||||
BiasMax = 100 * maxBias;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int main( int argc, char *argv[] )
|
|
||||||
{
|
|
||||||
glutInit( &argc, argv );
|
|
||||||
glutInitWindowPosition( 0, 0 );
|
|
||||||
glutInitWindowSize( 350, 350 );
|
|
||||||
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
|
|
||||||
glutCreateWindow(argv[0]);
|
|
||||||
glutReshapeFunc( Reshape );
|
|
||||||
glutKeyboardFunc( Key );
|
|
||||||
glutSpecialFunc( SpecialKey );
|
|
||||||
glutDisplayFunc( Display );
|
|
||||||
if (Anim)
|
|
||||||
glutIdleFunc(Idle);
|
|
||||||
Init();
|
|
||||||
glutMainLoop();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
@@ -1,11 +1,8 @@
|
|||||||
/* $Id: morph3d.c,v 1.4 2000/06/27 17:04:43 brianp Exp $ */
|
/* $Id: morph3d.c,v 1.2.2.1 1999/12/15 13:00:24 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: morph3d.c,v $
|
* $Log: morph3d.c,v $
|
||||||
* Revision 1.4 2000/06/27 17:04:43 brianp
|
* Revision 1.2.2.1 1999/12/15 13:00:24 brianp
|
||||||
* fixed compiler warnings
|
|
||||||
*
|
|
||||||
* Revision 1.3 1999/12/15 13:00:45 brianp
|
|
||||||
* moved #define to column 0
|
* moved #define to column 0
|
||||||
*
|
*
|
||||||
* Revision 1.2 1999/09/17 12:27:01 brianp
|
* Revision 1.2 1999/09/17 12:27:01 brianp
|
||||||
@@ -833,7 +830,7 @@ static void pinit(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void INIT(void)
|
void INIT(void)
|
||||||
{
|
{
|
||||||
printf("Morph 3D - Shows morphing platonic polyhedra\n");
|
printf("Morph 3D - Shows morphing platonic polyhedra\n");
|
||||||
printf("Author: Marcelo Fernandes Vianna (vianna@cat.cbpf.br)\n\n");
|
printf("Author: Marcelo Fernandes Vianna (vianna@cat.cbpf.br)\n\n");
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: multiarb.c,v 1.11 2002/02/13 02:23:33 brianp Exp $ */
|
/* $Id: multiarb.c,v 1.3.2.2 2000/02/02 17:32:15 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* GL_ARB_multitexture demo
|
* GL_ARB_multitexture demo
|
||||||
@@ -8,7 +8,34 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* Brian Paul November 1998 This program is in the public domain.
|
* Brian Paul November 1998 This program is in the public domain.
|
||||||
* Modified on 12 Feb 2002 for > 2 texture units.
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Log: multiarb.c,v $
|
||||||
|
* Revision 1.3.2.2 2000/02/02 17:32:15 brianp
|
||||||
|
* changed > to >=
|
||||||
|
*
|
||||||
|
* Revision 1.3.2.1 2000/02/02 01:08:09 brianp
|
||||||
|
* limit Drift to [0, 1]
|
||||||
|
*
|
||||||
|
* Revision 1.3 1999/10/21 16:40:32 brianp
|
||||||
|
* added -info command line option
|
||||||
|
*
|
||||||
|
* Revision 1.2 1999/10/13 12:02:13 brianp
|
||||||
|
* use texture objects now
|
||||||
|
*
|
||||||
|
* Revision 1.1.1.1 1999/08/19 00:55:40 jtg
|
||||||
|
* Imported sources
|
||||||
|
*
|
||||||
|
* Revision 1.3 1999/03/28 18:20:49 brianp
|
||||||
|
* minor clean-up
|
||||||
|
*
|
||||||
|
* Revision 1.2 1998/11/05 04:34:04 brianp
|
||||||
|
* moved image files to ../images/ directory
|
||||||
|
*
|
||||||
|
* Revision 1.1 1998/11/03 01:36:33 brianp
|
||||||
|
* Initial revision
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -18,19 +45,18 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
|
|
||||||
#include "readtex.c" /* I know, this is a hack. */
|
#include "../util/readtex.c" /* I know, this is a hack. */
|
||||||
|
|
||||||
#define TEXTURE_1_FILE "../images/girl.rgb"
|
#define TEXTURE_1_FILE "../images/girl.rgb"
|
||||||
#define TEXTURE_2_FILE "../images/reflect.rgb"
|
#define TEXTURE_2_FILE "../images/reflect.rgb"
|
||||||
|
|
||||||
#define TEX0 1
|
#define TEX0 1
|
||||||
#define TEX7 8
|
#define TEX1 2
|
||||||
|
#define TEXBOTH 3
|
||||||
#define ANIMATE 10
|
#define ANIMATE 10
|
||||||
#define QUIT 100
|
#define QUIT 100
|
||||||
|
|
||||||
static GLboolean Animate = GL_TRUE;
|
static GLboolean Animate = GL_TRUE;
|
||||||
static GLint NumUnits = 1;
|
|
||||||
static GLboolean TexEnabled[8];
|
|
||||||
|
|
||||||
static GLfloat Drift = 0.0;
|
static GLfloat Drift = 0.0;
|
||||||
static GLfloat Xrot = 20.0, Yrot = 30.0, Zrot = 0.0;
|
static GLfloat Xrot = 20.0, Yrot = 30.0, Zrot = 0.0;
|
||||||
@@ -40,30 +66,24 @@ static GLfloat Xrot = 20.0, Yrot = 30.0, Zrot = 0.0;
|
|||||||
static void Idle( void )
|
static void Idle( void )
|
||||||
{
|
{
|
||||||
if (Animate) {
|
if (Animate) {
|
||||||
GLint i;
|
|
||||||
|
|
||||||
Drift += 0.05;
|
Drift += 0.05;
|
||||||
if (Drift >= 1.0)
|
if (Drift >= 1.0)
|
||||||
Drift = 0.0;
|
Drift = 0.0;
|
||||||
|
|
||||||
for (i = 0; i < NumUnits; i++) {
|
#ifdef GL_ARB_multitexture
|
||||||
glActiveTextureARB(GL_TEXTURE0_ARB + i);
|
glActiveTextureARB(GL_TEXTURE0_ARB);
|
||||||
glMatrixMode(GL_TEXTURE);
|
#endif
|
||||||
glLoadIdentity();
|
glMatrixMode(GL_TEXTURE);
|
||||||
if (i == 0) {
|
glLoadIdentity();
|
||||||
glTranslatef(Drift, 0.0, 0.0);
|
glTranslatef(Drift, 0.0, 0.0);
|
||||||
glScalef(2, 2, 2);
|
glMatrixMode(GL_MODELVIEW);
|
||||||
}
|
|
||||||
else if (i == 1) {
|
#ifdef GL_ARB_multitexture
|
||||||
glTranslatef(0.0, Drift, 0.0);
|
glActiveTextureARB(GL_TEXTURE1_ARB);
|
||||||
}
|
#endif
|
||||||
else {
|
glMatrixMode(GL_TEXTURE);
|
||||||
glTranslatef(0.5, 0.5, 0.0);
|
glLoadIdentity();
|
||||||
glRotatef(180.0 * Drift, 0, 0, 1);
|
glTranslatef(0.0, Drift, 0.0);
|
||||||
glScalef(1.0/i, 1.0/i, 1.0/i);
|
|
||||||
glTranslatef(-0.5, -0.5, 0.0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
|
||||||
glutPostRedisplay();
|
glutPostRedisplay();
|
||||||
@@ -73,30 +93,37 @@ static void Idle( void )
|
|||||||
|
|
||||||
static void DrawObject(void)
|
static void DrawObject(void)
|
||||||
{
|
{
|
||||||
GLint i;
|
|
||||||
|
|
||||||
if (!TexEnabled[0] && !TexEnabled[1])
|
|
||||||
glColor3f(0.1, 0.1, 0.1); /* add onto this */
|
|
||||||
else
|
|
||||||
glColor3f(1, 1, 1); /* modulate this */
|
|
||||||
|
|
||||||
glBegin(GL_QUADS);
|
glBegin(GL_QUADS);
|
||||||
|
|
||||||
for (i = 0; i < NumUnits; i++)
|
#ifdef GL_ARB_multitexture
|
||||||
glMultiTexCoord2fARB(GL_TEXTURE0_ARB + i, 0.0, 0.0);
|
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.0, 0.0);
|
||||||
|
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.0, 0.0);
|
||||||
glVertex2f(-1.0, -1.0);
|
glVertex2f(-1.0, -1.0);
|
||||||
|
|
||||||
for (i = 0; i < NumUnits; i++)
|
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 2.0, 0.0);
|
||||||
glMultiTexCoord2fARB(GL_TEXTURE0_ARB + i, 1.0, 0.0);
|
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 1.0, 0.0);
|
||||||
glVertex2f(1.0, -1.0);
|
glVertex2f(1.0, -1.0);
|
||||||
|
|
||||||
for (i = 0; i < NumUnits; i++)
|
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 2.0, 2.0);
|
||||||
glMultiTexCoord2fARB(GL_TEXTURE0_ARB + i, 1.0, 1.0);
|
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 1.0, 1.0);
|
||||||
glVertex2f(1.0, 1.0);
|
glVertex2f(1.0, 1.0);
|
||||||
|
|
||||||
for (i = 0; i < NumUnits; i++)
|
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.0, 2.0);
|
||||||
glMultiTexCoord2fARB(GL_TEXTURE0_ARB + i, 0.0, 1.0);
|
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.0, 1.0);
|
||||||
glVertex2f(-1.0, 1.0);
|
glVertex2f(-1.0, 1.0);
|
||||||
|
#else
|
||||||
|
glTexCoord2f(0.0, 0.0);
|
||||||
|
glVertex2f(-1.0, -1.0);
|
||||||
|
|
||||||
|
glTexCoord2f(1.0, 0.0);
|
||||||
|
glVertex2f(1.0, -1.0);
|
||||||
|
|
||||||
|
glTexCoord2f(1.0, 1.0);
|
||||||
|
glVertex2f(1.0, 1.0);
|
||||||
|
|
||||||
|
glTexCoord2f(0.0, 1.0);
|
||||||
|
glVertex2f(-1.0, 1.0);
|
||||||
|
#endif
|
||||||
|
|
||||||
glEnd();
|
glEnd();
|
||||||
}
|
}
|
||||||
@@ -134,19 +161,16 @@ static void Reshape( int width, int height )
|
|||||||
|
|
||||||
static void ModeMenu(int entry)
|
static void ModeMenu(int entry)
|
||||||
{
|
{
|
||||||
if (entry >= TEX0 && entry <= TEX7) {
|
GLboolean enable0 = GL_FALSE, enable1 = GL_FALSE;
|
||||||
/* toggle */
|
if (entry==TEX0) {
|
||||||
GLint i = entry - TEX0;
|
enable0 = GL_TRUE;
|
||||||
TexEnabled[i] = !TexEnabled[i];
|
}
|
||||||
glActiveTextureARB(GL_TEXTURE0_ARB + i);
|
else if (entry==TEX1) {
|
||||||
if (TexEnabled[i])
|
enable1 = GL_TRUE;
|
||||||
glEnable(GL_TEXTURE_2D);
|
}
|
||||||
else
|
else if (entry==TEXBOTH) {
|
||||||
glDisable(GL_TEXTURE_2D);
|
enable0 = GL_TRUE;
|
||||||
printf("Enabled: ");
|
enable1 = GL_TRUE;
|
||||||
for (i = 0; i < NumUnits; i++)
|
|
||||||
printf("%d ", (int) TexEnabled[i]);
|
|
||||||
printf("\n");
|
|
||||||
}
|
}
|
||||||
else if (entry==ANIMATE) {
|
else if (entry==ANIMATE) {
|
||||||
Animate = !Animate;
|
Animate = !Animate;
|
||||||
@@ -155,6 +179,26 @@ static void ModeMenu(int entry)
|
|||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (entry != ANIMATE) {
|
||||||
|
#ifdef GL_ARB_multitexture
|
||||||
|
glActiveTextureARB(GL_TEXTURE0_ARB);
|
||||||
|
#endif
|
||||||
|
if (enable0) {
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
glDisable(GL_TEXTURE_2D);
|
||||||
|
|
||||||
|
#ifdef GL_ARB_multitexture
|
||||||
|
glActiveTextureARB(GL_TEXTURE1_ARB);
|
||||||
|
#endif
|
||||||
|
if (enable1) {
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
glDisable(GL_TEXTURE_2D);
|
||||||
|
}
|
||||||
|
|
||||||
glutPostRedisplay();
|
glutPostRedisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,8 +242,7 @@ static void SpecialKey( int key, int x, int y )
|
|||||||
|
|
||||||
static void Init( int argc, char *argv[] )
|
static void Init( int argc, char *argv[] )
|
||||||
{
|
{
|
||||||
GLuint texObj[8];
|
GLuint texObj[2];
|
||||||
GLint size, i;
|
|
||||||
|
|
||||||
const char *exten = (const char *) glGetString(GL_EXTENSIONS);
|
const char *exten = (const char *) glGetString(GL_EXTENSIONS);
|
||||||
if (!strstr(exten, "GL_ARB_multitexture")) {
|
if (!strstr(exten, "GL_ARB_multitexture")) {
|
||||||
@@ -207,82 +250,62 @@ static void Init( int argc, char *argv[] )
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &NumUnits);
|
/* allocate two texture objects */
|
||||||
printf("%d texture units supported\n", NumUnits);
|
glGenTextures(2, texObj);
|
||||||
if (NumUnits > 8)
|
|
||||||
NumUnits = 8;
|
|
||||||
|
|
||||||
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &size);
|
/* setup texture obj 0 */
|
||||||
printf("%d x %d max texture size\n", size, size);
|
glBindTexture(GL_TEXTURE_2D, texObj[0]);
|
||||||
|
#ifdef LINEAR_FILTER
|
||||||
|
/* linear filtering looks much nicer but is much slower for Mesa */
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
|
#else
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||||
|
|
||||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||||
|
|
||||||
for (i = 0; i < NumUnits; i++) {
|
if (!LoadRGBMipmaps(TEXTURE_1_FILE, GL_RGB)) {
|
||||||
if (i < 2)
|
printf("Error: couldn't load texture image\n");
|
||||||
TexEnabled[i] = GL_TRUE;
|
exit(1);
|
||||||
else
|
|
||||||
TexEnabled[i] = GL_FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* allocate two texture objects */
|
|
||||||
glGenTextures(NumUnits, texObj);
|
|
||||||
|
|
||||||
/* setup the texture objects */
|
/* setup texture obj 1 */
|
||||||
for (i = 0; i < NumUnits; i++) {
|
glBindTexture(GL_TEXTURE_2D, texObj[1]);
|
||||||
|
#ifdef LINEAR_FILTER
|
||||||
|
/* linear filtering looks much nicer but is much slower for Mesa */
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
|
#else
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
#endif
|
||||||
|
|
||||||
glActiveTextureARB(GL_TEXTURE0_ARB + i);
|
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||||
glBindTexture(GL_TEXTURE_2D, texObj[i]);
|
|
||||||
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
if (!LoadRGBMipmaps(TEXTURE_2_FILE, GL_RGB)) {
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
printf("Error: couldn't load texture image\n");
|
||||||
|
exit(1);
|
||||||
if (i == 0) {
|
|
||||||
if (!LoadRGBMipmaps(TEXTURE_1_FILE, GL_RGB)) {
|
|
||||||
printf("Error: couldn't load texture image\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (i == 1) {
|
|
||||||
if (!LoadRGBMipmaps(TEXTURE_2_FILE, GL_RGB)) {
|
|
||||||
printf("Error: couldn't load texture image\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
/* checker */
|
|
||||||
GLubyte image[8][8][3];
|
|
||||||
GLint i, j;
|
|
||||||
for (i = 0; i < 8; i++) {
|
|
||||||
for (j = 0; j < 8; j++) {
|
|
||||||
if ((i + j) & 1) {
|
|
||||||
image[i][j][0] = 50;
|
|
||||||
image[i][j][1] = 50;
|
|
||||||
image[i][j][2] = 50;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
image[i][j][0] = 25;
|
|
||||||
image[i][j][1] = 25;
|
|
||||||
image[i][j][2] = 25;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 8, 8, 0,
|
|
||||||
GL_RGB, GL_UNSIGNED_BYTE, (GLvoid *) image);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Bind texObj[i] to ith texture unit */
|
|
||||||
if (i < 2)
|
|
||||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
else
|
|
||||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD);
|
|
||||||
|
|
||||||
if (TexEnabled[i])
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* now bind the texture objects to the respective texture units */
|
||||||
|
#ifdef GL_ARB_multitexture
|
||||||
|
glActiveTextureARB(GL_TEXTURE0_ARB);
|
||||||
|
glBindTexture(GL_TEXTURE_2D, texObj[0]);
|
||||||
|
glActiveTextureARB(GL_TEXTURE1_ARB);
|
||||||
|
glBindTexture(GL_TEXTURE_2D, texObj[1]);
|
||||||
|
#endif
|
||||||
|
|
||||||
glShadeModel(GL_FLAT);
|
glShadeModel(GL_FLAT);
|
||||||
glClearColor(0.3, 0.3, 0.4, 1.0);
|
glClearColor(0.3, 0.3, 0.4, 1.0);
|
||||||
|
|
||||||
|
ModeMenu(TEXBOTH);
|
||||||
|
|
||||||
if (argc > 1 && strcmp(argv[1], "-info")==0) {
|
if (argc > 1 && strcmp(argv[1], "-info")==0) {
|
||||||
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
|
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
|
||||||
printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
|
printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
|
||||||
@@ -294,11 +317,8 @@ static void Init( int argc, char *argv[] )
|
|||||||
|
|
||||||
int main( int argc, char *argv[] )
|
int main( int argc, char *argv[] )
|
||||||
{
|
{
|
||||||
GLint i;
|
|
||||||
|
|
||||||
glutInit( &argc, argv );
|
glutInit( &argc, argv );
|
||||||
glutInitWindowSize( 300, 300 );
|
glutInitWindowSize( 300, 300 );
|
||||||
glutInitWindowPosition( 0, 0 );
|
|
||||||
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
|
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
|
||||||
glutCreateWindow(argv[0] );
|
glutCreateWindow(argv[0] );
|
||||||
|
|
||||||
@@ -311,12 +331,9 @@ int main( int argc, char *argv[] )
|
|||||||
glutIdleFunc( Idle );
|
glutIdleFunc( Idle );
|
||||||
|
|
||||||
glutCreateMenu(ModeMenu);
|
glutCreateMenu(ModeMenu);
|
||||||
|
glutAddMenuEntry("Texture 0", TEX0);
|
||||||
for (i = 0; i < NumUnits; i++) {
|
glutAddMenuEntry("Texture 1", TEX1);
|
||||||
char s[100];
|
glutAddMenuEntry("Multi-texture", TEXBOTH);
|
||||||
sprintf(s, "Toggle Texture %d", i);
|
|
||||||
glutAddMenuEntry(s, TEX0 + i);
|
|
||||||
}
|
|
||||||
glutAddMenuEntry("Toggle Animation", ANIMATE);
|
glutAddMenuEntry("Toggle Animation", ANIMATE);
|
||||||
glutAddMenuEntry("Quit", QUIT);
|
glutAddMenuEntry("Quit", QUIT);
|
||||||
glutAttachMenu(GLUT_RIGHT_BUTTON);
|
glutAttachMenu(GLUT_RIGHT_BUTTON);
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user