Compare commits
1246 Commits
mesa_3_3
...
mesa_4_0_2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aa5698e8ed | ||
|
|
cf4c9ada0d | ||
|
|
13c751a1c2 | ||
|
|
2af71a9acf | ||
|
|
5e0316f1a8 | ||
|
|
2366fb3b89 | ||
|
|
4ad3511865 | ||
|
|
44f6191507 | ||
|
|
aaf89c1cc7 | ||
|
|
7350dd7395 | ||
|
|
972815c414 | ||
|
|
0bb0b4df73 | ||
|
|
e07b4252ad | ||
|
|
b8855675ca | ||
|
|
6bf823ac2d | ||
|
|
af3f3080f9 | ||
|
|
bb47715320 | ||
|
|
cef9cdf3bb | ||
|
|
4493f41577 | ||
|
|
a4f3130a7f | ||
|
|
b2c3daa875 | ||
|
|
3d6951c097 | ||
|
|
db0ed6252b | ||
|
|
e6c59e8d0c | ||
|
|
378fcdb818 | ||
|
|
cd3f5d807a | ||
|
|
c3e908891c | ||
|
|
fdbaf407a7 | ||
|
|
5a86d3852c | ||
|
|
96d0be5cf2 | ||
|
|
0bd26c3c55 | ||
|
|
9f7053e913 | ||
|
|
9fa55ac457 | ||
|
|
101092ea11 | ||
|
|
da648d9afd | ||
|
|
7a3b7c9687 | ||
|
|
55f8fcba10 | ||
|
|
7419597f2f | ||
|
|
e784671997 | ||
|
|
c2165e799c | ||
|
|
40519b3eb3 | ||
|
|
dcda68de33 | ||
|
|
8308199e5d | ||
|
|
3b029b0c7d | ||
|
|
bff7677bd9 | ||
|
|
41796ecc25 | ||
|
|
94865a95b1 | ||
|
|
b8b23d4552 | ||
|
|
3245cfdf41 | ||
|
|
69e043158a | ||
|
|
3ce17ffb84 | ||
|
|
33b483f882 | ||
|
|
308a036114 | ||
|
|
4c97c84f7e | ||
|
|
d7bde06097 | ||
|
|
a00292bcfe | ||
|
|
7d729ffb58 | ||
|
|
aeb6c0af5e | ||
|
|
41110917d7 | ||
|
|
a58b1ed0a3 | ||
|
|
27b503cab8 | ||
|
|
d38cdd33d0 | ||
|
|
851acc6ea7 | ||
|
|
6115d784a7 | ||
|
|
fcca385bec | ||
|
|
06743cf365 | ||
|
|
b372b40bd1 | ||
|
|
3e3bd40614 | ||
|
|
3fb6d0bfde | ||
|
|
b36acc0423 | ||
|
|
287d6127d2 | ||
|
|
a8290d3a95 | ||
|
|
b26f972618 | ||
|
|
5bd6bad38d | ||
|
|
1ae3437156 | ||
|
|
93665403aa | ||
|
|
04613cb0bc | ||
|
|
e0a30e9d2d | ||
|
|
fd3da01ec3 | ||
|
|
40bbb8b7f3 | ||
|
|
00b7772bda | ||
|
|
0fc4d7e46d | ||
|
|
1261fed2c3 | ||
|
|
4f4f542bd7 | ||
|
|
550169ab62 | ||
|
|
ad83c33a4d | ||
|
|
a340c4f6ef | ||
|
|
781f27575c | ||
|
|
08e126fba6 | ||
|
|
b03241a552 | ||
|
|
e4efc983bd | ||
|
|
785bfd0c1e | ||
|
|
a0e4612f49 | ||
|
|
f6e1618f97 | ||
|
|
3a450fb4b0 | ||
|
|
43daa03ac1 | ||
|
|
cb69912494 | ||
|
|
b4518ee5d4 | ||
|
|
6ef05c2817 | ||
|
|
26d31abd87 | ||
|
|
7702362bda | ||
|
|
5141607357 | ||
|
|
a9e14e7bb9 | ||
|
|
5196a16629 | ||
|
|
7f37280955 | ||
|
|
986b7ec195 | ||
|
|
9012185ae8 | ||
|
|
2edf851932 | ||
|
|
1703b67ee0 | ||
|
|
9342fbe46e | ||
|
|
2f88c5fbd4 | ||
|
|
dc35f387ca | ||
|
|
597ec4040c | ||
|
|
51aa3d2f30 | ||
|
|
0c1f42ef29 | ||
|
|
06ae58eebb | ||
|
|
d8deb468f7 | ||
|
|
4aac60f691 | ||
|
|
e20d35d74a | ||
|
|
ed26c2d950 | ||
|
|
95681b4a85 | ||
|
|
17a5135fee | ||
|
|
69b71bc1ab | ||
|
|
9f6957e702 | ||
|
|
bf78731523 | ||
|
|
c527df81df | ||
|
|
ca2315d95b | ||
|
|
c4dd9e2a03 | ||
|
|
34174976c4 | ||
|
|
ff23c15bdc | ||
|
|
eb0ce107c7 | ||
|
|
bfe6c71b99 | ||
|
|
69f2ff5f38 | ||
|
|
f28c19da41 | ||
|
|
c132ca9774 | ||
|
|
8ca1772d4a | ||
|
|
ff5fe4836a | ||
|
|
f88e0898a1 | ||
|
|
3f2eedd634 | ||
|
|
158c7413fb | ||
|
|
0a96860e04 | ||
|
|
37b10249e5 | ||
|
|
589cee71b8 | ||
|
|
c6dcd5c4cf | ||
|
|
e1ec4771f1 | ||
|
|
917e942fe2 | ||
|
|
f427427ca8 | ||
|
|
7ed97d4ef4 | ||
|
|
267b9cc082 | ||
|
|
efb678da77 | ||
|
|
32aa05bfd6 | ||
|
|
299a71fe04 | ||
|
|
63da26bd62 | ||
|
|
dfb7ebf8a0 | ||
|
|
64681c1f82 | ||
|
|
8c3149f250 | ||
|
|
53e284bda1 | ||
|
|
f46ce82219 | ||
|
|
4256cf0175 | ||
|
|
986749a4ea | ||
|
|
07042d164b | ||
|
|
0739d6f158 | ||
|
|
2fd7a602a7 | ||
|
|
f97edb4ca3 | ||
|
|
3b0571dd5c | ||
|
|
c25f068355 | ||
|
|
3a05f42b28 | ||
|
|
2631c2a2de | ||
|
|
b2728086ec | ||
|
|
2e7644f13d | ||
|
|
9c3e7d2294 | ||
|
|
0878456b46 | ||
|
|
3de5462ab1 | ||
|
|
a7f8117153 | ||
|
|
45d21ca587 | ||
|
|
52d4c6ebb5 | ||
|
|
12e875ce4d | ||
|
|
5d26219288 | ||
|
|
40ba618a6f | ||
|
|
e8245c1409 | ||
|
|
ebc8b0aa5a | ||
|
|
7d63ac1e6b | ||
|
|
fca1ce3a26 | ||
|
|
e715c91000 | ||
|
|
e11f089f82 | ||
|
|
470d3cd4a2 | ||
|
|
3d16c369d9 | ||
|
|
b5bfe2f6ae | ||
|
|
439ded4e2a | ||
|
|
b66103971c | ||
|
|
bffae58175 | ||
|
|
3978d026ea | ||
|
|
8f47563559 | ||
|
|
47bcda78e2 | ||
|
|
d3788b60ae | ||
|
|
31c40f0905 | ||
|
|
954f511473 | ||
|
|
968e557dcd | ||
|
|
b1ee387ab5 | ||
|
|
220e77a3f7 | ||
|
|
0e94067d0d | ||
|
|
001f826f71 | ||
|
|
2427575c21 | ||
|
|
7bb6fcc19d | ||
|
|
5734421078 | ||
|
|
97856fd98a | ||
|
|
5ac8282a22 | ||
|
|
a573803ed3 | ||
|
|
78a03d3c45 | ||
|
|
497d6eab66 | ||
|
|
05ba9becc3 | ||
|
|
445e3cbd0d | ||
|
|
38112f5b60 | ||
|
|
80d5855692 | ||
|
|
448b88bb80 | ||
|
|
cfe52d8ae0 | ||
|
|
f2a50b141e | ||
|
|
8674e709ee | ||
|
|
62eb2e5909 | ||
|
|
fffc27015b | ||
|
|
7152305e0a | ||
|
|
7c4268176e | ||
|
|
2fc06af470 | ||
|
|
b6bcfc1f6a | ||
|
|
37f2d5e696 | ||
|
|
7b9fe820a3 | ||
|
|
c98541f54b | ||
|
|
e9479f24ab | ||
|
|
573dd2206b | ||
|
|
4742735a5c | ||
|
|
b14dcea418 | ||
|
|
94a6ec8f0c | ||
|
|
57c946096e | ||
|
|
fde5e2c5f1 | ||
|
|
1f20952a92 | ||
|
|
04120f6cce | ||
|
|
7c276329e8 | ||
|
|
edf8c06270 | ||
|
|
7cc49c2dc8 | ||
|
|
5ce1f374da | ||
|
|
675343c517 | ||
|
|
94666c4b55 | ||
|
|
ba57e5297d | ||
|
|
dcbe4d6d2f | ||
|
|
d22554d2ce | ||
|
|
097d2a025e | ||
|
|
e79f4b08d5 | ||
|
|
517903edcd | ||
|
|
306933046c | ||
|
|
30230a9cd1 | ||
|
|
9348cfc6e8 | ||
|
|
190d34874c | ||
|
|
62f75054cb | ||
|
|
7d5656bee7 | ||
|
|
7e975ba3aa | ||
|
|
9bed64cbf1 | ||
|
|
04ec0fd71e | ||
|
|
a0037ad8b3 | ||
|
|
a07e02fd01 | ||
|
|
0d6fd15840 | ||
|
|
a8b07a539b | ||
|
|
2a88946f9a | ||
|
|
afe4f5e6c1 | ||
|
|
e7df7cd6ad | ||
|
|
c123a9b2ed | ||
|
|
9babb73789 | ||
|
|
d9fc8e20e3 | ||
|
|
ac6daf97e1 | ||
|
|
df631a866d | ||
|
|
233aafbb30 | ||
|
|
fc1eadefeb | ||
|
|
976c26ca34 | ||
|
|
60174c1aef | ||
|
|
76a52525c7 | ||
|
|
bd9b4056d7 | ||
|
|
3d1df5554e | ||
|
|
9a90775010 | ||
|
|
b1a2393bb7 | ||
|
|
c8a27838a0 | ||
|
|
d922109eb3 | ||
|
|
978a2a0a43 | ||
|
|
2e5a20ae21 | ||
|
|
b22fe91cdb | ||
|
|
8b59b52297 | ||
|
|
58cfa0fd90 | ||
|
|
c6182ab54c | ||
|
|
94f494e780 | ||
|
|
ebc9f221b2 | ||
|
|
b5797a5085 | ||
|
|
696cd3d2b6 | ||
|
|
bb40d07830 | ||
|
|
5e1680ce1d | ||
|
|
636fb6cae7 | ||
|
|
84170351db | ||
|
|
76ca0f5232 | ||
|
|
554ceab8ec | ||
|
|
51184566fb | ||
|
|
c618005dcf | ||
|
|
3670e206a7 | ||
|
|
46af1f87c8 | ||
|
|
616f470629 | ||
|
|
2f65b316ff | ||
|
|
8a8d474068 | ||
|
|
dae1774e20 | ||
|
|
086f1b8428 | ||
|
|
24d9350897 | ||
|
|
73fc243420 | ||
|
|
172281dad8 | ||
|
|
e2df5de01c | ||
|
|
d4cff4f2fa | ||
|
|
bbf6a41d2f | ||
|
|
62c734f499 | ||
|
|
ae40b2281d | ||
|
|
3c03f3232d | ||
|
|
4fa5c1966a | ||
|
|
55180f4b92 | ||
|
|
f3b85c983f | ||
|
|
89480f7382 | ||
|
|
46e6c7ad54 | ||
|
|
48f3bdaeb3 | ||
|
|
fd28445e10 | ||
|
|
2a9eca0ed4 | ||
|
|
3b925120a6 | ||
|
|
277fd2e66e | ||
|
|
5356031129 | ||
|
|
4ae22b9721 | ||
|
|
461b990508 | ||
|
|
a1503b00f8 | ||
|
|
fba5e95468 | ||
|
|
96385fa155 | ||
|
|
274fc30d31 | ||
|
|
ac3958ea1b | ||
|
|
ee6cf4c6b0 | ||
|
|
601ce1d624 | ||
|
|
5b22aa1e33 | ||
|
|
f431a3fb4d | ||
|
|
bc07a99cc3 | ||
|
|
cff1cfd90d | ||
|
|
5c749d9e3c | ||
|
|
b23f5b5a5c | ||
|
|
77a4754d73 | ||
|
|
0cab1db776 | ||
|
|
1182ffeec3 | ||
|
|
fae7b778b8 | ||
|
|
571c8ecc8f | ||
|
|
ac54173414 | ||
|
|
5233ca8d30 | ||
|
|
8564f0536b | ||
|
|
47a28c0b4d | ||
|
|
206eda8b69 | ||
|
|
9c38ae35eb | ||
|
|
acc722d4b8 | ||
|
|
33170eeb18 | ||
|
|
4f76d0e215 | ||
|
|
8c2f6c5059 | ||
|
|
657323bf03 | ||
|
|
5e7591f94c | ||
|
|
9e5e5e35a0 | ||
|
|
4d99e5b2e7 | ||
|
|
f6df34ecbe | ||
|
|
d491f7bc14 | ||
|
|
1fb583c50d | ||
|
|
6738d2ac78 | ||
|
|
293b786cee | ||
|
|
af197f5f8f | ||
|
|
aba535e765 | ||
|
|
76f8274daf | ||
|
|
1b25898946 | ||
|
|
24ae7c4c1f | ||
|
|
e4276667da | ||
|
|
65c6ca9179 | ||
|
|
03d6c4c2db | ||
|
|
2db44ffe9d | ||
|
|
e9ba8e9214 | ||
|
|
cd1cefae91 | ||
|
|
cc22179cd8 | ||
|
|
1178ed817f | ||
|
|
688601911c | ||
|
|
ae47121fa3 | ||
|
|
1676268eab | ||
|
|
baace9ffca | ||
|
|
5ed63e0895 | ||
|
|
d3778fc129 | ||
|
|
a2162e4228 | ||
|
|
57b46ee6ea | ||
|
|
e67d632d99 | ||
|
|
5891a5dd55 | ||
|
|
0ce9f39d23 | ||
|
|
5fd13173a1 | ||
|
|
fabc30cfdd | ||
|
|
36822c50ad | ||
|
|
4a497e649b | ||
|
|
a5455bb374 | ||
|
|
6f365c21d7 | ||
|
|
775355a88a | ||
|
|
0fab0702b0 | ||
|
|
470a7b4874 | ||
|
|
a1164746e7 | ||
|
|
ae14499101 | ||
|
|
e4f84b4936 | ||
|
|
b20cea3902 | ||
|
|
51b36396ae | ||
|
|
abd5134965 | ||
|
|
bd58a63fe8 | ||
|
|
2c2a956a3a | ||
|
|
4b7d6f216b | ||
|
|
a7de8b6776 | ||
|
|
8a039ffe0a | ||
|
|
741c2e6434 | ||
|
|
4097590bc6 | ||
|
|
21f80baa35 | ||
|
|
e715c4a62d | ||
|
|
987caacbeb | ||
|
|
b5d3f2c521 | ||
|
|
529e48bb0f | ||
|
|
47a3c67fa6 | ||
|
|
71f2c401c5 | ||
|
|
84cac8441f | ||
|
|
e4a01fd7e1 | ||
|
|
655ba5d992 | ||
|
|
ffa10b1c3b | ||
|
|
645c1cef13 | ||
|
|
736fcbec47 | ||
|
|
5ff1c613ea | ||
|
|
b0bb4f6226 | ||
|
|
b95884c53d | ||
|
|
2a3cc7d907 | ||
|
|
c98da4d99a | ||
|
|
12c1bee87f | ||
|
|
e203c9cdd8 | ||
|
|
7cf50e137d | ||
|
|
bcebfe647f | ||
|
|
9228e17bb5 | ||
|
|
55ed11bac5 | ||
|
|
874ae72495 | ||
|
|
f6e0e92beb | ||
|
|
6f0ab1d868 | ||
|
|
e34d63f087 | ||
|
|
04a6c35819 | ||
|
|
7943b349d6 | ||
|
|
8bd0693101 | ||
|
|
6b1e4ea5a5 | ||
|
|
300e1056f5 | ||
|
|
3893e638e6 | ||
|
|
e7e38a47a8 | ||
|
|
e9482d004f | ||
|
|
d577248b89 | ||
|
|
ca78774fc7 | ||
|
|
569b5f32b9 | ||
|
|
758a21f104 | ||
|
|
1341f40dfe | ||
|
|
5439ab0683 | ||
|
|
89dae684aa | ||
|
|
47cf442c11 | ||
|
|
441a4af435 | ||
|
|
dbd0dad580 | ||
|
|
c47a5327d3 | ||
|
|
5071b0812f | ||
|
|
a51f07d5a1 | ||
|
|
9e48553ccc | ||
|
|
80532da3bf | ||
|
|
d57bcbed46 | ||
|
|
0ab16e0134 | ||
|
|
649971518c | ||
|
|
f89035b8c4 | ||
|
|
9bf68ad963 | ||
|
|
9cf779e7ac | ||
|
|
b8d091d350 | ||
|
|
53e4ebd4e3 | ||
|
|
d29e9dfe93 | ||
|
|
c6083e1dc4 | ||
|
|
b8f9980999 | ||
|
|
5759f53934 | ||
|
|
6d1055c967 | ||
|
|
1a3e034b12 | ||
|
|
a5cc6155d4 | ||
|
|
dbed202744 | ||
|
|
bd3d9b9d04 | ||
|
|
8b6a91a93f | ||
|
|
e296d7f0e4 | ||
|
|
ad51be1ad4 | ||
|
|
72deb502d7 | ||
|
|
bc69de5f21 | ||
|
|
7954a0cafd | ||
|
|
f2bcadec7c | ||
|
|
f50bbbf855 | ||
|
|
8acb7e9ea2 | ||
|
|
20dc7e6945 | ||
|
|
b9f2494bfc | ||
|
|
91979127ec | ||
|
|
7884aa151f | ||
|
|
a41edc31ce | ||
|
|
61cb081a35 | ||
|
|
78023e9808 | ||
|
|
7b9ff48d02 | ||
|
|
f2bfc66c5d | ||
|
|
cd487af90b | ||
|
|
5f2230c7bf | ||
|
|
bcf749e83a | ||
|
|
335634b807 | ||
|
|
e809379caf | ||
|
|
0a716cdff8 | ||
|
|
0ff31445f2 | ||
|
|
bc920f08f5 | ||
|
|
dae62174c5 | ||
|
|
c5e907e501 | ||
|
|
95d0fe9c11 | ||
|
|
c329f0824c | ||
|
|
43caa5c09a | ||
|
|
a2519c8aed | ||
|
|
1b3528fe63 | ||
|
|
652a14a215 | ||
|
|
a03463303d | ||
|
|
9e351d52ae | ||
|
|
5028216c81 | ||
|
|
531ac77263 | ||
|
|
fe5cb830b1 | ||
|
|
104c9fde4e | ||
|
|
70bb907286 | ||
|
|
adcc2ce92b | ||
|
|
7448e33768 | ||
|
|
5b976943ee | ||
|
|
f4a003c3ca | ||
|
|
0e14d6d68e | ||
|
|
16837e4219 | ||
|
|
ac4a41d198 | ||
|
|
3d49061bfc | ||
|
|
d92f615fe5 | ||
|
|
1018a16f39 | ||
|
|
f358988f2e | ||
|
|
04a374bd05 | ||
|
|
51c0c71811 | ||
|
|
27b0758a94 | ||
|
|
1832f1cc86 | ||
|
|
75978bd85e | ||
|
|
4dbd625eaf | ||
|
|
785c3469f4 | ||
|
|
f20ea88f88 | ||
|
|
11785d441d | ||
|
|
908be619fd | ||
|
|
8bce6a217a | ||
|
|
5a2f32b102 | ||
|
|
830bf65275 | ||
|
|
73ccfa0e9a | ||
|
|
3bfd0e6f9f | ||
|
|
31acab88f2 | ||
|
|
08b3ff10d3 | ||
|
|
df4fd765d5 | ||
|
|
8753bd8900 | ||
|
|
691f58930b | ||
|
|
29acfe5bd4 | ||
|
|
ad608fe44d | ||
|
|
cb6ae7b16b | ||
|
|
b570a180da | ||
|
|
0a31a67269 | ||
|
|
1c85aa3332 | ||
|
|
3518a7950f | ||
|
|
e3a7cc1f9e | ||
|
|
5ff4075a69 | ||
|
|
4c00e30ef0 | ||
|
|
54207dfde6 | ||
|
|
18acf6e6f1 | ||
|
|
3004bf8fd7 | ||
|
|
2b7c042525 | ||
|
|
72fc93302c | ||
|
|
bcfe3936a8 | ||
|
|
15eddf38fb | ||
|
|
a6c6fce7e8 | ||
|
|
0d47d26a68 | ||
|
|
62c24f315b | ||
|
|
a2ade36eb1 | ||
|
|
bf478280eb | ||
|
|
77ff5e038a | ||
|
|
608889d18f | ||
|
|
93de8d3d86 | ||
|
|
6ac852d45b | ||
|
|
33143303fe | ||
|
|
148bd34079 | ||
|
|
8a09c3a34b | ||
|
|
c818d6cce5 | ||
|
|
30c75badd1 | ||
|
|
d3abe14a3a | ||
|
|
2aacac9a5d | ||
|
|
01429fa46a | ||
|
|
36f3712e85 | ||
|
|
7d58f44f73 | ||
|
|
bb0830da9e | ||
|
|
bb95cf8934 | ||
|
|
bc80faa7d9 | ||
|
|
a9e2abdcfb | ||
|
|
2e1ed6447a | ||
|
|
9d205e3542 | ||
|
|
373aea11c8 | ||
|
|
67f7554232 | ||
|
|
347b3f0daf | ||
|
|
e116d3b3e5 | ||
|
|
7b0b2ec73a | ||
|
|
5e23af22f7 | ||
|
|
afc5699b08 | ||
|
|
ed39a43b8c | ||
|
|
2780ed4b97 | ||
|
|
3d5815f463 | ||
|
|
ee403ff0ba | ||
|
|
1b2fef5c28 | ||
|
|
8e48a232fe | ||
|
|
c41edfb7c4 | ||
|
|
3d9168025c | ||
|
|
f1f288182e | ||
|
|
16a8e986ce | ||
|
|
d082417dae | ||
|
|
5bfaa2f12e | ||
|
|
38e3675d7d | ||
|
|
0a59ca6cae | ||
|
|
38f28665bf | ||
|
|
53933fe9db | ||
|
|
29cded2654 | ||
|
|
c7aeb8bf1f | ||
|
|
46560b94ae | ||
|
|
3c257e187b | ||
|
|
fb8af6fc97 | ||
|
|
81e3955acf | ||
|
|
197c526d63 | ||
|
|
19d1e43261 | ||
|
|
a767bff929 | ||
|
|
5479e93031 | ||
|
|
8afa9e593b | ||
|
|
0a355dc010 | ||
|
|
25a5dc2ea7 | ||
|
|
06ed3f0a0a | ||
|
|
6dbb39025c | ||
|
|
5535aca5df | ||
|
|
0bc933a460 | ||
|
|
2bb04cad14 | ||
|
|
425fea1c34 | ||
|
|
577f318e0e | ||
|
|
63fae71713 | ||
|
|
355da23785 | ||
|
|
39557c3921 | ||
|
|
6d62d7f321 | ||
|
|
4672b2d88c | ||
|
|
b3678f1080 | ||
|
|
8b7dfa8526 | ||
|
|
7387394e59 | ||
|
|
19bf744556 | ||
|
|
3427e3547e | ||
|
|
df1e73af7a | ||
|
|
ea1bfcc80a | ||
|
|
2f177e2906 | ||
|
|
7acad72a1a | ||
|
|
8806915c3a | ||
|
|
a13df148df | ||
|
|
1a59875367 | ||
|
|
e9313a64c1 | ||
|
|
d2733fa196 | ||
|
|
8ac1f97e9e | ||
|
|
6f3178a3be | ||
|
|
1639518b64 | ||
|
|
935d5e5daa | ||
|
|
0299ad7532 | ||
|
|
c8cfbf7c19 | ||
|
|
2743def830 | ||
|
|
fa6be6e77a | ||
|
|
f5328c534d | ||
|
|
16cdc6ab12 | ||
|
|
56671022f9 | ||
|
|
b5f0de18b9 | ||
|
|
23f48064b8 | ||
|
|
815ad714b4 | ||
|
|
f3e3178751 | ||
|
|
68af9a0773 | ||
|
|
4e856077b7 | ||
|
|
6507d9249d | ||
|
|
e18599a6c3 | ||
|
|
92eac1c765 | ||
|
|
b048d8e084 | ||
|
|
7098924599 | ||
|
|
d9bf6ccce9 | ||
|
|
371ef9c058 | ||
|
|
ad7ce73609 | ||
|
|
264c6fd177 | ||
|
|
3fa4bd008c | ||
|
|
7ea33579e7 | ||
|
|
6b406bf09d | ||
|
|
2f9757f344 | ||
|
|
2c3d34c905 | ||
|
|
6e550baa0a | ||
|
|
bcc513ebf5 | ||
|
|
47489c0721 | ||
|
|
c6e2d29cde | ||
|
|
eb11fa73ec | ||
|
|
47cbbcc1b6 | ||
|
|
1bb327ebdb | ||
|
|
84c8964116 | ||
|
|
77cc447b96 | ||
|
|
24fab8e250 | ||
|
|
b082abc28f | ||
|
|
c6742cedee | ||
|
|
3709db0e17 | ||
|
|
3df1e04b10 | ||
|
|
2a938d3ab7 | ||
|
|
79b2d13ae2 | ||
|
|
d4eb665c60 | ||
|
|
467037de22 | ||
|
|
22144ab755 | ||
|
|
57ffddba98 | ||
|
|
de6a2e0d19 | ||
|
|
d8aa0269cd | ||
|
|
b1b4036656 | ||
|
|
53e4bf9afd | ||
|
|
ca8c6a0337 | ||
|
|
95e02a210e | ||
|
|
896e8bd2d7 | ||
|
|
417ed16a88 | ||
|
|
a28fa45ab7 | ||
|
|
01915e90e6 | ||
|
|
eac57f009e | ||
|
|
9cb9401e87 | ||
|
|
4da75f6d91 | ||
|
|
b51b0a847d | ||
|
|
249aebdd35 | ||
|
|
90ea526114 | ||
|
|
be3d539dac | ||
|
|
ac859a4cbd | ||
|
|
75280a2c74 | ||
|
|
89700a4abd | ||
|
|
0ceb82b838 | ||
|
|
3db5374e66 | ||
|
|
d395251b35 | ||
|
|
d49081302a | ||
|
|
3c646597cf | ||
|
|
a11c0bcf97 | ||
|
|
865322f931 | ||
|
|
d62269757b | ||
|
|
188f2949ea | ||
|
|
0883634178 | ||
|
|
19bbfc6263 | ||
|
|
85312e6db1 | ||
|
|
eb2b63877a | ||
|
|
6a2d72ecff | ||
|
|
6da33b1249 | ||
|
|
0fe593a71e | ||
|
|
d89c87ac40 | ||
|
|
b4203c1c49 | ||
|
|
0221e4d6c8 | ||
|
|
feb555af03 | ||
|
|
be3602da41 | ||
|
|
6a9851d72d | ||
|
|
bf8b5f99a1 | ||
|
|
2eb801cda2 | ||
|
|
8753b1c397 | ||
|
|
bed4c5bf58 | ||
|
|
18c516655f | ||
|
|
01a5dd879b | ||
|
|
6975540db2 | ||
|
|
806e20f463 | ||
|
|
511378b05d | ||
|
|
eb198d2702 | ||
|
|
1f57563b9d | ||
|
|
30038ecaa2 | ||
|
|
feca368c29 | ||
|
|
0d04827f6d | ||
|
|
74b775e14d | ||
|
|
dab76b4dc5 | ||
|
|
ea83bacf9c | ||
|
|
69c283e061 | ||
|
|
abe094e4a1 | ||
|
|
4eebc90a17 | ||
|
|
8bbc71f2eb | ||
|
|
0a0595f2d3 | ||
|
|
03ca5eb58f | ||
|
|
d6c3f73fb4 | ||
|
|
1399d7650d | ||
|
|
c499ce31ba | ||
|
|
0c75c4c417 | ||
|
|
2aadbf41df | ||
|
|
aaf5a9bb08 | ||
|
|
e75d2424e5 | ||
|
|
8f9a594ac8 | ||
|
|
f7e1dfeaef | ||
|
|
23e8d46e07 | ||
|
|
8a42f6b359 | ||
|
|
4539e9195d | ||
|
|
46b0988c67 | ||
|
|
2448fc7dee | ||
|
|
86ca15ece7 | ||
|
|
c6b2a92613 | ||
|
|
4e52e192b2 | ||
|
|
4de3ded28a | ||
|
|
4e492363f0 | ||
|
|
b5fb4fd55b | ||
|
|
88c5ceb650 | ||
|
|
c3a4dbfbd6 | ||
|
|
45323646bd | ||
|
|
10686f42c9 | ||
|
|
dc866313af | ||
|
|
8f28f4850b | ||
|
|
479fa1db1d | ||
|
|
a81b3532f7 | ||
|
|
3c84ab90f2 | ||
|
|
15bf1cd129 | ||
|
|
ccc8b9239c | ||
|
|
18ce0f1254 | ||
|
|
9db3f95ace | ||
|
|
1f12a07380 | ||
|
|
1ceda0f84f | ||
|
|
9a0b12ab00 | ||
|
|
b4736f5e17 | ||
|
|
5c55aa4e61 | ||
|
|
a1f1586bcb | ||
|
|
b8e1c70ec1 | ||
|
|
fb1565bcdd | ||
|
|
6830123a4c | ||
|
|
43bc364af4 | ||
|
|
03d967abb5 | ||
|
|
6628bc9cff | ||
|
|
dde2da64b5 | ||
|
|
78ad878b66 | ||
|
|
f378ab825c | ||
|
|
8e39ad2cd6 | ||
|
|
16461f7c53 | ||
|
|
d1baa05439 | ||
|
|
8fd9f1748d | ||
|
|
228748bc49 | ||
|
|
d8bc5a9eba | ||
|
|
db7a3318aa | ||
|
|
71270195d5 | ||
|
|
6e9f8b7cdb | ||
|
|
fe69cb4b9b | ||
|
|
6d689e8a69 | ||
|
|
eeb861df0b | ||
|
|
d68b699291 | ||
|
|
e56cc3970f | ||
|
|
f2515fa83e | ||
|
|
426628c374 | ||
|
|
326f9ddd8a | ||
|
|
ba70e59e82 | ||
|
|
961b7cad05 | ||
|
|
184a575a00 | ||
|
|
407b487017 | ||
|
|
d98fdad3bf | ||
|
|
5c1e7fa6ee | ||
|
|
4b90e68ac6 | ||
|
|
e5dfe384ad | ||
|
|
d6dd0fceb1 | ||
|
|
f3da389ae0 | ||
|
|
ab36c9aa1c | ||
|
|
9533fd1842 | ||
|
|
74b493a5e6 | ||
|
|
125fddc31d | ||
|
|
6140a8c65f | ||
|
|
4e3e9ac8fb | ||
|
|
2b2e62154d | ||
|
|
b6bcae5698 | ||
|
|
ab0c886a6c | ||
|
|
f2718b0966 | ||
|
|
39927e60ea | ||
|
|
c0bcd2ca99 | ||
|
|
547bbcabff | ||
|
|
d292b83d1a | ||
|
|
d43a5943d8 | ||
|
|
230928ad5f | ||
|
|
3fd01320f1 | ||
|
|
ab8b047ae5 | ||
|
|
8415686ea2 | ||
|
|
321f67c472 | ||
|
|
a087c7421b | ||
|
|
3f9ee180a8 | ||
|
|
e448d6cf0c | ||
|
|
ce656b6a0a | ||
|
|
bfa023921c | ||
|
|
d7fc376de8 | ||
|
|
7a1f3a37a1 | ||
|
|
b980b2eeb6 | ||
|
|
44d8de433e | ||
|
|
e9bf776711 | ||
|
|
78477947de | ||
|
|
ba8f6172bd | ||
|
|
c851646050 | ||
|
|
8cbc573eae | ||
|
|
2d7e25c9ff | ||
|
|
f4b02d1a26 | ||
|
|
58e9917053 | ||
|
|
f22c04cdae | ||
|
|
6517211e12 | ||
|
|
2fd9c8690f | ||
|
|
63cca75e63 | ||
|
|
1c768645c5 | ||
|
|
d14fce03f0 | ||
|
|
08dfacd425 | ||
|
|
6532db9868 | ||
|
|
3b399df638 | ||
|
|
c1d89d4391 | ||
|
|
a580e1adb7 | ||
|
|
3041d05bbc | ||
|
|
8446d1bab1 | ||
|
|
6f89984fed | ||
|
|
ef68e7bf71 | ||
|
|
88f3b89a2c | ||
|
|
e5d6fb20a5 | ||
|
|
123ff6549b | ||
|
|
bc28306f4a | ||
|
|
4e96ac080a | ||
|
|
a884b4b811 | ||
|
|
4292e9c06b | ||
|
|
20911cb17c | ||
|
|
1b686cedf4 | ||
|
|
376d022e4a | ||
|
|
ae8ec0b30d | ||
|
|
93259cdfa1 | ||
|
|
719344b23e | ||
|
|
770169f230 | ||
|
|
9ef50d5826 | ||
|
|
cab974cf6c | ||
|
|
d1ff1f6798 | ||
|
|
05ecec6f49 | ||
|
|
9da422c639 | ||
|
|
f1d6b38441 | ||
|
|
74e2dd38ed | ||
|
|
783d7dfcbf | ||
|
|
083e466f88 | ||
|
|
daabce72db | ||
|
|
4536021a62 | ||
|
|
a2003c2895 | ||
|
|
b0dbd3ed13 | ||
|
|
ac522d4756 | ||
|
|
813882526d | ||
|
|
3cbbef53bc | ||
|
|
062bc07bde | ||
|
|
75639547e7 | ||
|
|
b38ad54c41 | ||
|
|
3afb7a0f70 | ||
|
|
b04bcd14ee | ||
|
|
14586916b9 | ||
|
|
90f042ae8d | ||
|
|
8aa019d2ef | ||
|
|
ab6e78f3a0 | ||
|
|
89c9a4cbf2 | ||
|
|
2f911cdf17 | ||
|
|
67adba15a2 | ||
|
|
90f8ebfd8f | ||
|
|
2e5819270b | ||
|
|
ec15398681 | ||
|
|
23b1503d79 | ||
|
|
fed386cdc0 | ||
|
|
536ede7e00 | ||
|
|
1c6701e1e1 | ||
|
|
cba2ca94f1 | ||
|
|
06d05afdd6 | ||
|
|
fb7899bfec | ||
|
|
c1b97d91c7 | ||
|
|
83886a5a7f | ||
|
|
ab9e273c75 | ||
|
|
2ac44e2509 | ||
|
|
fac5fd258c | ||
|
|
7853901372 | ||
|
|
28861b192f | ||
|
|
7f55eb2b14 | ||
|
|
86ca491ade | ||
|
|
bfea97321c | ||
|
|
45015e4d79 | ||
|
|
4304790e3e | ||
|
|
6a35de3cc3 | ||
|
|
72ef753d5c | ||
|
|
297dfa0fbf | ||
|
|
a864432fb4 | ||
|
|
50478ded80 | ||
|
|
33b2dcf0da | ||
|
|
68656667b2 | ||
|
|
9aff6cfdc3 | ||
|
|
65dcc30599 | ||
|
|
b014986fdb | ||
|
|
ad2ac216fa | ||
|
|
00608a79dc | ||
|
|
cdfba5d375 | ||
|
|
30e5ef86a0 | ||
|
|
dbd1e2b599 | ||
|
|
22f5dc74c7 | ||
|
|
5e3bc0c2a2 | ||
|
|
fbe3726050 | ||
|
|
e3048be8ba | ||
|
|
0c000ec90c | ||
|
|
c34cea7de5 | ||
|
|
26d729581f | ||
|
|
5c0dccc896 | ||
|
|
baf3e77ee2 | ||
|
|
3c2e1022ed | ||
|
|
189476f265 | ||
|
|
ce2733b7cc | ||
|
|
2ac294e67f | ||
|
|
1487b3ea3e | ||
|
|
a852378a62 | ||
|
|
b12d8e3b0d | ||
|
|
54d7a74532 | ||
|
|
a13fab59ae | ||
|
|
ede37839ae | ||
|
|
9b5bb5939b | ||
|
|
6b2eab1869 | ||
|
|
912d3a04c1 | ||
|
|
5a9026c65d | ||
|
|
9e83e8c790 | ||
|
|
23caf20169 | ||
|
|
1795166732 | ||
|
|
0a82c75eab | ||
|
|
24a32627d9 | ||
|
|
30971cd098 | ||
|
|
4fae0260a6 | ||
|
|
f930330d5f | ||
|
|
c19d783e07 | ||
|
|
1e1aac034c | ||
|
|
6b8ae62d6b | ||
|
|
a2c4c98023 | ||
|
|
d45fdeae35 | ||
|
|
dd11e7664d | ||
|
|
7351049dba | ||
|
|
e7f55e76db | ||
|
|
bc58b7b409 | ||
|
|
b5012e1ee1 | ||
|
|
df37d5f2db | ||
|
|
8a9507442a | ||
|
|
78bb78d1c3 | ||
|
|
ba41b8afb1 | ||
|
|
6c4268204b | ||
|
|
db6aa58267 | ||
|
|
8e3366fda7 | ||
|
|
3d960a0d84 | ||
|
|
71be653edc | ||
|
|
5605385194 | ||
|
|
14425aeca1 | ||
|
|
7298e71360 | ||
|
|
2d595d7020 | ||
|
|
8d915cb6fb | ||
|
|
4f3e7cd3cf | ||
|
|
8fa6b363db | ||
|
|
790ea3dc7f | ||
|
|
861ca519ab | ||
|
|
b2ad0754b0 | ||
|
|
0070d398d1 | ||
|
|
7798374e47 | ||
|
|
14940c4ffe | ||
|
|
1e885f6e6c | ||
|
|
ec0585883a | ||
|
|
cd03ed4f54 | ||
|
|
7c20642b10 | ||
|
|
c6f348cbc9 | ||
|
|
a190221f70 | ||
|
|
8e4fa8c3e6 | ||
|
|
44bd53f259 | ||
|
|
fcb23bbd6e | ||
|
|
75d7425061 | ||
|
|
5f5632c424 | ||
|
|
861eb8eb16 | ||
|
|
563d26b247 | ||
|
|
b35ec1ca05 | ||
|
|
9f568e512f | ||
|
|
acdb6db846 | ||
|
|
fda3b1a4b1 | ||
|
|
724abeb058 | ||
|
|
e3a051e053 | ||
|
|
6e0f0f51e0 | ||
|
|
039bf534aa | ||
|
|
efeddebe81 | ||
|
|
365dc68c39 | ||
|
|
9499e017b7 | ||
|
|
caef4a35d6 | ||
|
|
6ad2c5b59a | ||
|
|
69676ac379 | ||
|
|
a96308c37d | ||
|
|
a457549967 | ||
|
|
193005393d | ||
|
|
ebb248aa5c | ||
|
|
699bc7b73d | ||
|
|
c893a015d8 | ||
|
|
ba643a2094 | ||
|
|
a897b335be | ||
|
|
1aa958bc9c | ||
|
|
1c4b3f4dfb | ||
|
|
7dd57a48e1 | ||
|
|
a14cbff8e5 | ||
|
|
fe5d67d95f | ||
|
|
ba58a6665f | ||
|
|
b4df56fcd9 | ||
|
|
7460cfabbc | ||
|
|
66202b75d5 | ||
|
|
7ceffd0e0d | ||
|
|
27a26bfc4b | ||
|
|
21d073d55a | ||
|
|
9a4a958a5c | ||
|
|
6cdf09749c | ||
|
|
0448488e11 | ||
|
|
5a501fbd09 | ||
|
|
5bb27edac0 | ||
|
|
edda9ae9fb | ||
|
|
ac018f5494 | ||
|
|
fc2427e81b | ||
|
|
e188b6e1f1 | ||
|
|
eb326f5f01 | ||
|
|
d0d7d62120 | ||
|
|
d475730357 | ||
|
|
a2d2aed64a | ||
|
|
9c7ca850fd | ||
|
|
a5b66333fb | ||
|
|
9f0bb59c53 | ||
|
|
cc50ed60b3 | ||
|
|
6aafd2491c | ||
|
|
ce938b307e | ||
|
|
d367216678 | ||
|
|
1873b567b2 | ||
|
|
1100b4daa3 | ||
|
|
35324a6c60 | ||
|
|
1791901468 | ||
|
|
fdf2033bda | ||
|
|
2c7e6334ec | ||
|
|
fa849a0e16 | ||
|
|
55590ee810 | ||
|
|
476609c539 | ||
|
|
16eb23a0cb | ||
|
|
22f1ca0131 | ||
|
|
9c05c0494d | ||
|
|
4f66498304 | ||
|
|
e92dd16605 | ||
|
|
eb6c6439ae | ||
|
|
37a6211795 | ||
|
|
574c456a5a | ||
|
|
f142a0830a | ||
|
|
643be95416 | ||
|
|
6542324cb0 | ||
|
|
b1394fa92a | ||
|
|
3b18a36f21 | ||
|
|
63c113a31b | ||
|
|
423f2b2884 | ||
|
|
b9b329d1e5 | ||
|
|
5e0bb98abd | ||
|
|
5aa1c1cd5f | ||
|
|
1c56fdc707 | ||
|
|
f3c399ec11 | ||
|
|
345a71a9cb | ||
|
|
4ed1d0b2c0 | ||
|
|
1ff933b452 | ||
|
|
98b3dd40f7 | ||
|
|
771b975528 | ||
|
|
4360bd7c76 | ||
|
|
cefc42f1ba | ||
|
|
008e4e7e39 | ||
|
|
0e52184c48 | ||
|
|
f7a4bcaf79 | ||
|
|
64a23a0f9c | ||
|
|
23316033db | ||
|
|
ae18872bc7 | ||
|
|
a94ee16534 | ||
|
|
881ec9ee67 | ||
|
|
8d4bd87c1a | ||
|
|
e4b684ce49 | ||
|
|
d49b34a233 | ||
|
|
b8cc150836 | ||
|
|
4df1f7c7ba | ||
|
|
82cfcfa63a | ||
|
|
b9466fca3e | ||
|
|
8f39dd1e62 | ||
|
|
038573aae7 | ||
|
|
b506d8753d | ||
|
|
9a2da667f3 | ||
|
|
399ae35ac6 | ||
|
|
9d3e5db9fc | ||
|
|
7f7b205259 | ||
|
|
48c6a6ecd2 | ||
|
|
e18e0e98fe | ||
|
|
46dbaec56a | ||
|
|
2bf5d9470d | ||
|
|
8ad306baf6 | ||
|
|
c4c639c9a4 | ||
|
|
18f73b622f | ||
|
|
16c3ea9459 | ||
|
|
693f81be4c | ||
|
|
38d3f3d660 | ||
|
|
724f2939f4 | ||
|
|
afa61173a8 | ||
|
|
37cfb3b5c2 | ||
|
|
f96ce6a707 | ||
|
|
c52fc9b49c | ||
|
|
9c27278acf | ||
|
|
f75d697c03 | ||
|
|
45f3634ce3 | ||
|
|
3a71d05e53 | ||
|
|
dca39e8911 | ||
|
|
01e54753ff | ||
|
|
bc6f07856f | ||
|
|
513d486e75 | ||
|
|
a805bb9691 | ||
|
|
bfc6ee1b13 | ||
|
|
e8a84a93aa | ||
|
|
bed573586e | ||
|
|
328cb0b512 | ||
|
|
b3fdfa1246 | ||
|
|
15915b03d0 | ||
|
|
5a0d3dc7b3 | ||
|
|
b92d64e150 | ||
|
|
f93b3dd69e | ||
|
|
116970154d | ||
|
|
8e053916c8 | ||
|
|
289d47eee5 | ||
|
|
148fb313c5 | ||
|
|
e8e20ae598 | ||
|
|
8aee2a3326 | ||
|
|
ef9025a641 | ||
|
|
5d3a95714c | ||
|
|
cf8eebee07 | ||
|
|
732dd6f417 | ||
|
|
147b08328a | ||
|
|
7e70874420 | ||
|
|
b5b5c52034 | ||
|
|
f4f4dab25a | ||
|
|
043654bbfb | ||
|
|
9b61162d43 | ||
|
|
3f8a70e5dd | ||
|
|
a6d46f6b99 | ||
|
|
d4b799b60c | ||
|
|
46e8a51383 | ||
|
|
6339e621f5 | ||
|
|
fa4525e289 | ||
|
|
b1097f24a8 | ||
|
|
e716184cae | ||
|
|
6f0294ca47 | ||
|
|
e98276c859 | ||
|
|
dff7924e25 | ||
|
|
094e2f1a67 | ||
|
|
7aac6d6b8e | ||
|
|
8deec7bf5f | ||
|
|
963946d3d7 | ||
|
|
d4f6695a3e | ||
|
|
042066887b | ||
|
|
507d83e4cc | ||
|
|
ddf69f247f | ||
|
|
585d191ae7 | ||
|
|
bd0f7f42d6 | ||
|
|
6f173cafbd | ||
|
|
b8d907a9bb | ||
|
|
ee2ef90b7f | ||
|
|
769439a23d | ||
|
|
00277e836d | ||
|
|
6d04725282 | ||
|
|
390488d12e | ||
|
|
85dc4e7a77 | ||
|
|
974e468e6d | ||
|
|
6998c71458 | ||
|
|
5c8de84f5f | ||
|
|
1357249aa9 |
698
Make-config
698
Make-config
File diff suppressed because it is too large
Load Diff
567
Makefile.X11
567
Makefile.X11
@@ -1,9 +1,9 @@
|
|||||||
# $Id: Makefile.X11,v 1.32 2000/07/21 16:36:35 brianp Exp $
|
# $Id: Makefile.X11,v 1.56.2.7 2002/03/29 14:42:29 brianp Exp $
|
||||||
|
|
||||||
# Mesa 3-D graphics library
|
# Mesa 3-D graphics library
|
||||||
# Version: 3.3
|
# Version: 4.0.2
|
||||||
#
|
#
|
||||||
# Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
# Copyright (C) 1999-2002 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,6 +42,7 @@ 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"
|
||||||
@@ -68,18 +69,15 @@ default:
|
|||||||
|
|
||||||
@echo " make linux for Linux systems, make shared .so libs"
|
@echo " make linux for Linux systems, make shared .so libs"
|
||||||
@echo " make linux-static for Linux systems, make static .a libs"
|
@echo " make linux-static for Linux systems, make static .a libs"
|
||||||
@echo " make linux-386 for Linux on Intel, make shared .so libs"
|
@echo " make linux-trace for Linux systems, with API trace extension"
|
||||||
@echo " make linux-386-static for Linux on Intel, make static .a libs"
|
@echo " make linux-x86 for Linux on Intel, make shared .so 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-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-386-opt-V2-glide for Linux with 3Dfx Voodoo2 for GLQuake"
|
@echo " make linux-x86-glide for Linux w/ all x86 asm for Glide"
|
||||||
@echo " make linux-3dnow for Linux on AMD w/ 3DNow!"
|
|
||||||
@echo " make linux-3dnow-glide for Linux on AMD w/ 3DNow! for Glide"
|
|
||||||
@echo " make linux-katmai for Linux on PentiumIII w/ SSE"
|
|
||||||
@echo " make linux-katmai-glide for Linux on PentiumIII w/ SSE for Glide"
|
|
||||||
@echo " make linux-alpha for Linux on Alpha systems"
|
@echo " make linux-alpha for Linux on Alpha systems"
|
||||||
@echo " make linux-alpha-static for Linux on Alpha systems, static libs"
|
@echo " make linux-alpha-static for Linux on Alpha systems, static libs"
|
||||||
@echo " make linux-ppc for Linux on PowerPC systems"
|
@echo " make linux-ppc for Linux on PowerPC systems"
|
||||||
@@ -87,6 +85,8 @@ default:
|
|||||||
@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 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)"
|
||||||
@@ -135,17 +135,17 @@ default:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
aix aix-sl amix bsdos bsdos4 dgux freebsd freebsd-386 gcc \
|
# XXX we may have to split up this group of targets into those that
|
||||||
|
# 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 irix6-o32 irix6-o32-dso \
|
irix4 irix5 irix5-gcc irix5-dso \
|
||||||
linux-static-debug linux-elf-debug linux-prof linux-glide-debug \
|
linux linux-static linux-debug linux-x11-debug linux-static-debug linux-prof \
|
||||||
linux linux-static \
|
linux-x86 linux-x86-static linux-x86-debug \
|
||||||
linux-386 linux-386-static \
|
|
||||||
linux-glide linux-386-glide linux-386-opt-glide \
|
linux-glide linux-386-glide linux-386-opt-glide \
|
||||||
linux-386-opt-V2-glide \
|
linux-x86-glide linux-glide-debug linux-glide-prof \
|
||||||
linux-3dnow linux-3dnow-glide \
|
|
||||||
linux-katmai linux-katmai-glide \
|
|
||||||
linux-alpha-static linux-alpha \
|
linux-alpha-static linux-alpha \
|
||||||
linux-ppc-static linux-ppc \
|
linux-ppc-static linux-ppc \
|
||||||
linux-sparc \
|
linux-sparc \
|
||||||
@@ -160,11 +160,11 @@ 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
|
if [ -d src ] ; then touch src/depend ; fi
|
||||||
if [ -d src-glu ] ; then touch src-glu/depend ; fi
|
if [ -d si-glu ] ; then touch si-glu/depend ; fi
|
||||||
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
|
if [ -d widgets-sgi ] ; then touch widgets-sgi/depend ; fi
|
||||||
if [ -d src ] ; then cd src ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d src ] ; then cd src ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d src-glu ] ; then cd src-glu ; $(MAKE) -f Makefile.X11 $@ ; fi
|
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
|
||||||
@@ -172,12 +172,11 @@ sunos5-x11r6-gcc-sl ultrix-gcc unicos unixware uwin vistra:
|
|||||||
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-n32 irix6-n32-dso irix6-gcc-n32-sl irix-debug:
|
irix6-o32 irix6-o32-dso irix6-n32 irix6-n32-dso irix6-gcc-n32-sl irix-debug:
|
||||||
-mkdir lib32
|
-mkdir lib32
|
||||||
if [ -d src ] ; then touch src/depend ; fi
|
if [ -d src ] ; then touch src/depend ; fi
|
||||||
if [ -d src-glu ] ; then touch src-glu/depend ; fi
|
if [ -d src-glu ] ; then touch src-glu/depend ; fi
|
||||||
if [ -d src-glut ] ; then touch src-glut/depend ; fi
|
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
|
if [ -d widgets-sgi ] ; then touch widgets-sgi/depend ; fi
|
||||||
if [ -d src ] ; then cd src ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d src ] ; then cd src ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d src-glu ] ; then cd src-glu ; $(MAKE) -f Makefile.X11 $@ ; fi
|
if [ -d src-glu ] ; then cd src-glu ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
@@ -266,14 +265,14 @@ os2-x11:
|
|||||||
linux-ggi linux-386-ggi:
|
linux-ggi linux-386-ggi:
|
||||||
-mkdir lib
|
-mkdir lib
|
||||||
touch src/depend
|
touch src/depend
|
||||||
touch src-glu/depend
|
touch si-glu/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
|
if [ -d widgets-sgi ] ; then touch widgets-sgi/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
|
if [ -d src ] ; then cd src ; $(MAKE) -f Makefile.X11 $@ ; fi
|
||||||
if [ -d src/GGI/default ] ; then cd src/GGI/default ; $(MAKE) ; fi
|
if [ -d src/GGI/default ] ; then cd src/GGI/default ; $(MAKE) ; fi
|
||||||
if [ -d src/GGI/display ] ; then cd src/GGI/display ; $(MAKE) ; fi
|
if [ -d src/GGI/display ] ; then cd src/GGI/display ; $(MAKE) ; fi
|
||||||
if [ -d src-glut ] ; then cd src-glu ; $(MAKE) -f Makefile.X11 $@ ; fi
|
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 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
|
||||||
@@ -296,6 +295,11 @@ 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
|
||||||
@@ -305,6 +309,7 @@ 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/*~
|
||||||
@@ -316,234 +321,300 @@ clean:
|
|||||||
|
|
||||||
# Remove everything that can be remade
|
# Remove everything that can be remade
|
||||||
realclean: clean
|
realclean: clean
|
||||||
-rm -f lib/*
|
-rm -fr lib lib32 lib64
|
||||||
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-3.3
|
DIRECTORY = Mesa-4.0.2
|
||||||
LIB_NAME = MesaLib-3.3
|
LIB_NAME = MesaLib-4.0.2
|
||||||
DEMO_NAME = MesaDemos-3.3
|
DEMO_NAME = MesaDemos-4.0.2
|
||||||
GLU_NAME = MesaGLU-3.3
|
GLU_NAME = MesaGLU-4.0.2
|
||||||
GLUT_NAME = GLUT-3.7
|
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)/conf.h.in \
|
$(DIRECTORY)/common_rules.make \
|
||||||
$(DIRECTORY)/config.guess \
|
$(DIRECTORY)/conf.h.in \
|
||||||
$(DIRECTORY)/config.sub \
|
$(DIRECTORY)/config.guess \
|
||||||
$(DIRECTORY)/configure \
|
$(DIRECTORY)/config.sub \
|
||||||
$(DIRECTORY)/configure.in \
|
$(DIRECTORY)/configure \
|
||||||
$(DIRECTORY)/install-sh \
|
$(DIRECTORY)/configure.in \
|
||||||
$(DIRECTORY)/ltconfig \
|
$(DIRECTORY)/install-sh \
|
||||||
$(DIRECTORY)/ltmain.sh \
|
$(DIRECTORY)/ltconfig \
|
||||||
$(DIRECTORY)/missing \
|
$(DIRECTORY)/ltmain.sh \
|
||||||
$(DIRECTORY)/mkinstalldirs \
|
$(DIRECTORY)/missing \
|
||||||
$(DIRECTORY)/stamp-h.in \
|
$(DIRECTORY)/mkinstalldirs \
|
||||||
$(DIRECTORY)/docs/CONFIG \
|
$(DIRECTORY)/stamp-h.in \
|
||||||
$(DIRECTORY)/docs/CONFORM \
|
$(DIRECTORY)/docs/CONFIG \
|
||||||
$(DIRECTORY)/docs/COPYING \
|
$(DIRECTORY)/docs/CONFORM \
|
||||||
$(DIRECTORY)/docs/COPYRIGHT \
|
$(DIRECTORY)/docs/COPYING \
|
||||||
$(DIRECTORY)/docs/DEVINFO \
|
$(DIRECTORY)/docs/COPYRIGHT \
|
||||||
$(DIRECTORY)/docs/IAFA-PACKAGE \
|
$(DIRECTORY)/docs/DEVINFO \
|
||||||
$(DIRECTORY)/docs/INSTALL \
|
$(DIRECTORY)/docs/IAFA-PACKAGE \
|
||||||
$(DIRECTORY)/docs/INSTALL.GNU \
|
$(DIRECTORY)/docs/INSTALL \
|
||||||
$(DIRECTORY)/docs/README \
|
$(DIRECTORY)/docs/INSTALL.GNU \
|
||||||
$(DIRECTORY)/docs/README.* \
|
$(DIRECTORY)/docs/README \
|
||||||
$(DIRECTORY)/docs/RELNOTES* \
|
$(DIRECTORY)/docs/README.* \
|
||||||
$(DIRECTORY)/docs/VERSIONS \
|
$(DIRECTORY)/docs/RELNOTES* \
|
||||||
$(DIRECTORY)/docs/*.spec \
|
$(DIRECTORY)/docs/VERSIONS \
|
||||||
$(DIRECTORY)/bin/README \
|
$(DIRECTORY)/docs/*.spec \
|
||||||
$(DIRECTORY)/bin/mklib* \
|
$(DIRECTORY)/bin/README \
|
||||||
$(DIRECTORY)/*.BAT \
|
$(DIRECTORY)/bin/mklib* \
|
||||||
$(DIRECTORY)/*.bat \
|
$(DIRECTORY)/descrip.mms \
|
||||||
$(DIRECTORY)/descrip.mms \
|
$(DIRECTORY)/mms-config \
|
||||||
$(DIRECTORY)/mms-config \
|
$(DIRECTORY)/m4/*.m4 \
|
||||||
$(DIRECTORY)/xlib.opt \
|
$(DIRECTORY)/xlib.opt \
|
||||||
$(DIRECTORY)/STARTUP.MK \
|
$(DIRECTORY)/mesawin32.mak \
|
||||||
$(DIRECTORY)/mesawin32.mak \
|
$(DIRECTORY)/include/GL/internal/glcore.h \
|
||||||
$(DIRECTORY)/Names.win \
|
$(DIRECTORY)/include/GL/Makefile.in \
|
||||||
$(DIRECTORY)/win32-openstep.sh \
|
$(DIRECTORY)/include/GL/Makefile.am \
|
||||||
$(DIRECTORY)/common.dja \
|
$(DIRECTORY)/include/GL/dmesa.h \
|
||||||
$(DIRECTORY)/include/GL/Makefile.in \
|
$(DIRECTORY)/include/GL/amesa.h \
|
||||||
$(DIRECTORY)/include/GL/Makefile.am \
|
$(DIRECTORY)/include/GL/fxmesa.h \
|
||||||
$(DIRECTORY)/include/GL/dosmesa.h \
|
$(DIRECTORY)/include/GL/ggimesa.h \
|
||||||
$(DIRECTORY)/include/GL/amesa.h \
|
$(DIRECTORY)/include/GL/gl.h \
|
||||||
$(DIRECTORY)/include/GL/fxmesa.h \
|
$(DIRECTORY)/include/GL/glext.h \
|
||||||
$(DIRECTORY)/include/GL/ggimesa.h \
|
$(DIRECTORY)/include/GL/gl_mangle.h \
|
||||||
$(DIRECTORY)/include/GL/gl.h \
|
$(DIRECTORY)/include/GL/glu.h \
|
||||||
$(DIRECTORY)/include/GL/glext.h \
|
$(DIRECTORY)/include/GL/glu_mangle.h \
|
||||||
$(DIRECTORY)/include/GL/gl_mangle.h \
|
$(DIRECTORY)/include/GL/glx.h \
|
||||||
$(DIRECTORY)/include/GL/glu.h \
|
$(DIRECTORY)/include/GL/glxext.h \
|
||||||
$(DIRECTORY)/include/GL/glu_mangle.h \
|
$(DIRECTORY)/include/GL/glx_mangle.h \
|
||||||
$(DIRECTORY)/include/GL/glx.h \
|
$(DIRECTORY)/include/GL/mesa_wgl.h \
|
||||||
$(DIRECTORY)/include/GL/glx_mangle.h \
|
$(DIRECTORY)/include/GL/mglmesa.h \
|
||||||
$(DIRECTORY)/include/GL/mglmesa.h \
|
$(DIRECTORY)/include/GL/osmesa.h \
|
||||||
$(DIRECTORY)/include/GL/osmesa.h \
|
$(DIRECTORY)/include/GL/svgamesa.h \
|
||||||
$(DIRECTORY)/include/GL/svgamesa.h \
|
$(DIRECTORY)/include/GL/ugl*.h \
|
||||||
$(DIRECTORY)/include/GL/wmesa.h \
|
$(DIRECTORY)/include/GL/vms_x_fix.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/Makefile.in \
|
$(DIRECTORY)/include/GLView.h \
|
||||||
$(DIRECTORY)/include/Makefile.am \
|
$(DIRECTORY)/include/dmesadxe.h \
|
||||||
$(DIRECTORY)/src/Makefile* \
|
$(DIRECTORY)/include/Makefile.in \
|
||||||
$(DIRECTORY)/src/descrip.mms \
|
$(DIRECTORY)/include/Makefile.am \
|
||||||
$(DIRECTORY)/src/mms_depend \
|
$(DIRECTORY)/src/Makefile* \
|
||||||
$(DIRECTORY)/src/mesa.conf \
|
$(DIRECTORY)/src/libGL_la_SOURCES \
|
||||||
$(DIRECTORY)/src/*.def \
|
$(DIRECTORY)/src/descrip.mms \
|
||||||
$(DIRECTORY)/src/depend \
|
$(DIRECTORY)/src/mesa.conf \
|
||||||
$(DIRECTORY)/src/*.[chS] \
|
$(DIRECTORY)/src/*.def \
|
||||||
$(DIRECTORY)/src/Allegro/*.[ch] \
|
$(DIRECTORY)/src/depend \
|
||||||
$(DIRECTORY)/src/BeOS/*.cpp \
|
$(DIRECTORY)/src/*.[chS] \
|
||||||
$(DIRECTORY)/src/D3D/*.cpp \
|
$(DIRECTORY)/src/array_cache/*.[ch] \
|
||||||
$(DIRECTORY)/src/D3D/*.CPP \
|
$(DIRECTORY)/src/array_cache/Makefile* \
|
||||||
$(DIRECTORY)/src/D3D/*.h \
|
$(DIRECTORY)/src/array_cache/libMesaAC_la_SOURCES \
|
||||||
$(DIRECTORY)/src/D3D/*.H \
|
$(DIRECTORY)/src/math/*.[ch] \
|
||||||
$(DIRECTORY)/src/D3D/*.c \
|
$(DIRECTORY)/src/math/Makefile* \
|
||||||
$(DIRECTORY)/src/D3D/*.C \
|
$(DIRECTORY)/src/swrast/*.[ch] \
|
||||||
$(DIRECTORY)/src/D3D/MAKEFILE \
|
$(DIRECTORY)/src/swrast/Makefile* \
|
||||||
$(DIRECTORY)/src/D3D/*bat \
|
$(DIRECTORY)/src/swrast/libMesaSwrast_la_SOURCES \
|
||||||
$(DIRECTORY)/src/D3D/*DEF \
|
$(DIRECTORY)/src/swrast_setup/*.[ch] \
|
||||||
$(DIRECTORY)/src/DOS/DEPEND.DOS \
|
$(DIRECTORY)/src/swrast_setup/Makefile* \
|
||||||
$(DIRECTORY)/src/DOS/*.c \
|
$(DIRECTORY)/src/tnl/*.[ch] \
|
||||||
$(DIRECTORY)/src/FX/Makefile.am \
|
$(DIRECTORY)/src/tnl/Makefile* \
|
||||||
$(DIRECTORY)/src/FX/Makefile.in \
|
$(DIRECTORY)/src/tnl/libMesaTnl_la_SOURCES \
|
||||||
$(DIRECTORY)/src/FX/*.[ch] \
|
$(DIRECTORY)/src/tnl_dd/*.[ch] \
|
||||||
$(DIRECTORY)/src/FX/*.def \
|
$(DIRECTORY)/src/tnl_dd/imm/*.[ch] \
|
||||||
$(DIRECTORY)/src/FX/X86/Makefile.am \
|
$(DIRECTORY)/src/tnl_dd/imm/NOTES.imm \
|
||||||
$(DIRECTORY)/src/FX/X86/Makefile.in \
|
$(DIRECTORY)/src/windml/*.[ch] \
|
||||||
$(DIRECTORY)/src/FX/X86/*.[Shc] \
|
$(DIRECTORY)/src/windml/tornado/*.c \
|
||||||
$(DIRECTORY)/src/GGI/Makefile.am \
|
$(DIRECTORY)/src/windml/tornado/*.cdf \
|
||||||
$(DIRECTORY)/src/GGI/Makefile.in \
|
$(DIRECTORY)/src/windml/man3/*.3 \
|
||||||
$(DIRECTORY)/src/GGI/*.[ch] \
|
$(DIRECTORY)/src/windml/man3/*.html \
|
||||||
$(DIRECTORY)/src/GGI/ggimesa.conf.in \
|
$(DIRECTORY)/src/DOS/*.[ch] \
|
||||||
$(DIRECTORY)/src/GGI/default/*.c \
|
$(DIRECTORY)/src/BeOS/*.cpp \
|
||||||
$(DIRECTORY)/src/GGI/default/Makefile.am \
|
$(DIRECTORY)/src/FX/Makefile.am \
|
||||||
$(DIRECTORY)/src/GGI/default/Makefile.in \
|
$(DIRECTORY)/src/FX/Makefile.in \
|
||||||
$(DIRECTORY)/src/GGI/default/genkgi.conf.in \
|
$(DIRECTORY)/src/FX/libMesaFX_la_SOURCES \
|
||||||
$(DIRECTORY)/src/GGI/display/*.c \
|
$(DIRECTORY)/src/FX/*.[ch] \
|
||||||
$(DIRECTORY)/src/GGI/display/Makefile.am \
|
$(DIRECTORY)/src/FX/*.def \
|
||||||
$(DIRECTORY)/src/GGI/display/Makefile.in \
|
$(DIRECTORY)/src/FX/X86/Makefile.am \
|
||||||
$(DIRECTORY)/src/GGI/display/fbdev.conf.in \
|
$(DIRECTORY)/src/FX/X86/Makefile.in \
|
||||||
$(DIRECTORY)/src/GGI/include/Makefile.am \
|
$(DIRECTORY)/src/FX/X86/*.[Shc] \
|
||||||
$(DIRECTORY)/src/GGI/include/Makefile.in \
|
$(DIRECTORY)/src/GGI/Makefile.am \
|
||||||
$(DIRECTORY)/src/GGI/include/ggi/Makefile.am \
|
$(DIRECTORY)/src/GGI/Makefile.in \
|
||||||
$(DIRECTORY)/src/GGI/include/ggi/Makefile.in \
|
$(DIRECTORY)/src/GGI/*.[ch] \
|
||||||
$(DIRECTORY)/src/GGI/include/ggi/mesa/Makefile.am \
|
$(DIRECTORY)/src/GGI/ggimesa.conf.in \
|
||||||
$(DIRECTORY)/src/GGI/include/ggi/mesa/Makefile.in \
|
$(DIRECTORY)/src/GGI/default/*.c \
|
||||||
$(DIRECTORY)/src/GGI/include/ggi/mesa/*.h \
|
$(DIRECTORY)/src/GGI/default/Makefile.am \
|
||||||
$(DIRECTORY)/src/KNOWN_BUGS \
|
$(DIRECTORY)/src/GGI/default/Makefile.in \
|
||||||
$(DIRECTORY)/src/OSmesa/Makefile.am \
|
$(DIRECTORY)/src/GGI/default/genkgi.conf.in \
|
||||||
$(DIRECTORY)/src/OSmesa/Makefile.in \
|
$(DIRECTORY)/src/GGI/display/*.c \
|
||||||
$(DIRECTORY)/src/OSmesa/*.[ch] \
|
$(DIRECTORY)/src/GGI/display/Makefile.am \
|
||||||
$(DIRECTORY)/src/S3/*.[ch] \
|
$(DIRECTORY)/src/GGI/display/Makefile.in \
|
||||||
$(DIRECTORY)/src/S3/*.def \
|
$(DIRECTORY)/src/GGI/display/fbdev.conf.in \
|
||||||
$(DIRECTORY)/src/S3/*.mak \
|
$(DIRECTORY)/src/GGI/include/Makefile.am \
|
||||||
$(DIRECTORY)/src/S3/*.rc \
|
$(DIRECTORY)/src/GGI/include/Makefile.in \
|
||||||
$(DIRECTORY)/src/SVGA/Makefile.am \
|
$(DIRECTORY)/src/GGI/include/ggi/Makefile.am \
|
||||||
$(DIRECTORY)/src/SVGA/Makefile.in \
|
$(DIRECTORY)/src/GGI/include/ggi/Makefile.in \
|
||||||
$(DIRECTORY)/src/SVGA/*.[ch] \
|
$(DIRECTORY)/src/GGI/include/ggi/mesa/Makefile.am \
|
||||||
$(DIRECTORY)/src/Windows/*.[ch] \
|
$(DIRECTORY)/src/GGI/include/ggi/mesa/Makefile.in \
|
||||||
$(DIRECTORY)/src/Windows/*.def \
|
$(DIRECTORY)/src/GGI/include/ggi/mesa/*.h \
|
||||||
$(DIRECTORY)/src/X/Makefile.am \
|
$(DIRECTORY)/src/KNOWN_BUGS \
|
||||||
$(DIRECTORY)/src/X/Makefile.in \
|
$(DIRECTORY)/src/OSmesa/Makefile.am \
|
||||||
$(DIRECTORY)/src/X/*.[ch] \
|
$(DIRECTORY)/src/OSmesa/Makefile.in \
|
||||||
$(DIRECTORY)/src/X86/*.[ch] \
|
$(DIRECTORY)/src/OSmesa/Makefile.win \
|
||||||
$(DIRECTORY)/src/X86/Makefile.am \
|
$(DIRECTORY)/src/OSmesa/osmesa.def \
|
||||||
$(DIRECTORY)/src/X86/Makefile.in \
|
$(DIRECTORY)/src/OSmesa/*.[ch] \
|
||||||
$(DIRECTORY)/src/X86/*.m4 \
|
$(DIRECTORY)/src/SPARC/*.[chS] \
|
||||||
$(DIRECTORY)/src/X86/*.S \
|
$(DIRECTORY)/src/SPARC/Makefile.am \
|
||||||
$(DIRECTORY)/src-glu/README[12] \
|
$(DIRECTORY)/src/SPARC/Makefile.in \
|
||||||
$(DIRECTORY)/src-glu/Makefile* \
|
$(DIRECTORY)/src/SVGA/Makefile.am \
|
||||||
$(DIRECTORY)/src-glu/descrip.mms \
|
$(DIRECTORY)/src/SVGA/Makefile.in \
|
||||||
$(DIRECTORY)/src-glu/mms_depend \
|
$(DIRECTORY)/src/SVGA/*.[ch] \
|
||||||
$(DIRECTORY)/src-glu/*.def \
|
$(DIRECTORY)/src/Trace/*.[ch] \
|
||||||
$(DIRECTORY)/src-glu/depend \
|
$(DIRECTORY)/src/Trace/Makefile.am \
|
||||||
$(DIRECTORY)/src-glu/*.[ch] \
|
$(DIRECTORY)/src/Trace/Makefile.in \
|
||||||
$(DIRECTORY)/widgets-mesa/ChangeLog \
|
$(DIRECTORY)/src/Windows/*.[ch] \
|
||||||
$(DIRECTORY)/widgets-mesa/INSTALL \
|
$(DIRECTORY)/src/Windows/*.def \
|
||||||
$(DIRECTORY)/widgets-mesa/Makefile.in \
|
$(DIRECTORY)/src/X/Makefile.am \
|
||||||
$(DIRECTORY)/widgets-mesa/README \
|
$(DIRECTORY)/src/X/Makefile.in \
|
||||||
$(DIRECTORY)/widgets-mesa/TODO \
|
$(DIRECTORY)/src/X/*.[ch] \
|
||||||
$(DIRECTORY)/widgets-mesa/configure \
|
$(DIRECTORY)/src/X86/*.[ch] \
|
||||||
$(DIRECTORY)/widgets-mesa/demos/ChangeLog \
|
$(DIRECTORY)/src/X86/Makefile.am \
|
||||||
$(DIRECTORY)/widgets-mesa/demos/Cube \
|
$(DIRECTORY)/src/X86/Makefile.in \
|
||||||
$(DIRECTORY)/widgets-mesa/demos/Ed \
|
$(DIRECTORY)/src/X86/*.S \
|
||||||
$(DIRECTORY)/widgets-mesa/demos/Makefile.in \
|
$(DIRECTORY)/si-glu/Makefile.am \
|
||||||
$(DIRECTORY)/widgets-mesa/demos/Mcube \
|
$(DIRECTORY)/si-glu/Makefile.in \
|
||||||
$(DIRECTORY)/widgets-mesa/demos/Tea \
|
$(DIRECTORY)/si-glu/Makefile.X11 \
|
||||||
$(DIRECTORY)/widgets-mesa/demos/*.[ch] \
|
$(DIRECTORY)/si-glu/Makefile.win \
|
||||||
$(DIRECTORY)/widgets-mesa/demos/events \
|
$(DIRECTORY)/si-glu/glu.def \
|
||||||
$(DIRECTORY)/widgets-mesa/include/GL/ChangeLog \
|
$(DIRECTORY)/si-glu/dummy.cc \
|
||||||
$(DIRECTORY)/widgets-mesa/include/GL/*.h \
|
$(DIRECTORY)/si-glu/descrip.mms \
|
||||||
$(DIRECTORY)/widgets-mesa/include/GL/Makefile.in \
|
$(DIRECTORY)/si-glu/mesaglu.opt \
|
||||||
$(DIRECTORY)/widgets-mesa/man/ChangeLog \
|
$(DIRECTORY)/si-glu/include/gluos.h \
|
||||||
$(DIRECTORY)/widgets-mesa/man/GL* \
|
$(DIRECTORY)/si-glu/include/Makefile.am \
|
||||||
$(DIRECTORY)/widgets-mesa/man/Makefile.in \
|
$(DIRECTORY)/si-glu/include/Makefile.in \
|
||||||
$(DIRECTORY)/widgets-mesa/man/Mesa* \
|
$(DIRECTORY)/si-glu/libnurbs/Makefile.am \
|
||||||
$(DIRECTORY)/widgets-mesa/src/ChangeLog \
|
$(DIRECTORY)/si-glu/libnurbs/Makefile.in \
|
||||||
$(DIRECTORY)/widgets-sgi/*.[ch] \
|
$(DIRECTORY)/si-glu/libnurbs/interface/*.h \
|
||||||
$(DIRECTORY)/widgets-sgi/Makefile* \
|
$(DIRECTORY)/si-glu/libnurbs/interface/*.cc \
|
||||||
$(DIRECTORY)/widgets-sgi/README \
|
$(DIRECTORY)/si-glu/libnurbs/interface/libNIFac_la_SOURCES \
|
||||||
$(DIRECTORY)/util/README \
|
$(DIRECTORY)/si-glu/libnurbs/interface/Makefile.am \
|
||||||
$(DIRECTORY)/util/Makefile.am \
|
$(DIRECTORY)/si-glu/libnurbs/interface/Makefile.in \
|
||||||
$(DIRECTORY)/util/Makefile.in \
|
$(DIRECTORY)/si-glu/libnurbs/internals/*.h \
|
||||||
$(DIRECTORY)/util/*.[ch] \
|
$(DIRECTORY)/si-glu/libnurbs/internals/*.cc \
|
||||||
$(DIRECTORY)/util/sampleMakefile \
|
$(DIRECTORY)/si-glu/libnurbs/internals/libNInt_la_SOURCES \
|
||||||
$(DIRECTORY)/vms/analyze_map.com \
|
$(DIRECTORY)/si-glu/libnurbs/internals/Makefile.am \
|
||||||
$(DIRECTORY)/vms/xlib.opt \
|
$(DIRECTORY)/si-glu/libnurbs/internals/Makefile.in \
|
||||||
$(DIRECTORY)/vms/xlib_share.opt \
|
$(DIRECTORY)/si-glu/libnurbs/nurbtess/*.h \
|
||||||
$(DIRECTORY)/BeOS/Makefile \
|
$(DIRECTORY)/si-glu/libnurbs/nurbtess/*.cc \
|
||||||
$(DIRECTORY)/BeOS/*.cpp \
|
$(DIRECTORY)/si-glu/libnurbs/nurbtess/libNTess_la_SOURCES \
|
||||||
$(DIRECTORY)/WIN32/NMAKE.MAK \
|
$(DIRECTORY)/si-glu/libnurbs/nurbtess/Makefile.am \
|
||||||
$(DIRECTORY)/WIN32/NMAKE.MIF \
|
$(DIRECTORY)/si-glu/libnurbs/nurbtess/Makefile.in \
|
||||||
$(DIRECTORY)/WIN32/RES/*rc \
|
$(DIRECTORY)/si-glu/libtess/README \
|
||||||
$(DIRECTORY)/WIN32/RES/*def \
|
$(DIRECTORY)/si-glu/libtess/alg-outline \
|
||||||
$(DIRECTORY)/WIN32/RULES/lib.* \
|
$(DIRECTORY)/si-glu/libtess/*.[ch] \
|
||||||
$(DIRECTORY)/WIN32/RULES/progs.* \
|
$(DIRECTORY)/si-glu/libtess/libtess_la_SOURCES \
|
||||||
$(DIRECTORY)/macos/README \
|
$(DIRECTORY)/si-glu/libtess/Makefile.am \
|
||||||
$(DIRECTORY)/macos/gli_api/*.h \
|
$(DIRECTORY)/si-glu/libtess/Makefile.in \
|
||||||
$(DIRECTORY)/macos/cglpane/CGLPane.* \
|
$(DIRECTORY)/si-glu/libutil/*.[ch] \
|
||||||
$(DIRECTORY)/macos/include-mac/*.h \
|
$(DIRECTORY)/si-glu/libutil/libutil_la_SOURCES \
|
||||||
$(DIRECTORY)/macos/libraries/*.stub \
|
$(DIRECTORY)/si-glu/libutil/Makefile.am \
|
||||||
$(DIRECTORY)/macos/libraries/*Stub \
|
$(DIRECTORY)/si-glu/libutil/Makefile.in \
|
||||||
$(DIRECTORY)/macos/projects/*.mcp \
|
$(DIRECTORY)/src-glu/README[12] \
|
||||||
$(DIRECTORY)/macos/projects/*.exp \
|
$(DIRECTORY)/src-glu/Makefile* \
|
||||||
$(DIRECTORY)/macos/projects/*.h \
|
$(DIRECTORY)/src-glu/descrip.mms \
|
||||||
$(DIRECTORY)/macos/resources/*.c \
|
$(DIRECTORY)/src-glu/mms_depend \
|
||||||
$(DIRECTORY)/macos/resources/*.r \
|
$(DIRECTORY)/src-glu/*.def \
|
||||||
$(DIRECTORY)/macos/resources/*.rsrc \
|
$(DIRECTORY)/src-glu/depend \
|
||||||
$(DIRECTORY)/macos/src-agl/*.exp \
|
$(DIRECTORY)/src-glu/*.[ch] \
|
||||||
$(DIRECTORY)/macos/src-agl/*.[ch] \
|
$(DIRECTORY)/widgets-mesa/ChangeLog \
|
||||||
$(DIRECTORY)/macos/src-gli/*.[ch] \
|
$(DIRECTORY)/widgets-mesa/INSTALL \
|
||||||
|
$(DIRECTORY)/widgets-mesa/Makefile.in \
|
||||||
|
$(DIRECTORY)/widgets-mesa/README \
|
||||||
|
$(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
|
$(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.dja/* \
|
$(DIRECTORY)/src-glut.dos/*.[ch] \
|
||||||
$(DIRECTORY)/src-glut.beos/Makefile \
|
$(DIRECTORY)/src-glut.dos/Makefile.DJ \
|
||||||
$(DIRECTORY)/src-glut.beos/*.cpp \
|
$(DIRECTORY)/src-glut.dos/PC_HW/*.[chS] \
|
||||||
$(DIRECTORY)/src-glut.beos/*.h \
|
|
||||||
$(DIRECTORY)/images/* \
|
$(DIRECTORY)/images/* \
|
||||||
$(DIRECTORY)/demos/Makefile* \
|
$(DIRECTORY)/demos/Makefile* \
|
||||||
$(DIRECTORY)/demos/descrip.mms \
|
$(DIRECTORY)/demos/descrip.mms \
|
||||||
@@ -561,8 +632,37 @@ DEMO_FILES = \
|
|||||||
$(DIRECTORY)/samples/README \
|
$(DIRECTORY)/samples/README \
|
||||||
$(DIRECTORY)/samples/*.c \
|
$(DIRECTORY)/samples/*.c \
|
||||||
$(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 = \
|
GLU_FILES = \
|
||||||
$(DIRECTORY)/Makefile* \
|
$(DIRECTORY)/Makefile* \
|
||||||
$(DIRECTORY)/Make-config \
|
$(DIRECTORY)/Make-config \
|
||||||
@@ -591,13 +691,16 @@ GLUT_FILES = \
|
|||||||
$(DIRECTORY)/include/GL/glu_mangle.h \
|
$(DIRECTORY)/include/GL/glu_mangle.h \
|
||||||
$(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]
|
||||||
|
|
||||||
|
|
||||||
|
OBSOLETE_GLUT_FILES = \
|
||||||
|
$(DIRECTORY)/include/GL/glut_h.dja \
|
||||||
$(DIRECTORY)/src-glut.dja/* \
|
$(DIRECTORY)/src-glut.dja/* \
|
||||||
$(DIRECTORY)/src-glut.beos/Makefile \
|
$(DIRECTORY)/src-glut.beos/Makefile \
|
||||||
$(DIRECTORY)/src-glut.beos/*.cpp \
|
$(DIRECTORY)/src-glut.beos/*.cpp \
|
||||||
|
|||||||
233
docs/MESA_packed_depth_stencil.spec
Normal file
233
docs/MESA_packed_depth_stencil.spec
Normal file
@@ -0,0 +1,233 @@
|
|||||||
|
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.
|
||||||
|
|
||||||
193
docs/MESA_sprite_point.spec
Normal file
193
docs/MESA_sprite_point.spec
Normal file
@@ -0,0 +1,193 @@
|
|||||||
|
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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
360
docs/MESA_trace.spec
Normal file
360
docs/MESA_trace.spec
Normal file
@@ -0,0 +1,360 @@
|
|||||||
|
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)
|
||||||
|
|
||||||
@@ -3,6 +3,10 @@
|
|||||||
(see below for FAQ)
|
(see below for FAQ)
|
||||||
|
|
||||||
|
|
||||||
|
Warning: this document is rather out of date, but most of the information
|
||||||
|
should still apply.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
What do you need ?
|
What do you need ?
|
||||||
------------------
|
------------------
|
||||||
|
|||||||
132
docs/README.DJ
Normal file
132
docs/README.DJ
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
Mesa 4.0 DOS/DJGPP Port v1.0
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Description:
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Well, guess what... this is the DOS port of MESA 4.0, for DJGPP fans... Whoa!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Legal:
|
||||||
|
~~~~~~
|
||||||
|
|
||||||
|
MESA copyright applies.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Installation:
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Type "make -f Makefile.DJ" to compile the libraries. Make accepts some options
|
||||||
|
which are passed to compiler: the target cpu (CPU=..., default=`pentium') and
|
||||||
|
X86 specific options (HAVE_X86=1, HAVE_MMX=1, HAVE_SSE=1, HAVE_3DNOW=1). The
|
||||||
|
core library (libGL) requires LFN support during compilation. Also, you must
|
||||||
|
have the DXE2 package (available on SimTel.Net, courtesy of Andrew Zabolotny)
|
||||||
|
installed in order to build the dynamic modules; if you encounter errors, you
|
||||||
|
can fetch a patched version from my web page.
|
||||||
|
The demos are not built automagically (see Pitfalls below). To make them, use
|
||||||
|
one of the following rules:
|
||||||
|
Static:
|
||||||
|
gcc -o OUT.exe IN.c -lglut -lglu -lgl
|
||||||
|
Dynamic:
|
||||||
|
gcc -o OUT.exe -include dmesadxe.h IN.c -ligl -liglu -liglut -ldl
|
||||||
|
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 (libIgl*.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
|
||||||
|
|
||||||
|
Tested on:
|
||||||
|
CPU: Intel Pentium w/ MMX @166 MHz
|
||||||
|
Mainboard: ViA Apollo VP2 w/ 128 MB SDRAM
|
||||||
|
Video card: Matrox Millenium 2064W w/ 2048 kB WRAM, BIOS v3.0
|
||||||
|
DJGPP: djdev 2.03 + gcc v3.0.3 + make v3.79
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
libGL (the core):
|
||||||
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Of course, MESA 4.0 core sources are required. It will probably work with
|
||||||
|
MESA 3.5, but not a chance with earlier versions due to major changes to the
|
||||||
|
MESA driver interface and the directory tree. All should compile succesfully.
|
||||||
|
|
||||||
|
The driver has its origins in ddsample.c, written by Brian Paul and found by
|
||||||
|
me in MESA 3.4.2. I touched almost all the functions, changing the coding
|
||||||
|
style :-( Sorry!
|
||||||
|
|
||||||
|
Pitfalls:
|
||||||
|
1. The current version supports only RGB[A] modes, for it made no sense to me
|
||||||
|
to endorse color-index (aka palette) modes.
|
||||||
|
2. Single-buffered is not allowed at all. Until I can find a way to use *REAL*
|
||||||
|
hardware acceleration, it won't get implemented.
|
||||||
|
3. 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 ;-).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
libGLU:
|
||||||
|
~~~~~~~
|
||||||
|
|
||||||
|
Mesa GLU sources are required.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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 some 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Contact:
|
||||||
|
~~~~~~~~
|
||||||
|
|
||||||
|
Name: Borca Daniel
|
||||||
|
E-mail: dborca@yahoo.com
|
||||||
|
WWW: http://www.geocities.com/dborca/
|
||||||
@@ -1,623 +1,88 @@
|
|||||||
|
File: docs/README.WIN32
|
||||||
Mesa/Readme.win32
|
|
||||||
|
Last updated: Nov 29, 2001 - Karl Schultz - kschultz@users.sourceforge.net
|
||||||
Last Updated: Sunday, September 19th, 1999 - tjump@tertius.com
|
|
||||||
|
Quick Start
|
||||||
*** What's New
|
|
||||||
|
If you have Microsoft Visual C++ 6.0 installed, simply go to the top directory
|
||||||
- Updated for Mesa 3.1beta3/CVS. Debug and Release command-line builds of
|
of the Mesa distribution and type 'nmake -f Makefile.win NODEBUG=1' for
|
||||||
Mesa, fxMesa, GLU, GLUT and all sample programs DLL-based. Manual
|
an optimized build.
|
||||||
executions tests with minimum requisite results (aka: things looked like
|
|
||||||
I expected them to).
|
Details and Notes
|
||||||
|
|
||||||
What did you expect, complete regression testing maybe?
|
- Building Mesa as noted above should visit and build the following:
|
||||||
|
src MesaGL.dll, MesaGL.lib, osmesa.dll, osmesa.lib
|
||||||
- NASM build support. Any file in the project coded as a .S file will
|
si-glu MesaGLU.dll, MesaGLU.lib
|
||||||
automatically be recognized and built as a NASM-source assember file.
|
src-glut glut32.dll, glut32.lib
|
||||||
|
demos a handful of demo executables.
|
||||||
To enable building using NASM, set the environment variable NASM to
|
|
||||||
indicate that command to execute to run nasm on a file. If NASM is in
|
- After building, you can copy the above DLL files to a place in your PATH
|
||||||
your command search path then all this needs be set to is 'nasmw' -
|
or to the demos directory if you just want to give the demos a try.
|
||||||
otherwise you will need to include the complete drive and directory path.
|
The DLL and LIB files are copied to the ./lib directory. The makefile
|
||||||
|
creates this directory if it does not already exist.
|
||||||
NASM may be retrieved here: http://www.web-sites.co.uk/nasm/
|
|
||||||
|
- The make targets 'clean' and 'clobber' will remove objects and libraries.
|
||||||
- DevStudio projects suspended for compatability reasons: projects modified
|
But the files in ./lib are never cleaned.
|
||||||
by DevStudio 6 are not compatible with DevStudio 5.
|
|
||||||
|
- The make target 'install' will take its best shot at copying DLL files,
|
||||||
These will slowly be rebuilt and put into CVS as I can.
|
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
|
||||||
- Build environment change: The Glide SDK is no longer assumed to be in
|
that you can't live with.
|
||||||
the global INCLUDE/LIB environment vars, it is required that you set the
|
|
||||||
value 'GLIDE2X' as either an environment variable pointing to your Glide
|
- The makefiles are designed to work with Microsoft's NMAKE, and do,
|
||||||
SDK install directory or that you configure that as a build option to
|
unfortunately, have some Microsoft-specific things in them. If you
|
||||||
nmake.exe when building fxmesagl32. Examples:
|
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
|
||||||
nmake /f nmake.mak GLIDE2X=g:\sdk\glide2x fxmesagl32
|
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,
|
||||||
<or>
|
you can send me the changes and I can apply the changes to the
|
||||||
|
source tree.
|
||||||
nmake /f nmake.mak GLIDE2X=g:\sdk\glide2x allfx
|
|
||||||
|
- There are no Microsoft Visual Studio project files. However, these
|
||||||
<or>
|
should be very easy to create. One can use the compiler and linker
|
||||||
|
options found in the makefiles to make quick progress in creating
|
||||||
nmake /f nmake.mak GLIDE2X=g:\sdk\glide2x progs.3dfx.demos
|
projects.
|
||||||
|
|
||||||
The DevStudio workspace files for 3Dfx OpenGL require the definition of
|
- The DLL files are built so that the external entry points use the
|
||||||
GLIDE2SDK as an environment variable pointing to where your copy of the
|
stdcall calling convention.
|
||||||
Glide SDK has been installed. Adding this to your AUTOEXEC.BAT would do
|
|
||||||
so (change the directories to match):
|
- Static LIB files are not built. The LIB files that are built with
|
||||||
|
the current makefiles are the linker import files associated with
|
||||||
SET GLIDE2SDK=G:\SDK\GLIDE2X
|
the DLL files. If static LIB's are desired, it should not be too
|
||||||
|
difficult to modify the makefiles to generate them.
|
||||||
*** Legalese
|
|
||||||
|
- The si-glu sources are used to build the GLU libs. This was done
|
||||||
These build files are provided as-is and are submitted to be included with
|
mainly to get the better tessellator code.
|
||||||
the "Mesa 3-D Graphics Library" package as (currently) maintained by Brian
|
|
||||||
Paul. These project build files are free software; you can redistribute it
|
- The osmesa driver builds and should work on Windows as well as
|
||||||
and/or modify it under the terms of the GNU Library General Public License
|
any other platform.
|
||||||
as published by the Free Software Foundation; either version 2 of the
|
|
||||||
License, or (at your option) any later version.
|
- The Windows driver (in src/Windows) builds and runs at least at
|
||||||
|
a minimal level. I modified this driver to work with the new
|
||||||
These project files are distributed in the hope that they will be useful,
|
Mesa 4.0 code and driver architecture, but I did not do a great
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
deal of optimization and testing. There are many opportunities
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
|
for optimization, many of which can be done by coding more specific
|
||||||
General Public License for more details.
|
paths for the rasterizers. See src/osmesa/osmesa.c for some good
|
||||||
|
examples.
|
||||||
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,
|
- There is DirectDraw support in the Windows driver, updated by
|
||||||
Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
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
|
||||||
*** Maintenance Responsiblity and Technical Support
|
in src/Makefile.win. On some systems, you will acheive significantly
|
||||||
|
higher framerates with DirectDraw.
|
||||||
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
|
- Some of the more specialized code like FX drivers, stereo, and
|
||||||
help you (currently). I will, however, attempt my straightforward best in
|
parallel support isn't compiled or tested. I left much of this
|
||||||
assisting anyone with using these files on their system. I can NOT
|
code alone, but it may need some work to get it 'turned on' again.
|
||||||
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
|
- No assembly code is compiled or assembled. Again, this may need
|
||||||
above email address for the forseeable future.
|
some work to turn it back on or use it again.
|
||||||
|
|
||||||
-Ted
|
If you have a Windows-related build problem or question, it is
|
||||||
mailto://tjump@tertius.com
|
probably better to direct it to me (kschultz@users.sourceforge.net),
|
||||||
http://www.tertius.com/tjump
|
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
|
||||||
*** General Information
|
answer questions in this area there as well.
|
||||||
|
|
||||||
These build files facilitate convenient building of many variants of Mesa,
|
|
||||||
both as static link libraries (including mesaglu) and as dynamic link
|
Karl Schultz
|
||||||
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
|
|
||||||
|
|||||||
146
docs/README.WINDML
Normal file
146
docs/README.WINDML
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
|
||||||
|
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 3.3 Unix/X11 Information
|
Mesa 4.0.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-3.3/lib/
|
directories. When finished, the Mesa libraries will be in the Mesa-4.0.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.5 2000/04/04 15:14:48 brianp Exp $
|
$Id: README.X11,v 3.8.2.2 2002/02/12 03:13:42 brianp Exp $
|
||||||
|
|||||||
22
docs/RELNOTES-3.4
Normal file
22
docs/RELNOTES-3.4
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
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.1.4.1 2002/03/23 02:36:52 brianp Exp $
|
||||||
22
docs/RELNOTES-3.4.1
Normal file
22
docs/RELNOTES-3.4.1
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
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 $
|
||||||
22
docs/RELNOTES-3.4.2
Normal file
22
docs/RELNOTES-3.4.2
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
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 $
|
||||||
228
docs/RELNOTES-3.5
Normal file
228
docs/RELNOTES-3.5
Normal file
@@ -0,0 +1,228 @@
|
|||||||
|
|
||||||
|
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 $
|
||||||
163
docs/RELNOTES-4.0
Normal file
163
docs/RELNOTES-4.0
Normal file
@@ -0,0 +1,163 @@
|
|||||||
|
|
||||||
|
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 $
|
||||||
22
docs/RELNOTES-4.0.1
Normal file
22
docs/RELNOTES-4.0.1
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
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.1.2.2 2001/12/17 19:43:38 brianp Exp $
|
||||||
50
docs/RELNOTES-4.0.2
Normal file
50
docs/RELNOTES-4.0.2
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
|
||||||
|
Mesa 4.0.2 release notes
|
||||||
|
|
||||||
|
April 2, 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.1.2.3 2002/04/01 16:54:11 brianp Exp $
|
||||||
28
docs/RELNOTES-4.1
Normal file
28
docs/RELNOTES-4.1
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
Mesa 4.1 release notes
|
||||||
|
|
||||||
|
<month>, <day>, <year>
|
||||||
|
|
||||||
|
PLEASE READ!!!!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
------------
|
||||||
|
|
||||||
|
Mesa uses an even/odd version number scheme like the Linux kernel.
|
||||||
|
Odd numbered versions (such as 4.1) designate new developmental releases.
|
||||||
|
Even numbered versions (such as 4.0) designate stable releases.
|
||||||
|
|
||||||
|
|
||||||
|
New Features in Mesa 4.1
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
<to be determined>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
$Id: RELNOTES-4.1,v 1.1 2001/10/22 22:57:23 brianp Exp $
|
||||||
207
docs/VERSIONS
207
docs/VERSIONS
@@ -1,4 +1,4 @@
|
|||||||
$Id: VERSIONS,v 1.38 2000/07/21 15:41:59 brianp Exp $
|
$Id: VERSIONS,v 1.73.2.22 2002/04/01 16:54:11 brianp Exp $
|
||||||
|
|
||||||
|
|
||||||
Mesa Version History
|
Mesa Version History
|
||||||
@@ -746,3 +746,208 @@ Mesa Version History
|
|||||||
- gl.h now uses #defines instead of C enums for all tokens
|
- gl.h now uses #defines instead of C enums for all tokens
|
||||||
- glu.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
|
- 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
|
||||||
|
|||||||
@@ -2,33 +2,42 @@
|
|||||||
|
|
||||||
GLincludedir = $(includedir)/GL
|
GLincludedir = $(includedir)/GL
|
||||||
|
|
||||||
if HAVE_FX
|
|
||||||
INC_FX = fxmesa.h
|
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
|
||||||
|
sel_inc_fx = $(INC_FX)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if HAVE_GGI
|
if HAVE_GGI
|
||||||
INC_GGI = ggimesa.h
|
sel_inc_ggi = $(INC_GGI)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if HAVE_OSMESA
|
if HAVE_OSMESA
|
||||||
INC_OSMESA = osmesa.h
|
sel_inc_osmesa = $(INC_OSMESA)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if HAVE_SVGA
|
if HAVE_SVGA
|
||||||
INC_SVGA = svgamesa.h
|
sel_inc_svga = $(INC_SVGA)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if HAVE_X11
|
if HAVE_X11
|
||||||
INC_X11 = glx.h glx_mangle.h xmesa.h xmesa_x.h xmesa_xf86.h
|
sel_inc_x11 = $(INC_X11)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if NEED_GLUT
|
if NEED_GLUT
|
||||||
INC_GLUT = glut.h
|
sel_inc_glut = $(INC_GLUT)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
EXTRA_DIST = fxmesa.h ggimesa.h osmesa.h svgamesa.h \
|
EXTRA_HEADERS = amesa.h dosmesa.h foomesa.h glut_h.dja mesa_wgl.h mglmesa.h \
|
||||||
glx.h glx_mangle.h xmesa.h xmesa_x.h xmesa_xf86.h
|
vms_x_fix.h wmesa.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
|
||||||
|
|||||||
77
include/GL/dmesa.h
Normal file
77
include/GL/dmesa.h
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
/*
|
||||||
|
* 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,9 +1,9 @@
|
|||||||
/* $Id: fxmesa.h,v 1.2 1999/11/24 18:44:53 brianp Exp $ */
|
/* $Id: fxmesa.h,v 1.4 2001/09/23 16:06:13 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 3.3
|
* Version: 4.0
|
||||||
* Copyright (C) 1995-1999 Brian Paul
|
* Copyright (C) 1995-2001 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
|
||||||
@@ -40,8 +40,8 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define FXMESA_MAJOR_VERSION 3
|
#define FXMESA_MAJOR_VERSION 4
|
||||||
#define FXMESA_MINOR_VERSION 3
|
#define FXMESA_MINOR_VERSION 0
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
429
include/GL/gl.h
429
include/GL/gl.h
@@ -1,10 +1,10 @@
|
|||||||
/* $Id: gl.h,v 1.44 2000/07/13 17:45:13 brianp Exp $ */
|
/* $Id: gl.h,v 1.59.2.2 2002/03/20 22:06:57 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 3.3
|
* Version: 4.0.2
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
* Copyright (C) 1999-2002 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"),
|
||||||
@@ -44,11 +44,11 @@
|
|||||||
#define OPENSTEP
|
#define OPENSTEP
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(_WIN32) && !defined(__WIN32__)
|
#if defined(_WIN32) && !defined(__WIN32__) && !defined(__CYGWIN__)
|
||||||
#define __WIN32__
|
#define __WIN32__
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(OPENSTEP) && (defined(__WIN32__) || defined(__CYGWIN__))
|
#if !defined(OPENSTEP) && (defined(__WIN32__) && !defined(__CYGWIN__))
|
||||||
# if defined(_MSC_VER) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
|
# if defined(_MSC_VER) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
|
||||||
# define GLAPI __declspec(dllexport)
|
# define GLAPI __declspec(dllexport)
|
||||||
# elif defined(_MSC_VER) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
|
# elif defined(_MSC_VER) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
# define GLAPIENTRY
|
# define GLAPIENTRY
|
||||||
#endif /* WIN32 / CYGWIN bracket */
|
#endif /* WIN32 / CYGWIN bracket */
|
||||||
|
|
||||||
#if defined(_WIN32) && !defined(_WINGDI_) && !defined(_GNU_H_WINDOWS32_DEFINES) && !defined(OPENSTEP)
|
#if defined(_WIN32) && !defined(_WINGDI_) && !defined(_GNU_H_WINDOWS32_DEFINES) && !defined(OPENSTEP) && !defined(__CYGWIN__)
|
||||||
#include <gl/mesa_wgl.h>
|
#include <gl/mesa_wgl.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -84,7 +84,8 @@ extern "C" {
|
|||||||
|
|
||||||
#define GL_VERSION_1_1 1
|
#define GL_VERSION_1_1 1
|
||||||
#define GL_VERSION_1_2 1
|
#define GL_VERSION_1_2 1
|
||||||
|
#define GL_VERSION_1_3 1
|
||||||
|
#define GL_ARB_imaging 1
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -325,12 +326,12 @@ typedef double GLclampd; /* double precision float in [0,1] */
|
|||||||
#define GL_ONE 0x1
|
#define GL_ONE 0x1
|
||||||
#define GL_SRC_COLOR 0x0300
|
#define GL_SRC_COLOR 0x0300
|
||||||
#define GL_ONE_MINUS_SRC_COLOR 0x0301
|
#define GL_ONE_MINUS_SRC_COLOR 0x0301
|
||||||
#define GL_DST_COLOR 0x0306
|
|
||||||
#define GL_ONE_MINUS_DST_COLOR 0x0307
|
|
||||||
#define GL_SRC_ALPHA 0x0302
|
#define GL_SRC_ALPHA 0x0302
|
||||||
#define GL_ONE_MINUS_SRC_ALPHA 0x0303
|
#define GL_ONE_MINUS_SRC_ALPHA 0x0303
|
||||||
#define GL_DST_ALPHA 0x0304
|
#define GL_DST_ALPHA 0x0304
|
||||||
#define GL_ONE_MINUS_DST_ALPHA 0x0305
|
#define GL_ONE_MINUS_DST_ALPHA 0x0305
|
||||||
|
#define GL_DST_COLOR 0x0306
|
||||||
|
#define GL_ONE_MINUS_DST_COLOR 0x0307
|
||||||
#define GL_SRC_ALPHA_SATURATE 0x0308
|
#define GL_SRC_ALPHA_SATURATE 0x0308
|
||||||
#define GL_CONSTANT_COLOR 0x8001
|
#define GL_CONSTANT_COLOR 0x8001
|
||||||
#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
|
#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
|
||||||
@@ -637,7 +638,46 @@ typedef double GLclampd; /* double precision float in [0,1] */
|
|||||||
#define GL_TEXTURE_GEN_R 0x0C62
|
#define GL_TEXTURE_GEN_R 0x0C62
|
||||||
#define GL_TEXTURE_GEN_Q 0x0C63
|
#define GL_TEXTURE_GEN_Q 0x0C63
|
||||||
|
|
||||||
/* GL 1.1 texturing */
|
/* Utility */
|
||||||
|
#define GL_VENDOR 0x1F00
|
||||||
|
#define GL_RENDERER 0x1F01
|
||||||
|
#define GL_VERSION 0x1F02
|
||||||
|
#define GL_EXTENSIONS 0x1F03
|
||||||
|
|
||||||
|
/* Errors */
|
||||||
|
#define GL_NO_ERROR 0x0
|
||||||
|
#define GL_INVALID_VALUE 0x0501
|
||||||
|
#define GL_INVALID_ENUM 0x0500
|
||||||
|
#define GL_INVALID_OPERATION 0x0502
|
||||||
|
#define GL_STACK_OVERFLOW 0x0503
|
||||||
|
#define GL_STACK_UNDERFLOW 0x0504
|
||||||
|
#define GL_OUT_OF_MEMORY 0x0505
|
||||||
|
|
||||||
|
/* glPush/PopAttrib bits */
|
||||||
|
#define GL_CURRENT_BIT 0x00000001
|
||||||
|
#define GL_POINT_BIT 0x00000002
|
||||||
|
#define GL_LINE_BIT 0x00000004
|
||||||
|
#define GL_POLYGON_BIT 0x00000008
|
||||||
|
#define GL_POLYGON_STIPPLE_BIT 0x00000010
|
||||||
|
#define GL_PIXEL_MODE_BIT 0x00000020
|
||||||
|
#define GL_LIGHTING_BIT 0x00000040
|
||||||
|
#define GL_FOG_BIT 0x00000080
|
||||||
|
#define GL_DEPTH_BUFFER_BIT 0x00000100
|
||||||
|
#define GL_ACCUM_BUFFER_BIT 0x00000200
|
||||||
|
#define GL_STENCIL_BUFFER_BIT 0x00000400
|
||||||
|
#define GL_VIEWPORT_BIT 0x00000800
|
||||||
|
#define GL_TRANSFORM_BIT 0x00001000
|
||||||
|
#define GL_ENABLE_BIT 0x00002000
|
||||||
|
#define GL_COLOR_BUFFER_BIT 0x00004000
|
||||||
|
#define GL_HINT_BIT 0x00008000
|
||||||
|
#define GL_EVAL_BIT 0x00010000
|
||||||
|
#define GL_LIST_BIT 0x00020000
|
||||||
|
#define GL_TEXTURE_BIT 0x00040000
|
||||||
|
#define GL_SCISSOR_BIT 0x00080000
|
||||||
|
#define GL_ALL_ATTRIB_BITS 0x000FFFFF
|
||||||
|
|
||||||
|
|
||||||
|
/* OpenGL 1.1 */
|
||||||
#define GL_PROXY_TEXTURE_1D 0x8063
|
#define GL_PROXY_TEXTURE_1D 0x8063
|
||||||
#define GL_PROXY_TEXTURE_2D 0x8064
|
#define GL_PROXY_TEXTURE_2D 0x8064
|
||||||
#define GL_TEXTURE_PRIORITY 0x8066
|
#define GL_TEXTURE_PRIORITY 0x8066
|
||||||
@@ -645,20 +685,6 @@ typedef double GLclampd; /* double precision float in [0,1] */
|
|||||||
#define GL_TEXTURE_BINDING_1D 0x8068
|
#define GL_TEXTURE_BINDING_1D 0x8068
|
||||||
#define GL_TEXTURE_BINDING_2D 0x8069
|
#define GL_TEXTURE_BINDING_2D 0x8069
|
||||||
#define GL_TEXTURE_INTERNAL_FORMAT 0x1003
|
#define GL_TEXTURE_INTERNAL_FORMAT 0x1003
|
||||||
|
|
||||||
/* GL 1.2 texturing */
|
|
||||||
#define GL_PACK_SKIP_IMAGES 0x806B
|
|
||||||
#define GL_PACK_IMAGE_HEIGHT 0x806C
|
|
||||||
#define GL_UNPACK_SKIP_IMAGES 0x806D
|
|
||||||
#define GL_UNPACK_IMAGE_HEIGHT 0x806E
|
|
||||||
#define GL_TEXTURE_3D 0x806F
|
|
||||||
#define GL_PROXY_TEXTURE_3D 0x8070
|
|
||||||
#define GL_TEXTURE_DEPTH 0x8071
|
|
||||||
#define GL_TEXTURE_WRAP_R 0x8072
|
|
||||||
#define GL_MAX_3D_TEXTURE_SIZE 0x8073
|
|
||||||
#define GL_TEXTURE_BINDING_3D 0x806A
|
|
||||||
|
|
||||||
/* Internal texture formats (GL 1.1) */
|
|
||||||
#define GL_ALPHA4 0x803B
|
#define GL_ALPHA4 0x803B
|
||||||
#define GL_ALPHA8 0x803C
|
#define GL_ALPHA8 0x803C
|
||||||
#define GL_ALPHA12 0x803D
|
#define GL_ALPHA12 0x803D
|
||||||
@@ -692,21 +718,10 @@ typedef double GLclampd; /* double precision float in [0,1] */
|
|||||||
#define GL_RGB10_A2 0x8059
|
#define GL_RGB10_A2 0x8059
|
||||||
#define GL_RGBA12 0x805A
|
#define GL_RGBA12 0x805A
|
||||||
#define GL_RGBA16 0x805B
|
#define GL_RGBA16 0x805B
|
||||||
|
#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001
|
||||||
/* Utility */
|
#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002
|
||||||
#define GL_VENDOR 0x1F00
|
#define GL_ALL_CLIENT_ATTRIB_BITS 0xFFFFFFFF
|
||||||
#define GL_RENDERER 0x1F01
|
#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF
|
||||||
#define GL_VERSION 0x1F02
|
|
||||||
#define GL_EXTENSIONS 0x1F03
|
|
||||||
|
|
||||||
/* Errors */
|
|
||||||
#define GL_NO_ERROR 0x0
|
|
||||||
#define GL_INVALID_VALUE 0x0501
|
|
||||||
#define GL_INVALID_ENUM 0x0500
|
|
||||||
#define GL_INVALID_OPERATION 0x0502
|
|
||||||
#define GL_STACK_OVERFLOW 0x0503
|
|
||||||
#define GL_STACK_UNDERFLOW 0x0504
|
|
||||||
#define GL_OUT_OF_MEMORY 0x0505
|
|
||||||
|
|
||||||
|
|
||||||
/* OpenGL 1.2 */
|
/* OpenGL 1.2 */
|
||||||
@@ -741,11 +756,20 @@ typedef double GLclampd; /* double precision float in [0,1] */
|
|||||||
#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
|
#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23
|
||||||
#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
|
#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
|
||||||
#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
|
#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
|
||||||
|
#define GL_PACK_SKIP_IMAGES 0x806B
|
||||||
|
#define GL_PACK_IMAGE_HEIGHT 0x806C
|
||||||
|
#define GL_UNPACK_SKIP_IMAGES 0x806D
|
||||||
|
#define GL_UNPACK_IMAGE_HEIGHT 0x806E
|
||||||
|
#define GL_TEXTURE_3D 0x806F
|
||||||
|
#define GL_PROXY_TEXTURE_3D 0x8070
|
||||||
|
#define GL_TEXTURE_DEPTH 0x8071
|
||||||
|
#define GL_TEXTURE_WRAP_R 0x8072
|
||||||
|
#define GL_MAX_3D_TEXTURE_SIZE 0x8073
|
||||||
|
#define GL_TEXTURE_BINDING_3D 0x806A
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* OpenGL 1.2 imaging subset (NOT IMPLEMENTED BY MESA)
|
* OpenGL 1.2 imaging subset
|
||||||
*/
|
*/
|
||||||
/* GL_EXT_color_table */
|
/* GL_EXT_color_table */
|
||||||
#define GL_COLOR_TABLE 0x80D0
|
#define GL_COLOR_TABLE 0x80D0
|
||||||
@@ -822,38 +846,114 @@ typedef double GLclampd; /* double precision float in [0,1] */
|
|||||||
#define GL_FUNC_ADD 0x8006
|
#define GL_FUNC_ADD 0x8006
|
||||||
#define GL_FUNC_SUBTRACT 0x800A
|
#define GL_FUNC_SUBTRACT 0x800A
|
||||||
#define GL_FUNC_REVERSE_SUBTRACT 0x800B
|
#define GL_FUNC_REVERSE_SUBTRACT 0x800B
|
||||||
#define GL_BLEND_COLOR 0x8005
|
#define GL_BLEND_COLOR 0x8005
|
||||||
|
|
||||||
|
|
||||||
/* glPush/PopAttrib bits */
|
|
||||||
#define GL_CURRENT_BIT 0x00000001
|
|
||||||
#define GL_POINT_BIT 0x00000002
|
|
||||||
#define GL_LINE_BIT 0x00000004
|
|
||||||
#define GL_POLYGON_BIT 0x00000008
|
|
||||||
#define GL_POLYGON_STIPPLE_BIT 0x00000010
|
|
||||||
#define GL_PIXEL_MODE_BIT 0x00000020
|
|
||||||
#define GL_LIGHTING_BIT 0x00000040
|
|
||||||
#define GL_FOG_BIT 0x00000080
|
|
||||||
#define GL_DEPTH_BUFFER_BIT 0x00000100
|
|
||||||
#define GL_ACCUM_BUFFER_BIT 0x00000200
|
|
||||||
#define GL_STENCIL_BUFFER_BIT 0x00000400
|
|
||||||
#define GL_VIEWPORT_BIT 0x00000800
|
|
||||||
#define GL_TRANSFORM_BIT 0x00001000
|
|
||||||
#define GL_ENABLE_BIT 0x00002000
|
|
||||||
#define GL_COLOR_BUFFER_BIT 0x00004000
|
|
||||||
#define GL_HINT_BIT 0x00008000
|
|
||||||
#define GL_EVAL_BIT 0x00010000
|
|
||||||
#define GL_LIST_BIT 0x00020000
|
|
||||||
#define GL_TEXTURE_BIT 0x00040000
|
|
||||||
#define GL_SCISSOR_BIT 0x00080000
|
|
||||||
#define GL_ALL_ATTRIB_BITS 0x000FFFFF
|
|
||||||
|
|
||||||
|
|
||||||
#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001
|
|
||||||
#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002
|
|
||||||
#define GL_ALL_CLIENT_ATTRIB_BITS 0xFFFFFFFF
|
|
||||||
|
|
||||||
|
|
||||||
|
/* OpenGL 1.3 */
|
||||||
|
/* multitexture */
|
||||||
|
#define GL_TEXTURE0 0x84C0
|
||||||
|
#define GL_TEXTURE1 0x84C1
|
||||||
|
#define GL_TEXTURE2 0x84C2
|
||||||
|
#define GL_TEXTURE3 0x84C3
|
||||||
|
#define GL_TEXTURE4 0x84C4
|
||||||
|
#define GL_TEXTURE5 0x84C5
|
||||||
|
#define GL_TEXTURE6 0x84C6
|
||||||
|
#define GL_TEXTURE7 0x84C7
|
||||||
|
#define GL_TEXTURE8 0x84C8
|
||||||
|
#define GL_TEXTURE9 0x84C9
|
||||||
|
#define GL_TEXTURE10 0x84CA
|
||||||
|
#define GL_TEXTURE11 0x84CB
|
||||||
|
#define GL_TEXTURE12 0x84CC
|
||||||
|
#define GL_TEXTURE13 0x84CD
|
||||||
|
#define GL_TEXTURE14 0x84CE
|
||||||
|
#define GL_TEXTURE15 0x84CF
|
||||||
|
#define GL_TEXTURE16 0x84D0
|
||||||
|
#define GL_TEXTURE17 0x84D1
|
||||||
|
#define GL_TEXTURE18 0x84D2
|
||||||
|
#define GL_TEXTURE19 0x84D3
|
||||||
|
#define GL_TEXTURE20 0x84D4
|
||||||
|
#define GL_TEXTURE21 0x84D5
|
||||||
|
#define GL_TEXTURE22 0x84D6
|
||||||
|
#define GL_TEXTURE23 0x84D7
|
||||||
|
#define GL_TEXTURE24 0x84D8
|
||||||
|
#define GL_TEXTURE25 0x84D9
|
||||||
|
#define GL_TEXTURE26 0x84DA
|
||||||
|
#define GL_TEXTURE27 0x84DB
|
||||||
|
#define GL_TEXTURE28 0x84DC
|
||||||
|
#define GL_TEXTURE29 0x84DD
|
||||||
|
#define GL_TEXTURE30 0x84DE
|
||||||
|
#define GL_TEXTURE31 0x84DF
|
||||||
|
#define GL_ACTIVE_TEXTURE 0x84E0
|
||||||
|
#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1
|
||||||
|
#define GL_MAX_TEXTURE_UNITS 0x84E2
|
||||||
|
/* texture_cube_map */
|
||||||
|
#define GL_NORMAL_MAP 0x8511
|
||||||
|
#define GL_REFLECTION_MAP 0x8512
|
||||||
|
#define GL_TEXTURE_CUBE_MAP 0x8513
|
||||||
|
#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
|
||||||
|
#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
|
||||||
|
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516
|
||||||
|
#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517
|
||||||
|
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518
|
||||||
|
#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
|
||||||
|
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
|
||||||
|
#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B
|
||||||
|
#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
|
||||||
|
/* texture_compression */
|
||||||
|
#define GL_COMPRESSED_ALPHA 0x84E9
|
||||||
|
#define GL_COMPRESSED_LUMINANCE 0x84EA
|
||||||
|
#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB
|
||||||
|
#define GL_COMPRESSED_INTENSITY 0x84EC
|
||||||
|
#define GL_COMPRESSED_RGB 0x84ED
|
||||||
|
#define GL_COMPRESSED_RGBA 0x84EE
|
||||||
|
#define GL_TEXTURE_COMPRESSION_HINT 0x84EF
|
||||||
|
#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0
|
||||||
|
#define GL_TEXTURE_COMPRESSED 0x86A1
|
||||||
|
#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
|
||||||
|
#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
|
||||||
|
/* multisample */
|
||||||
|
#define GL_MULTISAMPLE 0x809D
|
||||||
|
#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
|
||||||
|
#define GL_SAMPLE_ALPHA_TO_ONE 0x809F
|
||||||
|
#define GL_SAMPLE_COVERAGE 0x80A0
|
||||||
|
#define GL_SAMPLE_BUFFERS 0x80A8
|
||||||
|
#define GL_SAMPLES 0x80A9
|
||||||
|
#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
|
||||||
|
#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
|
||||||
|
#define GL_MULTISAMPLE_BIT 0x20000000
|
||||||
|
/* transpose_matrix */
|
||||||
|
#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3
|
||||||
|
#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4
|
||||||
|
#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5
|
||||||
|
#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6
|
||||||
|
/* texture_env_combine */
|
||||||
|
#define GL_COMBINE 0x8570
|
||||||
|
#define GL_COMBINE_RGB 0x8571
|
||||||
|
#define GL_COMBINE_ALPHA 0x8572
|
||||||
|
#define GL_SOURCE0_RGB 0x8580
|
||||||
|
#define GL_SOURCE1_RGB 0x8581
|
||||||
|
#define GL_SOURCE2_RGB 0x8582
|
||||||
|
#define GL_SOURCE0_ALPHA 0x8588
|
||||||
|
#define GL_SOURCE1_ALPHA 0x8589
|
||||||
|
#define GL_SOURCE2_ALPHA 0x858A
|
||||||
|
#define GL_OPERAND0_RGB 0x8590
|
||||||
|
#define GL_OPERAND1_RGB 0x8591
|
||||||
|
#define GL_OPERAND2_RGB 0x8592
|
||||||
|
#define GL_OPERAND0_ALPHA 0x8598
|
||||||
|
#define GL_OPERAND1_ALPHA 0x8599
|
||||||
|
#define GL_OPERAND2_ALPHA 0x859A
|
||||||
|
#define GL_RGB_SCALE 0x8573
|
||||||
|
#define GL_ADD_SIGNED 0x8574
|
||||||
|
#define GL_INTERPOLATE 0x8575
|
||||||
|
#define GL_SUBTRACT 0x84E7
|
||||||
|
#define GL_CONSTANT 0x8576
|
||||||
|
#define GL_PRIMARY_COLOR 0x8577
|
||||||
|
#define GL_PREVIOUS 0x8578
|
||||||
|
/* texture_env_dot3 */
|
||||||
|
#define GL_DOT3_RGB 0x86AE
|
||||||
|
#define GL_DOT3_RGBA 0x86AF
|
||||||
|
/* texture_border_clamp */
|
||||||
|
#define GL_CLAMP_TO_BORDER 0x812D
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -868,17 +968,13 @@ typedef double GLclampd; /* double precision float in [0,1] */
|
|||||||
|
|
||||||
GLAPI void GLAPIENTRY glClearIndex( GLfloat c );
|
GLAPI void GLAPIENTRY glClearIndex( GLfloat c );
|
||||||
|
|
||||||
GLAPI void GLAPIENTRY glClearColor( GLclampf red,
|
GLAPI void GLAPIENTRY glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
|
||||||
GLclampf green,
|
|
||||||
GLclampf blue,
|
|
||||||
GLclampf alpha );
|
|
||||||
|
|
||||||
GLAPI void GLAPIENTRY glClear( GLbitfield mask );
|
GLAPI void GLAPIENTRY glClear( GLbitfield mask );
|
||||||
|
|
||||||
GLAPI void GLAPIENTRY glIndexMask( GLuint mask );
|
GLAPI void GLAPIENTRY glIndexMask( GLuint mask );
|
||||||
|
|
||||||
GLAPI void GLAPIENTRY glColorMask( GLboolean red, GLboolean green,
|
GLAPI void GLAPIENTRY glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha );
|
||||||
GLboolean blue, GLboolean alpha );
|
|
||||||
|
|
||||||
GLAPI void GLAPIENTRY glAlphaFunc( GLenum func, GLclampf ref );
|
GLAPI void GLAPIENTRY glAlphaFunc( GLenum func, GLclampf ref );
|
||||||
|
|
||||||
@@ -908,8 +1004,7 @@ GLAPI void GLAPIENTRY glEdgeFlag( GLboolean flag );
|
|||||||
|
|
||||||
GLAPI void GLAPIENTRY glEdgeFlagv( const GLboolean *flag );
|
GLAPI void GLAPIENTRY glEdgeFlagv( const GLboolean *flag );
|
||||||
|
|
||||||
GLAPI void GLAPIENTRY glScissor( GLint x, GLint y,
|
GLAPI void GLAPIENTRY glScissor( GLint x, GLint y, GLsizei width, GLsizei height);
|
||||||
GLsizei width, GLsizei height);
|
|
||||||
|
|
||||||
GLAPI void GLAPIENTRY glClipPlane( GLenum plane, const GLdouble *equation );
|
GLAPI void GLAPIENTRY glClipPlane( GLenum plane, const GLdouble *equation );
|
||||||
|
|
||||||
@@ -981,8 +1076,7 @@ GLAPI void GLAPIENTRY glDepthRange( GLclampd near_val, GLclampd far_val );
|
|||||||
* Accumulation Buffer
|
* Accumulation Buffer
|
||||||
*/
|
*/
|
||||||
|
|
||||||
GLAPI void GLAPIENTRY glClearAccum( GLfloat red, GLfloat green,
|
GLAPI void GLAPIENTRY glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
|
||||||
GLfloat blue, GLfloat alpha );
|
|
||||||
|
|
||||||
GLAPI void GLAPIENTRY glAccum( GLenum op, GLfloat value );
|
GLAPI void GLAPIENTRY glAccum( GLenum op, GLfloat value );
|
||||||
|
|
||||||
@@ -1270,7 +1364,7 @@ GLAPI void GLAPIENTRY glTexCoordPointer( GLint size, GLenum type,
|
|||||||
|
|
||||||
GLAPI void GLAPIENTRY glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr );
|
GLAPI void GLAPIENTRY glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr );
|
||||||
|
|
||||||
GLAPI void GLAPIENTRY glGetPointerv( GLenum pname, void **params );
|
GLAPI void GLAPIENTRY glGetPointerv( GLenum pname, GLvoid **params );
|
||||||
|
|
||||||
GLAPI void GLAPIENTRY glArrayElement( GLint i );
|
GLAPI void GLAPIENTRY glArrayElement( GLint i );
|
||||||
|
|
||||||
@@ -1591,7 +1685,7 @@ GLAPI void GLAPIENTRY glDrawRangeElements( GLenum mode, GLuint start,
|
|||||||
GLuint end, GLsizei count, GLenum type, const GLvoid *indices );
|
GLuint end, GLsizei count, GLenum type, const GLvoid *indices );
|
||||||
|
|
||||||
GLAPI void GLAPIENTRY glTexImage3D( GLenum target, GLint level,
|
GLAPI void GLAPIENTRY glTexImage3D( GLenum target, GLint level,
|
||||||
GLint internalFormat,
|
GLenum internalFormat,
|
||||||
GLsizei width, GLsizei height,
|
GLsizei width, GLsizei height,
|
||||||
GLsizei depth, GLint border,
|
GLsizei depth, GLint border,
|
||||||
GLenum format, GLenum type,
|
GLenum format, GLenum type,
|
||||||
@@ -1723,6 +1817,102 @@ GLAPI void GLAPIENTRY glGetSeparableFilter( GLenum target, GLenum format,
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* 1.3 functions */
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glActiveTexture( GLenum texture );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glClientActiveTexture( GLenum texture );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glCompressedTexImage1D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glCompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glCompressedTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glCompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glGetCompressedTexImage( GLenum target, GLint lod, GLvoid *img );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord1d( GLenum target, GLdouble s );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord1dv( GLenum target, const GLdouble *v );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord1f( GLenum target, GLfloat s );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord1fv( GLenum target, const GLfloat *v );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord1i( GLenum target, GLint s );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord1iv( GLenum target, const GLint *v );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord1s( GLenum target, GLshort s );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord1sv( GLenum target, const GLshort *v );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord2d( GLenum target, GLdouble s, GLdouble t );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord2dv( GLenum target, const GLdouble *v );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord2f( GLenum target, GLfloat s, GLfloat t );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord2fv( GLenum target, const GLfloat *v );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord2i( GLenum target, GLint s, GLint t );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord2iv( GLenum target, const GLint *v );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord2s( GLenum target, GLshort s, GLshort t );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord2sv( GLenum target, const GLshort *v );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord3d( GLenum target, GLdouble s, GLdouble t, GLdouble r );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord3dv( GLenum target, const GLdouble *v );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord3f( GLenum target, GLfloat s, GLfloat t, GLfloat r );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord3fv( GLenum target, const GLfloat *v );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord3i( GLenum target, GLint s, GLint t, GLint r );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord3iv( GLenum target, const GLint *v );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord3s( GLenum target, GLshort s, GLshort t, GLshort r );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord3sv( GLenum target, const GLshort *v );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord4d( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord4dv( GLenum target, const GLdouble *v );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord4fv( GLenum target, const GLfloat *v );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord4i( GLenum target, GLint s, GLint t, GLint r, GLint q );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord4iv( GLenum target, const GLint *v );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultiTexCoord4sv( GLenum target, const GLshort *v );
|
||||||
|
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glLoadTransposeMatrixd( const GLdouble m[16] );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glLoadTransposeMatrixf( const GLfloat m[16] );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultTransposeMatrixd( const GLdouble m[16] );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glMultTransposeMatrixf( const GLfloat m[16] );
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glSampleCoverage( GLclampf value, GLboolean invert );
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* GL_ARB_multitexture (ARB extension 1 and OpenGL 1.2.1)
|
* GL_ARB_multitexture (ARB extension 1 and OpenGL 1.2.1)
|
||||||
*/
|
*/
|
||||||
@@ -1971,7 +2161,7 @@ GLAPI void GLAPIENTRY glTexCoordPointerEXT( GLint size, GLenum type, GLsizei str
|
|||||||
|
|
||||||
GLAPI void GLAPIENTRY glEdgeFlagPointerEXT( GLsizei stride, GLsizei count, const GLboolean *ptr );
|
GLAPI void GLAPIENTRY glEdgeFlagPointerEXT( GLsizei stride, GLsizei count, const GLboolean *ptr );
|
||||||
|
|
||||||
GLAPI void GLAPIENTRY glGetPointervEXT( GLenum pname, void **params );
|
GLAPI void GLAPIENTRY glGetPointervEXT( GLenum pname, GLvoid **params );
|
||||||
|
|
||||||
GLAPI void GLAPIENTRY glArrayElementEXT( GLint i );
|
GLAPI void GLAPIENTRY glArrayElementEXT( GLint i );
|
||||||
|
|
||||||
@@ -2228,6 +2418,19 @@ GLAPI void GLAPIENTRY glResizeBuffersMESA( void );
|
|||||||
#endif /* GL_MESA_resize_bufffers */
|
#endif /* GL_MESA_resize_bufffers */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 220. GL_EXT_texture_env_dot3
|
||||||
|
*/
|
||||||
|
#ifndef GL_EXT_texture_env_dot3
|
||||||
|
#define GL_EXT_texture_env_dot3 1
|
||||||
|
|
||||||
|
#define GL_DOT3_RGB_EXT 0x8740
|
||||||
|
#define GL_DOT3_RGBA_EXT 0x8741
|
||||||
|
|
||||||
|
#endif /* GL_EXT_texture_env_dot3 */
|
||||||
|
|
||||||
|
|
||||||
#else /* GL_GLEXT_LEGACY */
|
#else /* GL_GLEXT_LEGACY */
|
||||||
|
|
||||||
#include <GL/glext.h>
|
#include <GL/glext.h>
|
||||||
@@ -2236,6 +2439,64 @@ GLAPI void GLAPIENTRY glResizeBuffersMESA( void );
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ???. GL_MESA_trace
|
||||||
|
* XXX this should go into glext.h at some point
|
||||||
|
*/
|
||||||
|
#ifndef GL_MESA_trace
|
||||||
|
#define GL_MESA_trace 1
|
||||||
|
|
||||||
|
#define GL_TRACE_ALL_BITS_MESA 0xFFFF
|
||||||
|
#define GL_TRACE_OPERATIONS_BIT_MESA 0x0001
|
||||||
|
#define GL_TRACE_PRIMITIVES_BIT_MESA 0x0002
|
||||||
|
#define GL_TRACE_ARRAYS_BIT_MESA 0x0004
|
||||||
|
#define GL_TRACE_TEXTURES_BIT_MESA 0x0008
|
||||||
|
#define GL_TRACE_PIXELS_BIT_MESA 0x0010
|
||||||
|
#define GL_TRACE_ERRORS_BIT_MESA 0x0020
|
||||||
|
#define GL_TRACE_MASK_MESA 0x8755
|
||||||
|
#define GL_TRACE_NAME_MESA 0x8756
|
||||||
|
|
||||||
|
GLAPI void GLAPIENTRY glEnableTraceMESA( GLbitfield mask );
|
||||||
|
GLAPI void GLAPIENTRY glDisableTraceMESA( GLbitfield mask );
|
||||||
|
GLAPI void GLAPIENTRY glNewTraceMESA( GLbitfield mask, const GLubyte * traceName );
|
||||||
|
GLAPI void GLAPIENTRY glEndTraceMESA( void );
|
||||||
|
GLAPI void GLAPIENTRY glTraceAssertAttribMESA( GLbitfield attribMask );
|
||||||
|
GLAPI void GLAPIENTRY glTraceCommentMESA( const GLubyte * comment );
|
||||||
|
GLAPI void GLAPIENTRY glTraceTextureMESA( GLuint name, const GLubyte* comment );
|
||||||
|
GLAPI void GLAPIENTRY glTraceListMESA( GLuint name, const GLubyte* comment );
|
||||||
|
GLAPI void GLAPIENTRY glTracePointerMESA( GLvoid* pointer, const GLubyte* comment );
|
||||||
|
GLAPI void GLAPIENTRY glTracePointerRangeMESA( const GLvoid* first, const GLvoid* last, const GLubyte* comment );
|
||||||
|
|
||||||
|
#endif /* GL_MESA_trace */
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ???. GL_MESA_packed_depth_stencil
|
||||||
|
* XXX this will be in glext.h someday
|
||||||
|
*/
|
||||||
|
#ifndef GL_MESA_packed_depth_stencil
|
||||||
|
#define GL_MESA_packed_depth_stencil 1
|
||||||
|
|
||||||
|
#define GL_DEPTH_STENCIL_MESA 0x8750
|
||||||
|
#define GL_UNSIGNED_INT_24_8_MESA 0x8751
|
||||||
|
#define GL_UNSIGNED_INT_8_24_REV_MESA 0x8752
|
||||||
|
#define GL_UNSIGNED_SHORT_15_1_MESA 0x8753
|
||||||
|
#define GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754
|
||||||
|
|
||||||
|
#endif /* GL_MESA_packed_depth_stencil */
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ??. GL_MESA_sprite_point
|
||||||
|
*/
|
||||||
|
#ifndef GL_MESA_sprite_point
|
||||||
|
#define GL_MESA_sprite_point 1
|
||||||
|
|
||||||
|
#define GL_SPRITE_POINT_MESA 0x8757 /* XXX not finalized! */
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* Begin system-specific stuff
|
* Begin system-specific stuff
|
||||||
*/
|
*/
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
2605
include/GL/glext.h
2605
include/GL/glext.h
File diff suppressed because it is too large
Load Diff
815
include/GL/glu.h
815
include/GL/glu.h
@@ -1,534 +1,327 @@
|
|||||||
/* $Id: glu.h,v 1.22 2000/07/11 14:11:44 brianp Exp $ */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
** License Applicability. Except to the extent portions of this file are
|
||||||
* Version: 3.3
|
** made subject to an alternative license as permitted in the SGI Free
|
||||||
* Copyright (C) 1995-2000 Brian Paul
|
** 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 library is free software; you can redistribute it and/or
|
** this file except in compliance with the License. You may obtain a copy
|
||||||
* modify it under the terms of the GNU Library General Public
|
** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
|
||||||
* License as published by the Free Software Foundation; either
|
** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
|
||||||
* version 2 of the License, or (at your option) any later version.
|
**
|
||||||
*
|
** http://oss.sgi.com/projects/FreeB
|
||||||
* This library is distributed in the hope that it will be useful,
|
**
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
** Note that, as provided in the License, the Software is distributed on an
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
|
||||||
* Library General Public License for more details.
|
** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
|
||||||
*
|
** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
|
||||||
* You should have received a copy of the GNU Library General Public
|
** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
|
||||||
* License along with this library; if not, write to the Free
|
**
|
||||||
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
** 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
|
||||||
#ifndef GLU_H
|
** elsewhere herein. All Rights Reserved.
|
||||||
#define GLU_H
|
**
|
||||||
|
** 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#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>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*************************************************************/
|
||||||
|
|
||||||
#include <GL/gl.h>
|
/* Extensions */
|
||||||
|
#define GLU_EXT_object_space_tess 1
|
||||||
|
#define GLU_EXT_nurbs_tessellator 1
|
||||||
|
|
||||||
|
/* Boolean */
|
||||||
|
#define GLU_FALSE 0
|
||||||
|
#define GLU_TRUE 1
|
||||||
|
|
||||||
|
/* Version */
|
||||||
|
#define GLU_VERSION_1_1 1
|
||||||
|
#define GLU_VERSION_1_2 1
|
||||||
|
#define GLU_VERSION_1_3 1
|
||||||
|
|
||||||
|
/* 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
|
||||||
|
|
||||||
|
/*************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/* to facilitate clean DLL building ... */
|
#ifdef __cplusplus
|
||||||
#if !defined(OPENSTEP) && (defined(__WIN32__) || defined(__CYGWIN__))
|
class GLUnurbs;
|
||||||
# if defined(_MSC_VER) && defined(BUILD_GLU32) /* tag specify we're building mesa as a DLL */
|
class GLUquadric;
|
||||||
# define GLUAPI __declspec(dllexport)
|
class GLUtesselator;
|
||||||
# elif defined(_MSC_VER) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
|
|
||||||
# define GLUAPI __declspec(dllimport)
|
|
||||||
# else /* for use with static link lib build of Win32 edition only */
|
|
||||||
# define GLUAPI extern
|
|
||||||
# endif /* _STATIC_MESA support */
|
|
||||||
# define GLCALLBACK __stdcall
|
|
||||||
# define GLCALLBACKP __stdcall *
|
|
||||||
#else
|
#else
|
||||||
# define GLUAPI extern
|
typedef struct GLUnurbs GLUnurbs;
|
||||||
# define GLCALLBACK
|
typedef struct GLUquadric GLUquadric;
|
||||||
# define GLCALLBACKP *
|
typedef struct GLUtesselator GLUtesselator;
|
||||||
#endif /* WIN32 / CYGWIN bracket */
|
|
||||||
|
|
||||||
/* compatability guard so we don't need to change client code */
|
|
||||||
#if defined(_WIN32) && !defined(_WINDEF_) && !defined(_GNU_H_WINDOWS32_BASE) && !defined(OPENSTEP)
|
|
||||||
# define CALLBACK GLCALLBACK
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef macintosh
|
|
||||||
#pragma enumsalwaysint on
|
|
||||||
#if PRAGMA_IMPORT_SUPPORTED
|
|
||||||
#pragma import on
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLUAPI
|
|
||||||
#define GLUAPI
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLAPIENTRY
|
|
||||||
#define GLAPIENTRY
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GLCALLBACK
|
|
||||||
#define GLCALLBACK
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#define GLU_VERSION_1_1 1
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define GLU_TRUE 1
|
|
||||||
#define GLU_FALSE 0
|
|
||||||
|
|
||||||
|
|
||||||
/* Normal vectors */
|
|
||||||
#define GLU_SMOOTH 100000
|
|
||||||
#define GLU_FLAT 100001
|
|
||||||
#define GLU_NONE 100002
|
|
||||||
|
|
||||||
/* Quadric draw styles */
|
|
||||||
#define GLU_POINT 100010
|
|
||||||
#define GLU_LINE 100011
|
|
||||||
#define GLU_FILL 100012
|
|
||||||
#define GLU_SILHOUETTE 100013
|
|
||||||
|
|
||||||
/* Quadric orientation */
|
|
||||||
#define GLU_OUTSIDE 100020
|
|
||||||
#define GLU_INSIDE 100021
|
|
||||||
|
|
||||||
/* Tessellator */
|
|
||||||
#define GLU_TESS_BEGIN 100100
|
|
||||||
#define GLU_TESS_VERTEX 100101
|
|
||||||
#define GLU_TESS_END 100102
|
|
||||||
#define GLU_TESS_ERROR 100103
|
|
||||||
#define GLU_TESS_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
|
|
||||||
|
|
||||||
/* Winding rules */
|
|
||||||
#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
|
|
||||||
|
|
||||||
/* Tessellation properties */
|
|
||||||
#define GLU_TESS_WINDING_RULE 100140
|
|
||||||
#define GLU_TESS_BOUNDARY_ONLY 100141
|
|
||||||
#define GLU_TESS_TOLERANCE 100142
|
|
||||||
|
|
||||||
/* Tessellation errors */
|
|
||||||
#define GLU_TESS_ERROR1 100151 /* Missing gluBeginPolygon */
|
|
||||||
#define GLU_TESS_ERROR2 100152 /* Missing gluBeginContour */
|
|
||||||
#define GLU_TESS_ERROR3 100153 /* Missing gluEndPolygon */
|
|
||||||
#define GLU_TESS_ERROR4 100154 /* Missing gluEndContour */
|
|
||||||
#define GLU_TESS_ERROR5 100155 /* */
|
|
||||||
#define GLU_TESS_ERROR6 100156 /* */
|
|
||||||
#define GLU_TESS_ERROR7 100157 /* */
|
|
||||||
#define GLU_TESS_ERROR8 100158 /* */
|
|
||||||
|
|
||||||
/* NURBS */
|
|
||||||
#define GLU_AUTO_LOAD_MATRIX 100200
|
|
||||||
#define GLU_CULLING 100201
|
|
||||||
#define GLU_PARAMETRIC_TOLERANCE 100202
|
|
||||||
#define GLU_SAMPLING_TOLERANCE 100203
|
|
||||||
#define GLU_DISPLAY_MODE 100204
|
|
||||||
#define GLU_SAMPLING_METHOD 100205
|
|
||||||
#define GLU_U_STEP 100206
|
|
||||||
#define GLU_V_STEP 100207
|
|
||||||
|
|
||||||
#define GLU_PATH_LENGTH 100215
|
|
||||||
#define GLU_PARAMETRIC_ERROR 100216
|
|
||||||
#define GLU_DOMAIN_DISTANCE 100217
|
|
||||||
|
|
||||||
#define GLU_MAP1_TRIM_2 100210
|
|
||||||
#define GLU_MAP1_TRIM_3 100211
|
|
||||||
|
|
||||||
#define GLU_OUTLINE_POLYGON 100240
|
|
||||||
#define GLU_OUTLINE_PATCH 100241
|
|
||||||
|
|
||||||
#define GLU_NURBS_ERROR1 100251 /* spline order un-supported */
|
|
||||||
#define GLU_NURBS_ERROR2 100252 /* too few knots */
|
|
||||||
#define GLU_NURBS_ERROR3 100253 /* valid knot range is empty */
|
|
||||||
#define GLU_NURBS_ERROR4 100254 /* decreasing knot sequence */
|
|
||||||
#define GLU_NURBS_ERROR5 100255 /* knot multiplicity > spline order */
|
|
||||||
#define GLU_NURBS_ERROR6 100256 /* endcurve() must follow bgncurve() */
|
|
||||||
#define GLU_NURBS_ERROR7 100257 /* bgncurve() must precede endcurve() */
|
|
||||||
#define GLU_NURBS_ERROR8 100258 /* ctrlarray or knot vector is NULL */
|
|
||||||
#define GLU_NURBS_ERROR9 100259 /* can't draw pwlcurves */
|
|
||||||
#define GLU_NURBS_ERROR10 100260 /* missing gluNurbsCurve() */
|
|
||||||
#define GLU_NURBS_ERROR11 100261 /* missing gluNurbsSurface() */
|
|
||||||
#define GLU_NURBS_ERROR12 100262 /* endtrim() must precede endsurface() */
|
|
||||||
#define GLU_NURBS_ERROR13 100263 /* bgnsurface() must precede endsurface() */
|
|
||||||
#define GLU_NURBS_ERROR14 100264 /* curve of improper type passed as trim curve */
|
|
||||||
#define GLU_NURBS_ERROR15 100265 /* bgnsurface() must precede bgntrim() */
|
|
||||||
#define GLU_NURBS_ERROR16 100266 /* endtrim() must follow bgntrim() */
|
|
||||||
#define GLU_NURBS_ERROR17 100267 /* bgntrim() must precede endtrim()*/
|
|
||||||
#define GLU_NURBS_ERROR18 100268 /* invalid or missing trim curve*/
|
|
||||||
#define GLU_NURBS_ERROR19 100269 /* bgntrim() must precede pwlcurve() */
|
|
||||||
#define GLU_NURBS_ERROR20 100270 /* pwlcurve referenced twice*/
|
|
||||||
#define GLU_NURBS_ERROR21 100271 /* pwlcurve and nurbscurve mixed */
|
|
||||||
#define GLU_NURBS_ERROR22 100272 /* improper usage of trim data type */
|
|
||||||
#define GLU_NURBS_ERROR23 100273 /* nurbscurve referenced twice */
|
|
||||||
#define GLU_NURBS_ERROR24 100274 /* nurbscurve and pwlcurve mixed */
|
|
||||||
#define GLU_NURBS_ERROR25 100275 /* nurbssurface referenced twice */
|
|
||||||
#define GLU_NURBS_ERROR26 100276 /* invalid property */
|
|
||||||
#define GLU_NURBS_ERROR27 100277 /* endsurface() must follow bgnsurface() */
|
|
||||||
#define GLU_NURBS_ERROR28 100278 /* intersecting or misoriented trim curves */
|
|
||||||
#define GLU_NURBS_ERROR29 100279 /* intersecting trim curves */
|
|
||||||
#define GLU_NURBS_ERROR30 100280 /* UNUSED */
|
|
||||||
#define GLU_NURBS_ERROR31 100281 /* unconnected trim curves */
|
|
||||||
#define GLU_NURBS_ERROR32 100282 /* unknown knot error */
|
|
||||||
#define GLU_NURBS_ERROR33 100283 /* negative vertex count encountered */
|
|
||||||
#define GLU_NURBS_ERROR34 100284 /* negative byte-stride */
|
|
||||||
#define GLU_NURBS_ERROR35 100285 /* unknown type descriptor */
|
|
||||||
#define GLU_NURBS_ERROR36 100286 /* null control point reference */
|
|
||||||
#define GLU_NURBS_ERROR37 100287 /* duplicate point on pwlcurve */
|
|
||||||
|
|
||||||
/* GLU 1.3 and later */
|
|
||||||
#define GLU_NURBS_MODE ?
|
|
||||||
|
|
||||||
|
|
||||||
/* Errors */
|
|
||||||
#define GLU_INVALID_ENUM 100900
|
|
||||||
#define GLU_INVALID_VALUE 100901
|
|
||||||
#define GLU_OUT_OF_MEMORY 100902
|
|
||||||
#define GLU_INCOMPATIBLE_GL_VERSION 100903
|
|
||||||
|
|
||||||
/* GLU 1.1 and later */
|
|
||||||
#define GLU_VERSION 100800
|
|
||||||
#define GLU_EXTENSIONS 100801
|
|
||||||
|
|
||||||
|
|
||||||
/*** GLU 1.0 tessellation ***/
|
|
||||||
|
|
||||||
/* Contour types */
|
|
||||||
#define GLU_CW 100120
|
|
||||||
#define GLU_CCW 100121
|
|
||||||
#define GLU_INTERIOR 100122
|
|
||||||
#define GLU_EXTERIOR 100123
|
|
||||||
#define GLU_UNKNOWN 100124
|
|
||||||
|
|
||||||
/* Tessellator */
|
|
||||||
#define GLU_BEGIN GLU_TESS_BEGIN
|
|
||||||
#define GLU_VERTEX GLU_TESS_VERTEX
|
|
||||||
#define GLU_END GLU_TESS_END
|
|
||||||
#define GLU_ERROR GLU_TESS_ERROR
|
|
||||||
#define 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
|
#endif
|
||||||
|
|
||||||
|
typedef GLUnurbs GLUnurbsObj;
|
||||||
|
typedef GLUquadric GLUquadricObj;
|
||||||
|
typedef GLUtesselator GLUtesselatorObj;
|
||||||
|
typedef GLUtesselator GLUtriangulatorObj;
|
||||||
|
|
||||||
|
#define GLU_TESS_MAX_COORD 1.0e150
|
||||||
|
|
||||||
|
/* Internal convenience typedefs */
|
||||||
|
typedef void (GLAPIENTRY *_GLUfuncptr)();
|
||||||
|
|
||||||
|
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.2 1999/09/10 02:08:19 gareth Exp $ */
|
/* $Id: glu_mangle.h,v 1.3 2001/09/20 22:18:47 kschultz Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -23,6 +23,9 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* $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).
|
||||||
*
|
*
|
||||||
@@ -92,5 +95,11 @@
|
|||||||
#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
|
||||||
|
|||||||
@@ -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. */
|
||||||
extern void* GLUTAPIENTRY __glutGetFCB(int which);
|
GLUTAPI void* APIENTRY __glutGetFCB(int which);
|
||||||
extern void GLUTAPIENTRY __glutSetFCB(int which, void *func);
|
GLUTAPI void APIENTRY __glutSetFCB(int which, void *func);
|
||||||
|
|
||||||
#endif /* __glutf90_h__ */
|
#endif /* __glutf90_h__ */
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
/* $Id: glx.h,v 1.22 2000/06/23 17:39:18 brianp Exp $ */
|
/* $Id: glx.h,v 1.33.2.1 2001/12/14 03:20:57 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 3.3
|
* Version: 4.0
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
* Copyright (C) 1999-2001 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"),
|
||||||
@@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifdef __VMS
|
#ifdef __VMS
|
||||||
|
#include <GL/vms_x_fix.h>
|
||||||
# ifdef __cplusplus
|
# ifdef __cplusplus
|
||||||
/* VMS Xlib.h gives problems with C++.
|
/* VMS Xlib.h gives problems with C++.
|
||||||
* this avoids a bunch of trivial warnings */
|
* this avoids a bunch of trivial warnings */
|
||||||
@@ -43,11 +44,11 @@
|
|||||||
#pragma message enable nosimpint
|
#pragma message enable nosimpint
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#include "GL/gl.h"
|
#include <GL/gl.h>
|
||||||
|
|
||||||
|
|
||||||
#if defined(USE_MGL_NAMESPACE)
|
#if defined(USE_MGL_NAMESPACE)
|
||||||
#include "glx_mangle.h"
|
#include <GL/glx_mangle.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -59,6 +60,7 @@ extern "C" {
|
|||||||
#define GLX_VERSION_1_1 1
|
#define GLX_VERSION_1_1 1
|
||||||
#define GLX_VERSION_1_2 1
|
#define GLX_VERSION_1_2 1
|
||||||
#define GLX_VERSION_1_3 1
|
#define GLX_VERSION_1_3 1
|
||||||
|
#define GLX_VERSION_1_4 1
|
||||||
|
|
||||||
#define GLX_EXTENSION_NAME "GLX"
|
#define GLX_EXTENSION_NAME "GLX"
|
||||||
|
|
||||||
@@ -124,7 +126,10 @@ extern "C" {
|
|||||||
#define GLX_MAX_PBUFFER_HEIGHT 0x8017
|
#define GLX_MAX_PBUFFER_HEIGHT 0x8017
|
||||||
#define GLX_MAX_PBUFFER_PIXELS 0x8018
|
#define GLX_MAX_PBUFFER_PIXELS 0x8018
|
||||||
#define GLX_PRESERVED_CONTENTS 0x801B
|
#define GLX_PRESERVED_CONTENTS 0x801B
|
||||||
#define GLX_LARGEST_BUFFER 0x801C
|
#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_DRAWABLE_TYPE 0x8010
|
||||||
#define GLX_FBCONFIG_ID 0x8013
|
#define GLX_FBCONFIG_ID 0x8013
|
||||||
#define GLX_VISUAL_ID 0x800B
|
#define GLX_VISUAL_ID 0x800B
|
||||||
@@ -136,7 +141,6 @@ extern "C" {
|
|||||||
#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
|
#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
|
||||||
#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
|
#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
|
||||||
#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
|
#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
|
||||||
#define GLX_AUX_BUFFERS_BIT 0x00000010
|
|
||||||
#define GLX_DEPTH_BUFFER_BIT 0x00000020
|
#define GLX_DEPTH_BUFFER_BIT 0x00000020
|
||||||
#define GLX_STENCIL_BUFFER_BIT 0x00000040
|
#define GLX_STENCIL_BUFFER_BIT 0x00000040
|
||||||
#define GLX_ACCUM_BUFFER_BIT 0x00000080
|
#define GLX_ACCUM_BUFFER_BIT 0x00000080
|
||||||
@@ -151,22 +155,33 @@ extern "C" {
|
|||||||
#define GLX_GRAY_SCALE 0x8006
|
#define GLX_GRAY_SCALE 0x8006
|
||||||
#define GLX_STATIC_GRAY 0x8007
|
#define GLX_STATIC_GRAY 0x8007
|
||||||
#define GLX_TRANSPARENT_INDEX 0x8009
|
#define GLX_TRANSPARENT_INDEX 0x8009
|
||||||
|
#define GLX_RGBA_TYPE 0x8014
|
||||||
#define GLX_COLOR_INDEX_TYPE 0x8015
|
#define GLX_COLOR_INDEX_TYPE 0x8015
|
||||||
#define GLX_COLOR_INDEX_BIT 0x00000002
|
#define GLX_COLOR_INDEX_BIT 0x00000002
|
||||||
|
#define GLX_RGBA_BIT 0x00000001
|
||||||
#define GLX_SCREEN 0x800C
|
#define GLX_SCREEN 0x800C
|
||||||
#define GLX_PBUFFER_CLOBBER_MASK 0x08000000
|
#define GLX_PBUFFER_CLOBBER_MASK 0x08000000
|
||||||
#define GLX_DAMAGED 0x8020
|
#define GLX_DAMAGED 0x8020
|
||||||
#define GLX_SAVED 0x8021
|
#define GLX_SAVED 0x8021
|
||||||
#define GLX_WINDOW 0x8022
|
#define GLX_WINDOW 0x8022
|
||||||
#define GLX_PBUFFER 0x8033
|
#define GLX_PBUFFER 0x8023
|
||||||
|
#define GLX_PBUFFER_HEIGHT 0x8040
|
||||||
|
#define GLX_PBUFFER_WIDTH 0x8041
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLX 1.4 and later:
|
||||||
|
*/
|
||||||
|
#define GLX_SAMPLE_BUFFERS 0x186a0 /*100000*/
|
||||||
|
#define GLX_SAMPLES 0x186a1 /*100001*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef void * GLXContext;
|
typedef struct __GLXcontextRec *GLXContext;
|
||||||
typedef XID GLXPixmap;
|
typedef XID GLXPixmap;
|
||||||
typedef XID GLXDrawable;
|
typedef XID GLXDrawable;
|
||||||
/* GLX 1.3 and later */
|
/* GLX 1.3 and later */
|
||||||
typedef void * GLXFBConfig;
|
typedef struct __GLXFBConfigRec *GLXFBConfig;
|
||||||
typedef XID GLXFBConfigID;
|
typedef XID GLXFBConfigID;
|
||||||
typedef XID GLXContextID;
|
typedef XID GLXContextID;
|
||||||
typedef XID GLXWindow;
|
typedef XID GLXWindow;
|
||||||
@@ -278,12 +293,16 @@ extern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable,
|
|||||||
unsigned long *mask );
|
unsigned long *mask );
|
||||||
|
|
||||||
|
|
||||||
|
/* GLX 1.4 and later */
|
||||||
|
extern void (*glXGetProcAddress(const GLubyte *procname))();
|
||||||
|
|
||||||
/*#ifndef GLX_GLXEXT_LEGACY*/
|
|
||||||
|
|
||||||
/*#include <GL/glxext.h>*/
|
|
||||||
|
|
||||||
/*#else*/
|
#ifndef GLX_GLXEXT_LEGACY
|
||||||
|
|
||||||
|
#include <GL/glxext.h>
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -413,7 +432,7 @@ extern Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d );
|
|||||||
#define GLX_3DFX_WINDOW_MODE_MESA 0x1
|
#define GLX_3DFX_WINDOW_MODE_MESA 0x1
|
||||||
#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2
|
#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2
|
||||||
|
|
||||||
extern GLboolean glXSet3DfxModeMESA( GLint mode );
|
extern Bool glXSet3DfxModeMESA( int mode );
|
||||||
|
|
||||||
#endif /* GLX_MESA_set_3dfx_mode */
|
#endif /* GLX_MESA_set_3dfx_mode */
|
||||||
|
|
||||||
@@ -431,7 +450,7 @@ extern void (*glXGetProcAddressARB(const GLubyte *procName))();
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*#endif*/ /* GLX_GLXEXT_LEGACY */
|
#endif /* GLX_GLXEXT_LEGACY */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
/* $Id: glx_mangle.h,v 1.1 1999/08/19 00:55:40 jtg Exp $ */
|
/* $Id: glx_mangle.h,v 1.1.1.1.8.1 2001/11/09 22:00:26 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 3.0
|
* Version: 4.1
|
||||||
* 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,25 +21,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* $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
|
||||||
|
|
||||||
@@ -69,4 +50,8 @@
|
|||||||
#define glXGetVideoSyncSGI mglXGetVideoSyncSGI
|
#define glXGetVideoSyncSGI mglXGetVideoSyncSGI
|
||||||
#define glXWaitVideoSyncSGI mglXWaitVideoSyncSGI
|
#define glXWaitVideoSyncSGI mglXWaitVideoSyncSGI
|
||||||
|
|
||||||
|
/* GLX 1.4 */
|
||||||
|
#define glXGetProcAddress mglXGetProcAddress
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
607
include/GL/glxext.h
Normal file
607
include/GL/glxext.h
Normal file
@@ -0,0 +1,607 @@
|
|||||||
|
#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
|
||||||
424
include/GL/internal/glcore-new.h
Normal file
424
include/GL/internal/glcore-new.h
Normal file
@@ -0,0 +1,424 @@
|
|||||||
|
#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_ */
|
||||||
424
include/GL/internal/glcore.h
Normal file
424
include/GL/internal/glcore.h
Normal file
@@ -0,0 +1,424 @@
|
|||||||
|
/* $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 */
|
||||||
|
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,4 +1,4 @@
|
|||||||
/* $Id: mesa_wgl.h,v 1.5 2000/05/22 16:21:27 brianp Exp $ */
|
/* $Id: mesa_wgl.h,v 1.6 2001/05/07 13:58:00 gareth Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -28,6 +28,8 @@
|
|||||||
/* 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_
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
/* $Id: osmesa.h,v 1.5 2000/03/28 16:59:39 rjfrank Exp $ */
|
/* $Id: osmesa.h,v 1.9 2001/09/23 16:06:13 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 3.3
|
* Version: 4.0
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
* Copyright (C) 1999-2001 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"),
|
||||||
@@ -59,11 +59,12 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include "GL/gl.h"
|
#include <GL/gl.h>
|
||||||
|
|
||||||
|
|
||||||
#define OSMESA_MAJOR_VERSION 3
|
#define OSMESA_MAJOR_VERSION 4
|
||||||
#define OSMESA_MINOR_VERSION 3
|
#define OSMESA_MINOR_VERSION 0
|
||||||
|
#define OSMESA_PATCH_VERSION 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -77,6 +78,7 @@ 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
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -94,6 +96,8 @@ 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;
|
||||||
@@ -114,18 +118,31 @@ 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 OSMesaCreateContext( GLenum format,
|
GLAPI OSMesaContext GLAPIENTRY
|
||||||
OSMesaContext sharelist );
|
OSMesaCreateContext( GLenum format, 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 OSMesaDestroyContext( OSMesaContext ctx );
|
GLAPI void GLAPIENTRY
|
||||||
|
OSMesaDestroyContext( OSMesaContext ctx );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -156,9 +173,9 @@ GLAPI void GLAPIENTRY 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 OSMesaMakeCurrent( OSMesaContext ctx,
|
GLAPI GLboolean GLAPIENTRY
|
||||||
void *buffer, GLenum type,
|
OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type,
|
||||||
GLsizei width, GLsizei height );
|
GLsizei width, GLsizei height );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -166,7 +183,8 @@ GLAPI GLboolean GLAPIENTRY OSMesaMakeCurrent( OSMesaContext ctx,
|
|||||||
/*
|
/*
|
||||||
* Return the current Off-Screen Mesa rendering context handle.
|
* Return the current Off-Screen Mesa rendering context handle.
|
||||||
*/
|
*/
|
||||||
GLAPI OSMesaContext GLAPIENTRY OSMesaGetCurrentContext( void );
|
GLAPI OSMesaContext GLAPIENTRY
|
||||||
|
OSMesaGetCurrentContext( void );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -183,7 +201,8 @@ GLAPI OSMesaContext GLAPIENTRY OSMesaGetCurrentContext( void );
|
|||||||
*
|
*
|
||||||
* New in version 2.0.
|
* New in version 2.0.
|
||||||
*/
|
*/
|
||||||
GLAPI void GLAPIENTRY OSMesaPixelStore( GLint pname, GLint value );
|
GLAPI void GLAPIENTRY
|
||||||
|
OSMesaPixelStore( GLint pname, GLint value );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -198,7 +217,8 @@ GLAPI void GLAPIENTRY 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 OSMesaGetIntegerv( GLint pname, GLint *value );
|
GLAPI void GLAPIENTRY
|
||||||
|
OSMesaGetIntegerv( GLint pname, GLint *value );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -212,10 +232,10 @@ GLAPI void GLAPIENTRY OSMesaGetIntegerv( GLint pname, GLint *value );
|
|||||||
*
|
*
|
||||||
* New in Mesa 2.4.
|
* New in Mesa 2.4.
|
||||||
*/
|
*/
|
||||||
GLAPI GLboolean GLAPIENTRY OSMesaGetDepthBuffer( OSMesaContext c,
|
GLAPI GLboolean GLAPIENTRY
|
||||||
GLint *width, GLint *height,
|
OSMesaGetDepthBuffer( OSMesaContext c, GLint *width, GLint *height,
|
||||||
GLint *bytesPerValue,
|
GLint *bytesPerValue, void **buffer );
|
||||||
void **buffer );
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -228,10 +248,10 @@ GLAPI GLboolean GLAPIENTRY OSMesaGetDepthBuffer( OSMesaContext c,
|
|||||||
*
|
*
|
||||||
* New in Mesa 3.3.
|
* New in Mesa 3.3.
|
||||||
*/
|
*/
|
||||||
GLAPI GLboolean GLAPIENTRY OSMesaGetColorBuffer( OSMesaContext c,
|
GLAPI GLboolean GLAPIENTRY
|
||||||
GLint *width, GLint *height,
|
OSMesaGetColorBuffer( OSMesaContext c, GLint *width, GLint *height,
|
||||||
GLint *format,
|
GLint *format, void **buffer );
|
||||||
void **buffer );
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(__BEOS__) || defined(__QUICKDRAW__)
|
#if defined(__BEOS__) || defined(__QUICKDRAW__)
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
/* $Id: svgamesa.h,v 1.4 2000/02/09 19:03:28 brianp Exp $ */
|
/* $Id: svgamesa.h,v 1.6 2001/09/23 16:06:13 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 3.3
|
* Version: 4.0
|
||||||
* Copyright (C) 1995-2000 Brian Paul
|
* Copyright (C) 1995-2001 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 3
|
#define SVGAMESA_MAJOR_VERSION 4
|
||||||
#define SVGAMESA_MINOR_VERSION 3
|
#define SVGAMESA_MINOR_VERSION 0
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
45
include/GL/uglglutshapes.h
Normal file
45
include/GL/uglglutshapes.h
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
/* 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
|
||||||
155
include/GL/uglmesa.h
Normal file
155
include/GL/uglmesa.h
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
/* 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
|
||||||
880
include/GL/vms_x_fix.h
Normal file
880
include/GL/vms_x_fix.h
Normal file
@@ -0,0 +1,880 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* *
|
||||||
|
* 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,10 +1,10 @@
|
|||||||
/* $Id: xmesa.h,v 1.8 2000/05/02 02:30:01 brianp Exp $ */
|
/* $Id: xmesa.h,v 1.12.2.1 2002/03/16 00:50:36 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 3.3
|
* Version: 4.0.2
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
* Copyright (C) 1999-2002 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,7 +58,6 @@ 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.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -67,12 +66,14 @@ See the demos/xdemo.c and xmesa1.c files for examples.
|
|||||||
#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
|
||||||
@@ -88,8 +89,8 @@ extern struct Library *XLibBase;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define XMESA_MAJOR_VERSION 3
|
#define XMESA_MAJOR_VERSION 4
|
||||||
#define XMESA_MINOR_VERSION 3
|
#define XMESA_MINOR_VERSION 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -364,6 +365,15 @@ 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 );
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# $Id: Makefile.BeOS-R4,v 1.12 2000/06/27 16:54:18 brianp Exp $
|
# $Id: Makefile.BeOS-R4,v 1.14 2001/02/20 17:04:52 brianp Exp $
|
||||||
|
|
||||||
# Mesa 3-D graphics library
|
# Mesa 3-D graphics library
|
||||||
# Version: 3.3
|
# Version: 3.5
|
||||||
# Copyright (C) 1995-2000 Brian Paul
|
# Copyright (C) 1995-2001 Brian Paul
|
||||||
|
|
||||||
|
|
||||||
# Makefile for GLUT-based demo programs for BeOS R4
|
# Makefile for GLUT-based demo programs for BeOS R4
|
||||||
@@ -43,6 +43,7 @@ PROGS = bounce \
|
|||||||
readpix \
|
readpix \
|
||||||
reflect \
|
reflect \
|
||||||
renormal \
|
renormal \
|
||||||
|
shadowtex \
|
||||||
spectex \
|
spectex \
|
||||||
stex3d \
|
stex3d \
|
||||||
teapot \
|
teapot \
|
||||||
@@ -64,7 +65,7 @@ PROGS = bounce \
|
|||||||
.SUFFIXES: .c
|
.SUFFIXES: .c
|
||||||
|
|
||||||
.c: $(LIB_DEP)
|
.c: $(LIB_DEP)
|
||||||
$(CC) -I$(INCDIR) $(CFLAGS) $< $(GL_LIBS) -o $@
|
$(CC) -I$(INCDIR) -I../util $(CFLAGS) $< $(GL_LIBS) -o $@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# $Id: Makefile.X11,v 1.14 2000/06/27 16:54:18 brianp Exp $
|
# $Id: Makefile.X11,v 1.20 2001/08/21 05:42:11 gareth Exp $
|
||||||
|
|
||||||
# Mesa 3-D graphics library
|
# Mesa 3-D graphics library
|
||||||
# Version: 3.3
|
# Version: 3.5
|
||||||
# Copyright (C) 1995-2000 Brian Paul
|
# Copyright (C) 1995-2001 Brian Paul
|
||||||
|
|
||||||
# Makefile for GLUT-based demo programs for Unix/X11
|
# Makefile for GLUT-based demo programs for Unix/X11
|
||||||
|
|
||||||
@@ -14,6 +14,8 @@ LIBDIR = ../lib
|
|||||||
|
|
||||||
GL_LIBS = -L$(LIBDIR) -lglut -lGLU -lGL $(APP_LIB_DEPS)
|
GL_LIBS = -L$(LIBDIR) -lglut -lGLU -lGL $(APP_LIB_DEPS)
|
||||||
|
|
||||||
|
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 \
|
||||||
@@ -42,6 +44,7 @@ PROGS = bounce \
|
|||||||
readpix \
|
readpix \
|
||||||
reflect \
|
reflect \
|
||||||
renormal \
|
renormal \
|
||||||
|
shadowtex \
|
||||||
spectex \
|
spectex \
|
||||||
stex3d \
|
stex3d \
|
||||||
teapot \
|
teapot \
|
||||||
@@ -62,9 +65,14 @@ PROGS = bounce \
|
|||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.SUFFIXES: .c
|
.SUFFIXES: .c
|
||||||
|
|
||||||
.c: $(LIB_DEP)
|
|
||||||
$(CC) -I$(INCDIR) $(CFLAGS) $< $(GL_LIBS) -o $@
|
|
||||||
|
|
||||||
|
# make executable from .c file:
|
||||||
|
.c: $(LIB_DEP)
|
||||||
|
$(CC) -I$(INCDIR) -I../util $(CFLAGS) $< $(GL_LIBS) -o $@
|
||||||
|
|
||||||
|
# special case: need the -lOSMesa library:
|
||||||
|
osdemo: osdemo.c
|
||||||
|
$(CC) -I$(INCDIR) $(CFLAGS) osdemo.c $(OSMESA_LIBS) -o $@
|
||||||
|
|
||||||
|
|
||||||
##### TARGETS #####
|
##### TARGETS #####
|
||||||
@@ -78,8 +86,17 @@ 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)
|
||||||
@@ -92,4 +109,3 @@ exec: $(PROGS)
|
|||||||
|
|
||||||
|
|
||||||
include ../Make-config
|
include ../Make-config
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# $Id: Makefile.cygnus,v 1.11 2000/06/27 16:54:18 brianp Exp $
|
# $Id: Makefile.cygnus,v 1.12 2000/12/24 22:53:54 pesco Exp $
|
||||||
|
|
||||||
# Mesa 3-D graphics library
|
# Mesa 3-D graphics library
|
||||||
# Version: 3.3
|
# Version: 3.3
|
||||||
@@ -66,7 +66,7 @@ PROGS = bounce \
|
|||||||
.SUFFIXES: .c
|
.SUFFIXES: .c
|
||||||
|
|
||||||
.c: $(LIB_DEP)
|
.c: $(LIB_DEP)
|
||||||
$(CC) -I$(INCDIR) $(CFLAGS) $< $(GL_LIBS) -o $@
|
$(CC) -I$(INCDIR) -I../util $(CFLAGS) $< $(GL_LIBS) -o $@
|
||||||
|
|
||||||
|
|
||||||
##### TARGETS #####
|
##### TARGETS #####
|
||||||
|
|||||||
98
progs/demos/Makefile.win
Normal file
98
progs/demos/Makefile.win
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
# $Id: Makefile.win,v 1.5.2.1 2001/10/26 21:03:15 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 \
|
||||||
|
isosurf.c \
|
||||||
|
morph3d.c \
|
||||||
|
teapot.c
|
||||||
|
|
||||||
|
OSMESASRCS = osdemo.c
|
||||||
|
|
||||||
|
!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)
|
||||||
|
|
||||||
|
readtex.c:
|
||||||
|
-copy ..\util\readtex.c .
|
||||||
|
|
||||||
|
readtex.h:
|
||||||
|
-copy ..\util\readtex.h .
|
||||||
|
|
||||||
@@ -1,36 +1,13 @@
|
|||||||
/* $Id: bounce.c,v 1.2 2000/06/27 17:04:43 brianp Exp $ */
|
/* $Id: bounce.c,v 1.3 2000/08/16 20:36:34 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Bouncing ball demo. Color index mode only!
|
* Bouncing ball demo.
|
||||||
*
|
*
|
||||||
* 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.2 2000/06/27 17:04:43 brianp
|
|
||||||
* fixed compiler warnings
|
|
||||||
*
|
|
||||||
* Revision 1.1.1.1 1999/08/19 00:55:40 jtg
|
|
||||||
* Imported sources
|
|
||||||
*
|
|
||||||
* 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
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -84,9 +61,9 @@ make_ball(void)
|
|||||||
glColor3f(1, 1, 1);
|
glColor3f(1, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
x = COS(b) * COS(a);
|
x = radius * COS(b) * COS(a);
|
||||||
y = SIN(b) * COS(a);
|
y = radius * SIN(b) * COS(a);
|
||||||
z = SIN(a);
|
z = radius * SIN(a);
|
||||||
glVertex3f(x, y, z);
|
glVertex3f(x, y, z);
|
||||||
|
|
||||||
x = radius * COS(b) * COS(a + da);
|
x = radius * COS(b) * COS(a + da);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: clearspd.c,v 1.2 2000/04/10 16:25:15 brianp Exp $ */
|
/* $Id: clearspd.c,v 1.3 2000/12/07 21:50:39 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Simple GLUT program to measure glClear() and glutSwapBuffers() speed.
|
* Simple GLUT program to measure glClear() and glutSwapBuffers() speed.
|
||||||
@@ -7,6 +7,9 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: clearspd.c,v $
|
* $Log: clearspd.c,v $
|
||||||
|
* Revision 1.3 2000/12/07 21:50:39 brianp
|
||||||
|
* call glFinish() before getting t1 time
|
||||||
|
*
|
||||||
* Revision 1.2 2000/04/10 16:25:15 brianp
|
* Revision 1.2 2000/04/10 16:25:15 brianp
|
||||||
* fixed visual selection and reporting results
|
* fixed visual selection and reporting results
|
||||||
*
|
*
|
||||||
@@ -71,14 +74,15 @@ 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 {
|
||||||
t0 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
t0 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
||||||
for (i=0;i<Loops;i++) {
|
for (i=0;i<Loops;i++) {
|
||||||
glClear( BufferMask );
|
glClear( BufferMask );
|
||||||
glFlush();
|
|
||||||
}
|
}
|
||||||
|
glFinish();
|
||||||
t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
||||||
glutSwapBuffers();
|
glutSwapBuffers();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
##### MACROS #####
|
##### MACROS #####
|
||||||
|
|
||||||
INCDIR = [-.include]
|
INCDIR = ([-.include],[-.util])
|
||||||
CFLAGS = /include=$(INCDIR)/prefix=all
|
CFLAGS = /include=$(INCDIR)/prefix=all/name=(as_is,short)
|
||||||
|
|
||||||
.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 :
|
||||||
link $(MMS$TARGET_NAME),$(GL_LIBS)
|
cxxlink $(MMS$TARGET_NAME),$(GL_LIBS)
|
||||||
|
|
||||||
##### TARGETS #####
|
##### TARGETS #####
|
||||||
default :
|
default :
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: drawpix.c,v 1.3 1999/10/28 18:23:29 brianp Exp $ */
|
/* $Id: drawpix.c,v 1.5 2000/12/24 22:53:54 pesco Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* glDrawPixels demo/test/benchmark
|
* glDrawPixels demo/test/benchmark
|
||||||
@@ -8,6 +8,35 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: drawpix.c,v $
|
* $Log: drawpix.c,v $
|
||||||
|
* Revision 1.5 2000/12/24 22:53:54 pesco
|
||||||
|
* * demos/Makefile.am (INCLUDES): Added -I$(top_srcdir)/util.
|
||||||
|
* * demos/Makefile.X11, demos/Makefile.BeOS-R4, demos/Makefile.cygnus:
|
||||||
|
* Essentially the same.
|
||||||
|
* Program files updated to include "readtex.c", not "../util/readtex.c".
|
||||||
|
* * demos/reflect.c: Likewise for "showbuffer.c".
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* * Makefile.am (EXTRA_DIST): Added top-level regular files.
|
||||||
|
*
|
||||||
|
* * include/GL/Makefile.am (INC_X11): Added glxext.h.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* * src/GGI/include/ggi/mesa/Makefile.am (EXTRA_HEADERS): Include
|
||||||
|
* Mesa GGI headers in dist even if HAVE_GGI is not given.
|
||||||
|
*
|
||||||
|
* * configure.in: Look for GLUT and demo source dirs in $srcdir.
|
||||||
|
*
|
||||||
|
* * src/swrast/Makefile.am (libMesaSwrast_la_SOURCES): Set to *.[ch].
|
||||||
|
* More source list updates in various Makefile.am's.
|
||||||
|
*
|
||||||
|
* * Makefile.am (dist-hook): Remove CVS directory from distribution.
|
||||||
|
* (DIST_SUBDIRS): List all possible subdirs here.
|
||||||
|
* (SUBDIRS): Only list subdirs selected for build again.
|
||||||
|
* The above two applied to all subdir Makefile.am's also.
|
||||||
|
*
|
||||||
|
* Revision 1.4 2000/09/08 21:45:21 brianp
|
||||||
|
* added dither key option
|
||||||
|
*
|
||||||
* Revision 1.3 1999/10/28 18:23:29 brianp
|
* Revision 1.3 1999/10/28 18:23:29 brianp
|
||||||
* minor changes to Usage() function
|
* minor changes to Usage() function
|
||||||
*
|
*
|
||||||
@@ -37,7 +66,7 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
|
|
||||||
#include "../util/readtex.c" /* a hack, I know */
|
#include "readtex.c"
|
||||||
|
|
||||||
#define IMAGE_FILE "../images/girl.rgb"
|
#define IMAGE_FILE "../images/girl.rgb"
|
||||||
|
|
||||||
@@ -51,7 +80,7 @@ static int DrawWidth, DrawHeight;
|
|||||||
static int Scissor = 0;
|
static int Scissor = 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 )
|
||||||
@@ -154,6 +183,13 @@ 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--;
|
||||||
@@ -318,7 +354,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]);
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
#include "../util/readtex.c"
|
#include "readtex.c"
|
||||||
|
|
||||||
#ifdef XMESA
|
#ifdef XMESA
|
||||||
#include "GL/xmesa.h"
|
#include "GL/xmesa.h"
|
||||||
@@ -71,7 +71,10 @@ static int fullscreen = 1;
|
|||||||
static int WIDTH = 640;
|
static int WIDTH = 640;
|
||||||
static int HEIGHT = 480;
|
static int HEIGHT = 480;
|
||||||
|
|
||||||
#define FRAME 50
|
static GLint T0 = 0;
|
||||||
|
static GLint Frames = 0;
|
||||||
|
static GLint NiceFog = 1;
|
||||||
|
|
||||||
#define DIMP 20.0
|
#define DIMP 20.0
|
||||||
#define DIMTP 16.0
|
#define DIMTP 16.0
|
||||||
|
|
||||||
@@ -136,21 +139,6 @@ static float v = 0.0;
|
|||||||
static float alpha = -90.0;
|
static float alpha = -90.0;
|
||||||
static float beta = 90.0;
|
static float beta = 90.0;
|
||||||
|
|
||||||
static float
|
|
||||||
gettime(void)
|
|
||||||
{
|
|
||||||
static clock_t told = 0;
|
|
||||||
clock_t tnew, ris;
|
|
||||||
|
|
||||||
tnew = clock();
|
|
||||||
|
|
||||||
ris = tnew - told;
|
|
||||||
|
|
||||||
told = tnew;
|
|
||||||
|
|
||||||
return (ris / (float) CLOCKS_PER_SEC);
|
|
||||||
}
|
|
||||||
|
|
||||||
static float
|
static float
|
||||||
vrnd(void)
|
vrnd(void)
|
||||||
{
|
{
|
||||||
@@ -269,6 +257,13 @@ calcposobs(void)
|
|||||||
dir[2] = cos(alpha * M_PI / 180.0) * sin(beta * 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);
|
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[0] += v * dir[0];
|
||||||
obs[1] += v * dir[1];
|
obs[1] += v * dir[1];
|
||||||
obs[2] += v * dir[2];
|
obs[2] += v * dir[2];
|
||||||
@@ -387,13 +382,16 @@ dojoy(void)
|
|||||||
static void
|
static void
|
||||||
drawfire(void)
|
drawfire(void)
|
||||||
{
|
{
|
||||||
static int count = 0;
|
static char frbuf[80] = "";
|
||||||
static char frbuf[80];
|
|
||||||
int j;
|
int j;
|
||||||
float fr;
|
|
||||||
|
|
||||||
dojoy();
|
dojoy();
|
||||||
|
|
||||||
|
if (NiceFog)
|
||||||
|
glHint(GL_FOG_HINT, GL_NICEST);
|
||||||
|
else
|
||||||
|
glHint(GL_FOG_HINT, GL_DONT_CARE);
|
||||||
|
|
||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
|
||||||
if (fog)
|
if (fog)
|
||||||
@@ -416,6 +414,7 @@ drawfire(void)
|
|||||||
glEnable(GL_TEXTURE_2D);
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
|
||||||
glBindTexture(GL_TEXTURE_2D, groundid);
|
glBindTexture(GL_TEXTURE_2D, groundid);
|
||||||
|
#if 1
|
||||||
glBegin(GL_QUADS);
|
glBegin(GL_QUADS);
|
||||||
glTexCoord2fv(qt[0]);
|
glTexCoord2fv(qt[0]);
|
||||||
glVertex3fv(q[0]);
|
glVertex3fv(q[0]);
|
||||||
@@ -426,6 +425,26 @@ drawfire(void)
|
|||||||
glTexCoord2fv(qt[3]);
|
glTexCoord2fv(qt[3]);
|
||||||
glVertex3fv(q[3]);
|
glVertex3fv(q[3]);
|
||||||
glEnd();
|
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);
|
glEnable(GL_ALPHA_TEST);
|
||||||
glAlphaFunc(GL_GEQUAL, 0.9);
|
glAlphaFunc(GL_GEQUAL, 0.9);
|
||||||
@@ -468,11 +487,6 @@ drawfire(void)
|
|||||||
}
|
}
|
||||||
glEnd();
|
glEnd();
|
||||||
|
|
||||||
if ((count % FRAME) == 0) {
|
|
||||||
fr = gettime();
|
|
||||||
sprintf(frbuf, "Frame rate: %f", FRAME / fr);
|
|
||||||
}
|
|
||||||
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
glDisable(GL_TEXTURE_2D);
|
||||||
glDisable(GL_ALPHA_TEST);
|
glDisable(GL_ALPHA_TEST);
|
||||||
glDisable(GL_DEPTH_TEST);
|
glDisable(GL_DEPTH_TEST);
|
||||||
@@ -499,7 +513,24 @@ drawfire(void)
|
|||||||
|
|
||||||
glutSwapBuffers();
|
glutSwapBuffers();
|
||||||
|
|
||||||
count++;
|
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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -520,6 +551,7 @@ special(int key, int x, int y)
|
|||||||
beta += 2.0;
|
beta += 2.0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
glutPostRedisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -567,7 +599,12 @@ key(unsigned char key, int x, int y)
|
|||||||
fullscreen = (!fullscreen);
|
fullscreen = (!fullscreen);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
case 'n':
|
||||||
|
NiceFog = !NiceFog;
|
||||||
|
printf("NiceFog %d\n", NiceFog);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
glutPostRedisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -671,8 +708,6 @@ main(int ac, char **av)
|
|||||||
|
|
||||||
/* Default settings */
|
/* Default settings */
|
||||||
|
|
||||||
WIDTH = 640;
|
|
||||||
HEIGHT = 480;
|
|
||||||
np = 800;
|
np = 800;
|
||||||
eject_r = 0.1;
|
eject_r = 0.1;
|
||||||
dt = 0.015;
|
dt = 0.015;
|
||||||
@@ -716,9 +751,6 @@ main(int ac, char **av)
|
|||||||
glFogi(GL_FOG_MODE, GL_EXP);
|
glFogi(GL_FOG_MODE, GL_EXP);
|
||||||
glFogfv(GL_FOG_COLOR, fogcolor);
|
glFogfv(GL_FOG_COLOR, fogcolor);
|
||||||
glFogf(GL_FOG_DENSITY, 0.1);
|
glFogf(GL_FOG_DENSITY, 0.1);
|
||||||
#ifdef FX
|
|
||||||
glHint(GL_FOG_HINT, GL_NICEST);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
p = malloc(sizeof(part) * np);
|
p = malloc(sizeof(part) * np);
|
||||||
|
|
||||||
@@ -730,7 +762,7 @@ main(int ac, char **av)
|
|||||||
glutKeyboardFunc(key);
|
glutKeyboardFunc(key);
|
||||||
glutSpecialFunc(special);
|
glutSpecialFunc(special);
|
||||||
glutDisplayFunc(drawfire);
|
glutDisplayFunc(drawfire);
|
||||||
glutIdleFunc(drawfire);
|
glutIdleFunc(idle);
|
||||||
glutReshapeFunc(reshape);
|
glutReshapeFunc(reshape);
|
||||||
glutMainLoop();
|
glutMainLoop();
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: geartrain.c,v 1.6 2000/04/06 02:22:59 brianp Exp $ */
|
/* $Id: geartrain.c,v 1.8 2001/10/04 19:14:26 kschultz Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* GearTrain Simulator * Version: 1.00
|
* GearTrain Simulator * Version: 1.00
|
||||||
@@ -32,7 +32,9 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#ifndef min
|
||||||
#define min(x, y) ( x < y ? x : y )
|
#define min(x, y) ( x < y ? x : y )
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef M_PI
|
#ifndef M_PI
|
||||||
#define M_PI 3.14159265
|
#define M_PI 3.14159265
|
||||||
@@ -99,7 +101,11 @@ int number_of_belts;
|
|||||||
|
|
||||||
char Buf1[256], Buf2[256], Buf3[256], Buf4[256], Buf5[256];
|
char Buf1[256], Buf2[256], Buf3[256], Buf4[256], Buf5[256];
|
||||||
|
|
||||||
|
static GLint T0 = 0;
|
||||||
|
static GLint Frames = 0;
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
static void
|
static void
|
||||||
strset (char buf[], char ch)
|
strset (char buf[], char ch)
|
||||||
{
|
{
|
||||||
@@ -107,6 +113,7 @@ strset (char buf[], char ch)
|
|||||||
for (i = 0; i < strlen (buf); i++)
|
for (i = 0; i < strlen (buf); i++)
|
||||||
buf[i] = ch;
|
buf[i] = ch;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -891,6 +898,18 @@ draw (void)
|
|||||||
|
|
||||||
glPopMatrix ();
|
glPopMatrix ();
|
||||||
glutSwapBuffers ();
|
glutSwapBuffers ();
|
||||||
|
|
||||||
|
{
|
||||||
|
GLint t = glutGet(GLUT_ELAPSED_TIME);
|
||||||
|
Frames++;
|
||||||
|
if (t - T0 >= 5000) {
|
||||||
|
GLfloat seconds = (t - T0) / 1000.0;
|
||||||
|
GLfloat fps = Frames / seconds;
|
||||||
|
printf("%d frames in %g seconds = %g FPS\n", Frames, seconds, fps);
|
||||||
|
T0 = t;
|
||||||
|
Frames = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1049,4 +1068,3 @@ main (int argc, char *argv[])
|
|||||||
glutMainLoop ();
|
glutMainLoop ();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: gloss.c,v 1.4 2000/06/27 17:04:43 brianp Exp $ */
|
/* $Id: gloss.c,v 1.6 2000/12/24 22:53:54 pesco 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 "../util/readtex.c" /* I know, this is a hack. */
|
#include "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 = 15;
|
static GLfloat Shininess = 6;
|
||||||
|
|
||||||
static GLuint BaseTexture, SpecularTexture;
|
static GLuint BaseTexture, SpecularTexture;
|
||||||
static GLboolean DoSpecTexture = GL_TRUE;
|
static GLboolean DoSpecTexture = GL_TRUE;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
|
|
||||||
#include "../util/readtex.c"
|
#include "readtex.c"
|
||||||
|
|
||||||
#ifdef XMESA
|
#ifdef XMESA
|
||||||
#include "GL/xmesa.h"
|
#include "GL/xmesa.h"
|
||||||
@@ -28,6 +28,9 @@ static int fullscreen = 1;
|
|||||||
static int WIDTH = 640;
|
static int WIDTH = 640;
|
||||||
static int HEIGHT = 480;
|
static int HEIGHT = 480;
|
||||||
|
|
||||||
|
static GLint T0;
|
||||||
|
static GLint Frames;
|
||||||
|
|
||||||
#define MAX_LOD 9
|
#define MAX_LOD 9
|
||||||
|
|
||||||
#define TEX_SKY_WIDTH 256
|
#define TEX_SKY_WIDTH 256
|
||||||
@@ -195,21 +198,6 @@ inittextures(void)
|
|||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
static float
|
|
||||||
gettime(void)
|
|
||||||
{
|
|
||||||
static clock_t told = 0;
|
|
||||||
clock_t tnew, ris;
|
|
||||||
|
|
||||||
tnew = clock();
|
|
||||||
|
|
||||||
ris = tnew - told;
|
|
||||||
|
|
||||||
told = tnew;
|
|
||||||
|
|
||||||
return (ris / (float) CLOCKS_PER_SEC);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
calcposobs(void)
|
calcposobs(void)
|
||||||
{
|
{
|
||||||
@@ -217,6 +205,13 @@ calcposobs(void)
|
|||||||
dir[1] = cos(alpha * M_PI / 180.0) * sin(beta * 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);
|
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[0] += v * dir[0];
|
||||||
obs[1] += v * dir[1];
|
obs[1] += v * dir[1];
|
||||||
obs[2] += v * dir[2];
|
obs[2] += v * dir[2];
|
||||||
@@ -544,11 +539,10 @@ drawipers(int depth, int from)
|
|||||||
static void
|
static void
|
||||||
draw(void)
|
draw(void)
|
||||||
{
|
{
|
||||||
static int count = 0;
|
static char frbuf[80] = "";
|
||||||
static char frbuf[80];
|
|
||||||
static GLfloat alpha = 0.0f;
|
static GLfloat alpha = 0.0f;
|
||||||
static GLfloat beta = 0.0f;
|
static GLfloat beta = 0.0f;
|
||||||
float fr;
|
static float fr = 0.0;
|
||||||
|
|
||||||
dojoy();
|
dojoy();
|
||||||
|
|
||||||
@@ -610,10 +604,9 @@ draw(void)
|
|||||||
|
|
||||||
/* Help Screen */
|
/* Help Screen */
|
||||||
|
|
||||||
fr = gettime();
|
|
||||||
sprintf(frbuf,
|
sprintf(frbuf,
|
||||||
"Frame rate: %0.2f LOD: %d Tot. poly.: %d Poly/sec: %.1f",
|
"Frame rate: %0.2f LOD: %d Tot. poly.: %d Poly/sec: %.1f",
|
||||||
1.0 / fr, LODbias, totpoly, totpoly / fr);
|
fr, LODbias, totpoly, totpoly * fr);
|
||||||
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
glDisable(GL_TEXTURE_2D);
|
||||||
glDisable(GL_FOG);
|
glDisable(GL_FOG);
|
||||||
@@ -644,7 +637,16 @@ draw(void)
|
|||||||
|
|
||||||
glutSwapBuffers();
|
glutSwapBuffers();
|
||||||
|
|
||||||
count++;
|
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
|
int
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: isosurf.c,v 1.6 2000/06/27 17:04:43 brianp Exp $ */
|
/* $Id: isosurf.c,v 1.13 2001/10/04 19:14:26 kschultz Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Display an isosurface of 3-D wind speed volume.
|
* Display an isosurface of 3-D wind speed volume.
|
||||||
@@ -30,69 +30,74 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
#define GL_GLEXT_LEGACY
|
#define GL_GLEXT_LEGACY
|
||||||
#include "GL/glut.h"
|
#include "GL/glut.h"
|
||||||
|
|
||||||
#include "../util/readtex.c" /* I know, this is a hack. KW: me too. */
|
#include "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 0x1
|
#define LIT 0x1
|
||||||
#define UNLIT 0x2
|
#define UNLIT 0x2
|
||||||
#define TEXTURE 0x4
|
#define REFLECT 0x10
|
||||||
#define NO_TEXTURE 0x8
|
#define POINT_FILTER 0x40
|
||||||
#define REFLECT 0x10
|
#define LINEAR_FILTER 0x80
|
||||||
#define NO_REFLECT 0x20
|
#define GLVERTEX 0x100
|
||||||
#define POINT_FILTER 0x40
|
#define DRAW_ELTS 0x4
|
||||||
#define LINEAR_FILTER 0x80
|
#define DRAW_ARRAYS 0x200
|
||||||
#define GLVERTEX 0x100
|
#define ARRAY_ELT 0x400
|
||||||
#define DRAW_ARRAYS 0x200 /* or draw_elts, if compiled */
|
#define LOCKED 0x800
|
||||||
#define ARRAY_ELT 0x400
|
#define UNLOCKED 0x8
|
||||||
#define COMPILED 0x800
|
#define IMMEDIATE 0x1000
|
||||||
#define IMMEDIATE 0x1000
|
#define DISPLAYLIST 0x2000000
|
||||||
#define SHADE_SMOOTH 0x2000
|
#define SHADE_SMOOTH 0x2000
|
||||||
#define SHADE_FLAT 0x4000
|
#define SHADE_FLAT 0x4000
|
||||||
#define TRIANGLES 0x8000
|
#define TRIANGLES 0x8000
|
||||||
#define STRIPS 0x10000
|
#define STRIPS 0x10000
|
||||||
#define USER_CLIP 0x20000
|
#define POINTS 0x20000
|
||||||
#define NO_USER_CLIP 0x40000
|
#define USER_CLIP 0x40000
|
||||||
#define MATERIALS 0x80000
|
#define NO_USER_CLIP 0x80000
|
||||||
#define NO_MATERIALS 0x100000
|
#define MATERIALS 0x100000
|
||||||
#define FOG 0x200000
|
#define NO_MATERIALS 0x200000
|
||||||
#define NO_FOG 0x400000
|
#define FOG 0x400000
|
||||||
#define QUIT 0x800000
|
#define NO_FOG 0x800000
|
||||||
#define DISPLAYLIST 0x1000000
|
#define QUIT 0x1000000
|
||||||
#define GLINFO 0x2000000
|
#define GLINFO 0x4000000
|
||||||
#define STIPPLE 0x4000000
|
#define STIPPLE 0x8000000
|
||||||
#define NO_STIPPLE 0x8000000
|
#define NO_STIPPLE 0x20
|
||||||
|
|
||||||
#define LIGHT_MASK (LIT|UNLIT)
|
#define LIGHT_MASK (LIT|UNLIT|REFLECT)
|
||||||
#define TEXTURE_MASK (TEXTURE|NO_TEXTURE)
|
#define FILTER_MASK (POINT_FILTER|LINEAR_FILTER)
|
||||||
#define REFLECT_MASK (REFLECT|NO_REFLECT)
|
#define RENDER_STYLE_MASK (GLVERTEX|DRAW_ARRAYS|DRAW_ELTS|ARRAY_ELT)
|
||||||
#define FILTER_MASK (POINT_FILTER|LINEAR_FILTER)
|
#define DLIST_MASK (IMMEDIATE|DISPLAYLIST)
|
||||||
#define RENDER_STYLE_MASK (GLVERTEX|DRAW_ARRAYS|ARRAY_ELT)
|
#define LOCK_MASK (LOCKED|UNLOCKED)
|
||||||
#define COMPILED_MASK (COMPILED|IMMEDIATE|DISPLAYLIST)
|
#define MATERIAL_MASK (MATERIALS|NO_MATERIALS)
|
||||||
#define MATERIAL_MASK (MATERIALS|NO_MATERIALS)
|
#define PRIMITIVE_MASK (TRIANGLES|STRIPS|POINTS)
|
||||||
#define PRIMITIVE_MASK (TRIANGLES|STRIPS)
|
#define CLIP_MASK (USER_CLIP|NO_USER_CLIP)
|
||||||
#define CLIP_MASK (USER_CLIP|NO_USER_CLIP)
|
#define SHADE_MASK (SHADE_SMOOTH|SHADE_FLAT)
|
||||||
#define SHADE_MASK (SHADE_SMOOTH|SHADE_FLAT)
|
#define FOG_MASK (FOG|NO_FOG)
|
||||||
#define FOG_MASK (FOG|NO_FOG)
|
#define STIPPLE_MASK (STIPPLE|NO_STIPPLE)
|
||||||
#define STIPPLE_MASK (STIPPLE|NO_STIPPLE)
|
|
||||||
|
|
||||||
#define MAXVERTS 10000
|
#define MAXVERTS 10000
|
||||||
|
static GLuint 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 = -6;
|
static GLfloat dist;
|
||||||
static GLint state, allowed = ~0;
|
static GLint state, allowed = ~0;
|
||||||
static GLboolean doubleBuffer = GL_TRUE;
|
static GLboolean doubleBuffer = GL_TRUE;
|
||||||
static GLdouble plane[4] = {1.0, 0.0, -1.0, 0.0};
|
static GLdouble plane[4];
|
||||||
static GLuint surf1;
|
static GLuint surf1, dlist_state;
|
||||||
|
|
||||||
static GLboolean PrintInfo = GL_FALSE;
|
static GLboolean PrintInfo = GL_FALSE;
|
||||||
|
|
||||||
@@ -110,9 +115,6 @@ static GLubyte halftone[] = {
|
|||||||
0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
|
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};
|
||||||
|
|
||||||
/* forward decl */
|
|
||||||
int BuildList( int mode );
|
|
||||||
|
|
||||||
|
|
||||||
static void read_surface( char *filename )
|
static void read_surface( char *filename )
|
||||||
{
|
{
|
||||||
@@ -125,7 +127,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] );
|
||||||
@@ -139,6 +141,31 @@ 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\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, " : "");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct data_idx {
|
struct data_idx {
|
||||||
float *data;
|
float *data;
|
||||||
@@ -282,6 +309,20 @@ 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);
|
||||||
@@ -315,6 +356,9 @@ 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
|
||||||
@@ -323,23 +367,32 @@ static void draw_surface( int with_state )
|
|||||||
{
|
{
|
||||||
GLuint i, j;
|
GLuint i, j;
|
||||||
|
|
||||||
switch (with_state & (COMPILED_MASK|RENDER_STYLE_MASK|PRIMITIVE_MASK)) {
|
if (with_state & DISPLAYLIST) {
|
||||||
|
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 (COMPILED|DRAW_ARRAYS|STRIPS):
|
case (DRAW_ELTS|TRIANGLES):
|
||||||
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);
|
||||||
@@ -351,26 +404,13 @@ static void draw_surface( 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;
|
||||||
|
|
||||||
/* Uses the original arrays (including duplicate elements):
|
case (DRAW_ARRAYS|TRIANGLES):
|
||||||
*/
|
glDrawArraysEXT( GL_TRIANGLES, 0, (numverts-2)*3 );
|
||||||
case (IMMEDIATE|DRAW_ARRAYS|STRIPS):
|
|
||||||
glDrawArraysEXT( GL_TRIANGLE_STRIP, 0, numverts );
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Uses the original arrays (including duplicate elements):
|
case (ARRAY_ELT|TRIANGLES):
|
||||||
*/
|
|
||||||
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);
|
||||||
@@ -391,7 +431,46 @@ static void draw_surface( 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);
|
||||||
@@ -415,24 +494,32 @@ static void draw_surface( int with_state )
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (DISPLAYLIST|GLVERTEX|STRIPS):
|
case (GLVERTEX|POINTS):
|
||||||
if (!surf1)
|
/* Renders all points, but not in strip order... Shouldn't be a
|
||||||
surf1 = BuildList( GL_COMPILE_AND_EXECUTE );
|
* problem, but people may be confused as to why points are so
|
||||||
else
|
* much faster in this demo... And why cva doesn't help them...
|
||||||
glCallList(surf1);
|
*/
|
||||||
|
glBegin( GL_POINTS );
|
||||||
|
for ( i = 0 ; i < numuniq ; i++ ) {
|
||||||
|
glNormal3fv( &compressed_data[i][3] );
|
||||||
|
glVertex3fv( &compressed_data[i][0] );
|
||||||
|
}
|
||||||
|
glEnd();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#endif
|
case (GLVERTEX|STRIPS):
|
||||||
|
|
||||||
/* 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -446,14 +533,6 @@ 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.
|
||||||
*/
|
*/
|
||||||
@@ -534,8 +613,7 @@ static void InitMaterials(void)
|
|||||||
|
|
||||||
|
|
||||||
#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) && \
|
#define CHANGED(o,n,mask) ((n&mask) && (n&mask) != (o&mask) )
|
||||||
(n&mask) != (o&mask) ? UPDATE(o,n,mask) : 0)
|
|
||||||
|
|
||||||
static void ModeMenu(int m)
|
static void ModeMenu(int m)
|
||||||
{
|
{
|
||||||
@@ -554,6 +632,7 @@ static void ModeMenu(int m)
|
|||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
@@ -564,13 +643,29 @@ static void ModeMenu(int m)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (CHANGED(state, m, LIGHT_MASK)) {
|
if (CHANGED(state, m, LIGHT_MASK)) {
|
||||||
if (m & LIT)
|
UPDATE(state, m, LIGHT_MASK);
|
||||||
|
if (m & LIT) {
|
||||||
glEnable(GL_LIGHTING);
|
glEnable(GL_LIGHTING);
|
||||||
else
|
glDisable(GL_TEXTURE_GEN_S);
|
||||||
|
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
|
||||||
@@ -578,24 +673,8 @@ 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 {
|
||||||
@@ -604,66 +683,121 @@ 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)) {
|
if (CHANGED(state, m, STIPPLE_MASK)) {
|
||||||
|
UPDATE(state, m, STIPPLE_MASK);
|
||||||
if (m & STIPPLE)
|
if (m & STIPPLE)
|
||||||
{
|
{
|
||||||
glEnable(GL_POLYGON_STIPPLE);
|
glEnable(GL_POLYGON_STIPPLE);
|
||||||
printf("STIPPLE enable\n");
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
glDisable(GL_POLYGON_STIPPLE);
|
glDisable(GL_POLYGON_STIPPLE);
|
||||||
printf("STIPPLE disable\n");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef GL_EXT_vertex_array
|
#ifdef GL_EXT_vertex_array
|
||||||
if (CHANGED(state, m, (COMPILED_MASK|RENDER_STYLE_MASK|PRIMITIVE_MASK)))
|
if (CHANGED(state, m, (LOCK_MASK|RENDER_STYLE_MASK|PRIMITIVE_MASK)))
|
||||||
{
|
{
|
||||||
if ((m & (COMPILED_MASK|PRIMITIVE_MASK)) == (IMMEDIATE|STRIPS))
|
if (m & (PRIMITIVE_MASK)) {
|
||||||
{
|
UPDATE(state, m, (PRIMITIVE_MASK));
|
||||||
glVertexPointerEXT( 3, GL_FLOAT, sizeof(data[0]), numverts, data );
|
|
||||||
glNormalPointerEXT( GL_FLOAT, sizeof(data[0]), numverts, &data[0][3]);
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
if (m & (RENDER_STYLE_MASK)) {
|
||||||
|
UPDATE(state, m, (RENDER_STYLE_MASK));
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
#ifdef GL_EXT_compiled_vertex_array
|
||||||
if (allowed & COMPILED) {
|
if (allowed & LOCKED) {
|
||||||
if (m & COMPILED) {
|
if (state & LOCKED) {
|
||||||
glLockArraysEXT( 0, numuniq );
|
glLockArraysEXT( 0, numuniq );
|
||||||
} else {
|
} else {
|
||||||
glUnlockArraysEXT();
|
glUnlockArraysEXT();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#endif
|
#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
|
||||||
|
if (allowed & LOCKED) {
|
||||||
|
if (state & LOCKED) {
|
||||||
|
glLockArraysEXT( 0, (numverts-2)*3 );
|
||||||
|
} else {
|
||||||
|
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
|
||||||
|
|
||||||
if (m & (RENDER_STYLE_MASK|PRIMITIVE_MASK)) {
|
|
||||||
UPDATE(state, m, (RENDER_STYLE_MASK|PRIMITIVE_MASK));
|
if (m & DLIST_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();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -673,13 +807,19 @@ 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;
|
||||||
|
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);
|
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 );
|
||||||
@@ -688,6 +828,8 @@ 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_REPLACE);
|
||||||
@@ -696,10 +838,6 @@ static void Init(int argc, char *argv[])
|
|||||||
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);
|
||||||
@@ -707,22 +845,31 @@ 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();
|
||||||
|
|
||||||
compactify_arrays();
|
if (!LoadRGBMipmaps(TEXTURE_FILE, GL_RGB)) {
|
||||||
make_tri_indices();
|
printf("Error: couldn't load texture image\n");
|
||||||
|
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|
|
NO_STIPPLE|
|
||||||
|
IMMEDIATE|
|
||||||
|
STRIPS|
|
||||||
|
UNLOCKED|
|
||||||
GLVERTEX);
|
GLVERTEX);
|
||||||
|
|
||||||
if (PrintInfo) {
|
if (PrintInfo) {
|
||||||
@@ -759,7 +906,7 @@ static void Key( unsigned char key, int x, int y )
|
|||||||
ModeMenu((state ^ STIPPLE_MASK) & STIPPLE_MASK);
|
ModeMenu((state ^ STIPPLE_MASK) & STIPPLE_MASK);
|
||||||
break;
|
break;
|
||||||
case 'l':
|
case 'l':
|
||||||
ModeMenu((state ^ LIGHT_MASK) & LIGHT_MASK);
|
ModeMenu((state ^ LIGHT_MASK) & (LIT|UNLIT));
|
||||||
break;
|
break;
|
||||||
case 'm':
|
case 'm':
|
||||||
ModeMenu((state ^ MATERIAL_MASK) & MATERIAL_MASK);
|
ModeMenu((state ^ MATERIAL_MASK) & MATERIAL_MASK);
|
||||||
@@ -768,11 +915,10 @@ static void Key( unsigned char key, int x, int y )
|
|||||||
ModeMenu((state ^ CLIP_MASK) & CLIP_MASK);
|
ModeMenu((state ^ CLIP_MASK) & CLIP_MASK);
|
||||||
break;
|
break;
|
||||||
case 'v':
|
case 'v':
|
||||||
if (allowed&COMPILED)
|
ModeMenu((LOCKED|IMMEDIATE|DRAW_ELTS|TRIANGLES) & allowed);
|
||||||
ModeMenu(COMPILED|DRAW_ARRAYS|TRIANGLES);
|
|
||||||
break;
|
break;
|
||||||
case 'V':
|
case 'V':
|
||||||
ModeMenu(IMMEDIATE|GLVERTEX|STRIPS);
|
ModeMenu(UNLOCKED|IMMEDIATE|GLVERTEX|STRIPS);
|
||||||
break;
|
break;
|
||||||
case 'b':
|
case 'b':
|
||||||
Benchmark(5.0, 0);
|
Benchmark(5.0, 0);
|
||||||
@@ -808,7 +954,9 @@ static void Key( unsigned char key, int x, int y )
|
|||||||
set_matrix();
|
set_matrix();
|
||||||
glutPostRedisplay();
|
glutPostRedisplay();
|
||||||
break;
|
break;
|
||||||
|
case ' ':
|
||||||
|
Init(0,0);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -854,6 +1002,15 @@ 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;
|
||||||
@@ -893,12 +1050,12 @@ 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 &= ~(COMPILED|DRAW_ARRAYS|ARRAY_ELT);
|
allowed &= ~(LOCKED|DRAW_ARRAYS|DRAW_ELTS|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 &= ~COMPILED;
|
allowed &= ~LOCKED;
|
||||||
}
|
}
|
||||||
|
|
||||||
Init(argc, argv);
|
Init(argc, argv);
|
||||||
@@ -907,10 +1064,9 @@ int main(int argc, char **argv)
|
|||||||
glutCreateMenu(ModeMenu);
|
glutCreateMenu(ModeMenu);
|
||||||
glutAddMenuEntry("GL info", GLINFO);
|
glutAddMenuEntry("GL info", GLINFO);
|
||||||
glutAddMenuEntry("", 0);
|
glutAddMenuEntry("", 0);
|
||||||
glutAddMenuEntry("Lit", LIT|NO_TEXTURE|NO_REFLECT);
|
glutAddMenuEntry("Lit", LIT);
|
||||||
glutAddMenuEntry("Unlit", UNLIT|NO_TEXTURE|NO_REFLECT);
|
glutAddMenuEntry("Unlit", UNLIT);
|
||||||
/* glutAddMenuEntry("Textured", TEXTURE); */
|
glutAddMenuEntry("Reflect", REFLECT);
|
||||||
glutAddMenuEntry("Reflect", TEXTURE|REFLECT);
|
|
||||||
glutAddMenuEntry("", 0);
|
glutAddMenuEntry("", 0);
|
||||||
glutAddMenuEntry("Smooth", SHADE_SMOOTH);
|
glutAddMenuEntry("Smooth", SHADE_SMOOTH);
|
||||||
glutAddMenuEntry("Flat", SHADE_FLAT);
|
glutAddMenuEntry("Flat", SHADE_FLAT);
|
||||||
@@ -924,36 +1080,26 @@ int main(int argc, char **argv)
|
|||||||
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("glVertex (STRIPS)", IMMEDIATE|GLVERTEX|STRIPS);
|
glutAddMenuEntry("GL_TRIANGLES", TRIANGLES);
|
||||||
glutAddMenuEntry("glVertex (TRIANGLES)", IMMEDIATE|GLVERTEX|TRIANGLES);
|
glutAddMenuEntry("GL_TRIANGLE_STRIPS", STRIPS);
|
||||||
|
glutAddMenuEntry("GL_POINTS", POINTS);
|
||||||
glutAddMenuEntry("", 0);
|
glutAddMenuEntry("", 0);
|
||||||
glutAddMenuEntry("glVertex display list (STRIPS)",
|
glutAddMenuEntry("Displaylist", DISPLAYLIST);
|
||||||
DISPLAYLIST|GLVERTEX|STRIPS);
|
glutAddMenuEntry("Immediate", IMMEDIATE);
|
||||||
glutAddMenuEntry("", 0);
|
glutAddMenuEntry("", 0);
|
||||||
|
if (allowed & LOCKED) {
|
||||||
|
glutAddMenuEntry("Locked Arrays (CVA)", LOCKED);
|
||||||
|
glutAddMenuEntry("Unlocked Arrays", UNLOCKED);
|
||||||
|
glutAddMenuEntry("", 0);
|
||||||
|
}
|
||||||
|
glutAddMenuEntry("glVertex", GLVERTEX);
|
||||||
if (allowed & DRAW_ARRAYS) {
|
if (allowed & DRAW_ARRAYS) {
|
||||||
glutAddMenuEntry("DrawArrays (STRIPS)",
|
glutAddMenuEntry("glDrawElements", DRAW_ELTS);
|
||||||
IMMEDIATE|DRAW_ARRAYS|STRIPS);
|
glutAddMenuEntry("glDrawArrays", DRAW_ARRAYS);
|
||||||
glutAddMenuEntry("ArrayElement (STRIPS)",
|
glutAddMenuEntry("glArrayElement", ARRAY_ELT);
|
||||||
IMMEDIATE|ARRAY_ELT|STRIPS);
|
|
||||||
glutAddMenuEntry("DrawElements (TRIANGLES)",
|
|
||||||
IMMEDIATE|DRAW_ARRAYS|TRIANGLES);
|
|
||||||
glutAddMenuEntry("ArrayElement (TRIANGLES)",
|
|
||||||
IMMEDIATE|ARRAY_ELT|TRIANGLES);
|
|
||||||
glutAddMenuEntry("", 0);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
if (allowed & COMPILED) {
|
glutAddMenuEntry("", 0);
|
||||||
glutAddMenuEntry("Compiled DrawElements (TRIANGLES)",
|
glutAddMenuEntry("Quit", QUIT);
|
||||||
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("Quit", QUIT);
|
|
||||||
glutAttachMenu(GLUT_RIGHT_BUTTON);
|
glutAttachMenu(GLUT_RIGHT_BUTTON);
|
||||||
|
|
||||||
glutReshapeFunc(Reshape);
|
glutReshapeFunc(Reshape);
|
||||||
|
|||||||
@@ -33,14 +33,14 @@
|
|||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
#include <GL/glext.h>
|
#include <GL/glext.h>
|
||||||
|
|
||||||
#include "../util/readtex.c" /* I know, this is a hack. */
|
#include "readtex.c" /* I know, this is a hack. */
|
||||||
|
|
||||||
#define TEXTURE_FILE "../images/girl.rgb"
|
#define TEXTURE_FILE "../images/girl.rgb"
|
||||||
|
|
||||||
static GLfloat Xrot = 0, Yrot = -30, Zrot = 0;
|
static GLfloat Xrot = 0, Yrot = -30, Zrot = 0;
|
||||||
static GLboolean Anim = GL_TRUE;
|
static GLboolean Anim = GL_TRUE;
|
||||||
static GLint Bias = 0, BiasStepSign = +1; /* ints avoid fp precision problem */
|
static GLint Bias = 0, BiasStepSign = +1; /* ints avoid fp precision problem */
|
||||||
static GLint BiasMin = -200, BiasMax = 500;
|
static GLint BiasMin = -400, BiasMax = 400;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -192,6 +192,8 @@ static void SpecialKey( int key, int x, int y )
|
|||||||
static void Init( void )
|
static void Init( void )
|
||||||
{
|
{
|
||||||
const char *exten = (const char *) glGetString(GL_EXTENSIONS);
|
const char *exten = (const char *) glGetString(GL_EXTENSIONS);
|
||||||
|
GLfloat maxBias;
|
||||||
|
|
||||||
if (!strstr(exten, "GL_EXT_texture_lod_bias")) {
|
if (!strstr(exten, "GL_EXT_texture_lod_bias")) {
|
||||||
printf("Sorry, GL_EXT_texture_lod_bias not supported by this renderer.\n");
|
printf("Sorry, GL_EXT_texture_lod_bias not supported by this renderer.\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
@@ -207,6 +209,11 @@ static void Init( void )
|
|||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: multiarb.c,v 1.6 2000/05/23 23:21:00 brianp Exp $ */
|
/* $Id: multiarb.c,v 1.10 2001/06/20 19:12:30 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* GL_ARB_multitexture demo
|
* GL_ARB_multitexture demo
|
||||||
@@ -12,6 +12,41 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: multiarb.c,v $
|
* $Log: multiarb.c,v $
|
||||||
|
* Revision 1.10 2001/06/20 19:12:30 brianp
|
||||||
|
* also print GL_MAX_TEXTURE_SIZE
|
||||||
|
*
|
||||||
|
* Revision 1.9 2001/06/13 14:33:16 brianp
|
||||||
|
* moved glTexEnvi calls to better logical locations
|
||||||
|
*
|
||||||
|
* Revision 1.8 2000/12/24 22:53:54 pesco
|
||||||
|
* * demos/Makefile.am (INCLUDES): Added -I$(top_srcdir)/util.
|
||||||
|
* * demos/Makefile.X11, demos/Makefile.BeOS-R4, demos/Makefile.cygnus:
|
||||||
|
* Essentially the same.
|
||||||
|
* Program files updated to include "readtex.c", not "../util/readtex.c".
|
||||||
|
* * demos/reflect.c: Likewise for "showbuffer.c".
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* * Makefile.am (EXTRA_DIST): Added top-level regular files.
|
||||||
|
*
|
||||||
|
* * include/GL/Makefile.am (INC_X11): Added glxext.h.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* * src/GGI/include/ggi/mesa/Makefile.am (EXTRA_HEADERS): Include
|
||||||
|
* Mesa GGI headers in dist even if HAVE_GGI is not given.
|
||||||
|
*
|
||||||
|
* * configure.in: Look for GLUT and demo source dirs in $srcdir.
|
||||||
|
*
|
||||||
|
* * src/swrast/Makefile.am (libMesaSwrast_la_SOURCES): Set to *.[ch].
|
||||||
|
* More source list updates in various Makefile.am's.
|
||||||
|
*
|
||||||
|
* * Makefile.am (dist-hook): Remove CVS directory from distribution.
|
||||||
|
* (DIST_SUBDIRS): List all possible subdirs here.
|
||||||
|
* (SUBDIRS): Only list subdirs selected for build again.
|
||||||
|
* The above two applied to all subdir Makefile.am's also.
|
||||||
|
*
|
||||||
|
* Revision 1.7 2000/11/01 16:02:01 brianp
|
||||||
|
* print number of texture units
|
||||||
|
*
|
||||||
* Revision 1.6 2000/05/23 23:21:00 brianp
|
* Revision 1.6 2000/05/23 23:21:00 brianp
|
||||||
* set default window pos
|
* set default window pos
|
||||||
*
|
*
|
||||||
@@ -48,7 +83,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
|
|
||||||
#include "../util/readtex.c" /* I know, this is a hack. */
|
#include "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"
|
||||||
@@ -246,6 +281,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[2];
|
GLuint texObj[2];
|
||||||
|
GLint units, size;
|
||||||
|
|
||||||
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")) {
|
||||||
@@ -253,6 +289,14 @@ static void Init( int argc, char *argv[] )
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &units);
|
||||||
|
printf("%d texture units supported\n", units);
|
||||||
|
|
||||||
|
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &size);
|
||||||
|
printf("%d x %d max texture size\n", size, size);
|
||||||
|
|
||||||
|
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||||
|
|
||||||
/* allocate two texture objects */
|
/* allocate two texture objects */
|
||||||
glGenTextures(2, texObj);
|
glGenTextures(2, texObj);
|
||||||
|
|
||||||
@@ -266,11 +310,6 @@ static void Init( int argc, char *argv[] )
|
|||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
|
|
||||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
|
||||||
|
|
||||||
if (!LoadRGBMipmaps(TEXTURE_1_FILE, GL_RGB)) {
|
if (!LoadRGBMipmaps(TEXTURE_1_FILE, GL_RGB)) {
|
||||||
printf("Error: couldn't load texture image\n");
|
printf("Error: couldn't load texture image\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
@@ -287,9 +326,6 @@ static void Init( int argc, char *argv[] )
|
|||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
|
|
||||||
if (!LoadRGBMipmaps(TEXTURE_2_FILE, GL_RGB)) {
|
if (!LoadRGBMipmaps(TEXTURE_2_FILE, GL_RGB)) {
|
||||||
printf("Error: couldn't load texture image\n");
|
printf("Error: couldn't load texture image\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
@@ -300,8 +336,10 @@ static void Init( int argc, char *argv[] )
|
|||||||
#ifdef GL_ARB_multitexture
|
#ifdef GL_ARB_multitexture
|
||||||
glActiveTextureARB(GL_TEXTURE0_ARB);
|
glActiveTextureARB(GL_TEXTURE0_ARB);
|
||||||
glBindTexture(GL_TEXTURE_2D, texObj[0]);
|
glBindTexture(GL_TEXTURE_2D, texObj[0]);
|
||||||
|
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||||
glActiveTextureARB(GL_TEXTURE1_ARB);
|
glActiveTextureARB(GL_TEXTURE1_ARB);
|
||||||
glBindTexture(GL_TEXTURE_2D, texObj[1]);
|
glBindTexture(GL_TEXTURE_2D, texObj[1]);
|
||||||
|
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
glShadeModel(GL_FLAT);
|
glShadeModel(GL_FLAT);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: osdemo.c,v 1.4 2000/03/28 16:59:39 rjfrank Exp $ */
|
/* $Id: osdemo.c,v 1.7 2001/09/24 15:29:27 kschultz Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Demo of off-screen Mesa rendering
|
* Demo of off-screen Mesa rendering
|
||||||
@@ -223,14 +223,41 @@ write_ppm(const char *filename, const GLubyte *buffer, int width, int height)
|
|||||||
|
|
||||||
int main( int argc, char *argv[] )
|
int main( int argc, char *argv[] )
|
||||||
{
|
{
|
||||||
|
void *buffer;
|
||||||
|
|
||||||
/* Create an RGBA-mode context */
|
/* Create an RGBA-mode context */
|
||||||
OSMesaContext ctx = OSMesaCreateContext( GL_RGBA, NULL );
|
#if OSMESA_MAJOR_VERSION * 100 + OSMESA_MINOR_VERSION >= 305
|
||||||
|
/* specify Z, stencil, accum sizes */
|
||||||
|
OSMesaContext ctx = OSMesaCreateContextExt( OSMESA_RGBA, 16, 0, 0, NULL );
|
||||||
|
#else
|
||||||
|
OSMesaContext ctx = OSMesaCreateContext( OSMESA_RGBA, NULL );
|
||||||
|
#endif
|
||||||
|
if (!ctx) {
|
||||||
|
printf("OSMesaCreateContext failed!\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Allocate the image buffer */
|
/* Allocate the image buffer */
|
||||||
void *buffer = malloc( WIDTH * HEIGHT * 4 );
|
buffer = malloc( WIDTH * HEIGHT * 4 * sizeof(GLubyte) );
|
||||||
|
if (!buffer) {
|
||||||
|
printf("Alloc image buffer failed!\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Bind the buffer to the context and make it current */
|
/* Bind the buffer to the context and make it current */
|
||||||
OSMesaMakeCurrent( ctx, buffer, GL_UNSIGNED_BYTE, WIDTH, HEIGHT );
|
if (!OSMesaMakeCurrent( ctx, buffer, GL_UNSIGNED_BYTE, WIDTH, HEIGHT )) {
|
||||||
|
printf("OSMesaMakeCurrent failed!\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
int z, s, a;
|
||||||
|
glGetIntegerv(GL_DEPTH_BITS, &z);
|
||||||
|
glGetIntegerv(GL_STENCIL_BITS, &s);
|
||||||
|
glGetIntegerv(GL_ACCUM_RED_BITS, &a);
|
||||||
|
printf("%d %d %d\n", z, s, a);
|
||||||
|
}
|
||||||
|
|
||||||
render_image();
|
render_image();
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: paltex.c,v 1.4 2000/06/27 17:12:10 brianp Exp $ */
|
/* $Id: paltex.c,v 1.6 2000/10/05 07:17:43 joukj Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Paletted texture demo. Written by Brian Paul.
|
* Paletted texture demo. Written by Brian Paul.
|
||||||
@@ -8,27 +8,38 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include <string.h>
|
||||||
#define GL_GLEXT_LEGACY
|
#define GL_GLEXT_LEGACY
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
|
|
||||||
|
|
||||||
static float Rot = 0.0;
|
static float Rot = 0.0;
|
||||||
|
static GLboolean Anim = 1;
|
||||||
|
|
||||||
|
|
||||||
static void Idle( void )
|
static void Idle( void )
|
||||||
{
|
{
|
||||||
Rot += 5.0;
|
float t = glutGet(GLUT_ELAPSED_TIME) * 0.001; /* in seconds */
|
||||||
|
Rot = t * 360 / 4; /* 1 rotation per 4 seconds */
|
||||||
glutPostRedisplay();
|
glutPostRedisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void Display( void )
|
static void Display( void )
|
||||||
{
|
{
|
||||||
glClear( GL_COLOR_BUFFER_BIT );
|
/* draw background gradient */
|
||||||
|
glDisable(GL_TEXTURE_2D);
|
||||||
|
glBegin(GL_POLYGON);
|
||||||
|
glColor3f(1.0, 0.0, 0.2); glVertex2f(-1.5, -1.0);
|
||||||
|
glColor3f(1.0, 0.0, 0.2); glVertex2f( 1.5, -1.0);
|
||||||
|
glColor3f(0.0, 0.0, 1.0); glVertex2f( 1.5, 1.0);
|
||||||
|
glColor3f(0.0, 0.0, 1.0); glVertex2f(-1.5, 1.0);
|
||||||
|
glEnd();
|
||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glRotatef(Rot, 0, 0, 1);
|
glRotatef(Rot, 0, 0, 1);
|
||||||
|
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
glBegin(GL_POLYGON);
|
glBegin(GL_POLYGON);
|
||||||
glTexCoord2f(0, 1); glVertex2f(-1, -0.5);
|
glTexCoord2f(0, 1); glVertex2f(-1, -0.5);
|
||||||
glTexCoord2f(1, 1); glVertex2f( 1, -0.5);
|
glTexCoord2f(1, 1); glVertex2f( 1, -0.5);
|
||||||
@@ -47,10 +58,9 @@ 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();
|
||||||
glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 );
|
glOrtho( -1.5, 1.5, -1.0, 1.0, -1.0, 1.0 );
|
||||||
glMatrixMode( GL_MODELVIEW );
|
glMatrixMode( GL_MODELVIEW );
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
glTranslatef( 0.0, 0.0, -7.0 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -62,6 +72,16 @@ static void Key( unsigned char key, int x, int y )
|
|||||||
case 27:
|
case 27:
|
||||||
exit(0);
|
exit(0);
|
||||||
break;
|
break;
|
||||||
|
case 's':
|
||||||
|
Rot += 0.5;
|
||||||
|
break;
|
||||||
|
case ' ':
|
||||||
|
Anim = !Anim;
|
||||||
|
if (Anim)
|
||||||
|
glutIdleFunc( Idle );
|
||||||
|
else
|
||||||
|
glutIdleFunc( NULL );
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
glutPostRedisplay();
|
glutPostRedisplay();
|
||||||
}
|
}
|
||||||
@@ -89,26 +109,27 @@ static void Init( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* load the color table for each texel-index */
|
/* load the color table for each texel-index */
|
||||||
table[' '][0] = 50;
|
memset(table, 0, 256*4);
|
||||||
table[' '][1] = 50;
|
table[' '][0] = 255;
|
||||||
table[' '][2] = 50;
|
table[' '][1] = 255;
|
||||||
table[' '][3] = 50;
|
table[' '][2] = 255;
|
||||||
|
table[' '][3] = 64;
|
||||||
table['M'][0] = 255;
|
table['M'][0] = 255;
|
||||||
table['M'][1] = 0;
|
table['M'][1] = 0;
|
||||||
table['M'][2] = 0;
|
table['M'][2] = 0;
|
||||||
table['M'][3] = 0;
|
table['M'][3] = 255;
|
||||||
table['E'][0] = 0;
|
table['E'][0] = 0;
|
||||||
table['E'][1] = 255;
|
table['E'][1] = 255;
|
||||||
table['E'][2] = 0;
|
table['E'][2] = 0;
|
||||||
table['E'][3] = 0;
|
table['E'][3] = 255;
|
||||||
table['S'][0] = 40;
|
table['S'][0] = 0;
|
||||||
table['S'][1] = 40;
|
table['S'][1] = 0;
|
||||||
table['S'][2] = 255;
|
table['S'][2] = 255;
|
||||||
table['S'][3] = 0;
|
table['S'][3] = 255;
|
||||||
table['A'][0] = 255;
|
table['A'][0] = 255;
|
||||||
table['A'][1] = 255;
|
table['A'][1] = 255;
|
||||||
table['A'][2] = 0;
|
table['A'][2] = 0;
|
||||||
table['A'][3] = 0;
|
table['A'][3] = 255;
|
||||||
|
|
||||||
#ifdef GL_EXT_paletted_texture
|
#ifdef GL_EXT_paletted_texture
|
||||||
|
|
||||||
@@ -144,6 +165,81 @@ static void Init( void )
|
|||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
||||||
glEnable(GL_TEXTURE_2D);
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
|
||||||
|
glEnable(GL_BLEND);
|
||||||
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
#undef HEIGHT
|
||||||
|
#undef WIDTH
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Color ramp test
|
||||||
|
*/
|
||||||
|
static void Init2( void )
|
||||||
|
{
|
||||||
|
#define HEIGHT 32
|
||||||
|
#define WIDTH 256
|
||||||
|
static char texture[HEIGHT][WIDTH];
|
||||||
|
GLubyte table[256][4];
|
||||||
|
int i, j;
|
||||||
|
|
||||||
|
if (!glutExtensionSupported("GL_EXT_paletted_texture")) {
|
||||||
|
printf("Sorry, GL_EXT_paletted_texture not supported\n");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (j = 0; j < HEIGHT; j++) {
|
||||||
|
for (i = 0; i < WIDTH; i++) {
|
||||||
|
texture[j][i] = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < 255; i++) {
|
||||||
|
table[i][0] = i;
|
||||||
|
table[i][1] = 0;
|
||||||
|
table[i][2] = 0;
|
||||||
|
table[i][3] = 255;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef GL_EXT_paletted_texture
|
||||||
|
|
||||||
|
#if defined(GL_EXT_shared_texture_palette) && defined(USE_SHARED_PALETTE)
|
||||||
|
printf("Using shared palette\n");
|
||||||
|
glColorTableEXT(GL_SHARED_TEXTURE_PALETTE_EXT, /* target */
|
||||||
|
GL_RGBA, /* internal format */
|
||||||
|
256, /* table size */
|
||||||
|
GL_RGBA, /* table format */
|
||||||
|
GL_UNSIGNED_BYTE, /* table type */
|
||||||
|
table); /* the color table */
|
||||||
|
glEnable(GL_SHARED_TEXTURE_PALETTE_EXT);
|
||||||
|
#else
|
||||||
|
glColorTableEXT(GL_TEXTURE_2D, /* target */
|
||||||
|
GL_RGBA, /* internal format */
|
||||||
|
256, /* table size */
|
||||||
|
GL_RGBA, /* table format */
|
||||||
|
GL_UNSIGNED_BYTE, /* table type */
|
||||||
|
table); /* the color table */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, /* target */
|
||||||
|
0, /* level */
|
||||||
|
GL_COLOR_INDEX8_EXT, /* internal format */
|
||||||
|
WIDTH, HEIGHT, /* width, height */
|
||||||
|
0, /* border */
|
||||||
|
GL_COLOR_INDEX, /* texture format */
|
||||||
|
GL_UNSIGNED_BYTE, /* texture type */
|
||||||
|
texture); /* teh texture */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
|
||||||
|
glEnable(GL_BLEND);
|
||||||
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -151,7 +247,7 @@ int main( int argc, char *argv[] )
|
|||||||
{
|
{
|
||||||
glutInit( &argc, argv );
|
glutInit( &argc, argv );
|
||||||
glutInitWindowPosition( 0, 0 );
|
glutInitWindowPosition( 0, 0 );
|
||||||
glutInitWindowSize( 400, 400 );
|
glutInitWindowSize( 400, 300 );
|
||||||
|
|
||||||
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
|
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
|
||||||
|
|
||||||
@@ -162,7 +258,8 @@ int main( int argc, char *argv[] )
|
|||||||
glutReshapeFunc( Reshape );
|
glutReshapeFunc( Reshape );
|
||||||
glutKeyboardFunc( Key );
|
glutKeyboardFunc( Key );
|
||||||
glutDisplayFunc( Display );
|
glutDisplayFunc( Display );
|
||||||
glutIdleFunc( Idle );
|
if (Anim)
|
||||||
|
glutIdleFunc( Idle );
|
||||||
|
|
||||||
glutMainLoop();
|
glutMainLoop();
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
#include <GL/glext.h>
|
#include <GL/glext.h>
|
||||||
#include "../util/readtex.c" /* I know, this is a hack. */
|
#include "readtex.c" /* I know, this is a hack. */
|
||||||
|
|
||||||
#define TEXTURE_FILE "../images/girl.rgb"
|
#define TEXTURE_FILE "../images/girl.rgb"
|
||||||
|
|
||||||
@@ -127,12 +127,12 @@ static void Idle(void)
|
|||||||
|
|
||||||
static GLubyte warp(GLfloat s, int frame)
|
static GLubyte warp(GLfloat s, int frame)
|
||||||
{
|
{
|
||||||
static const GLfloat PI = 3.14159265;
|
static const GLfloat pi = 3.14159265;
|
||||||
static int halfFrame = FRAMES / 2;
|
static int halfFrame = FRAMES / 2;
|
||||||
GLfloat y, weight, v;
|
GLfloat y, weight, v;
|
||||||
if (frame >= halfFrame)
|
if (frame >= halfFrame)
|
||||||
frame = halfFrame - (frame - halfFrame);
|
frame = halfFrame - (frame - halfFrame);
|
||||||
y = sin(s * PI);
|
y = sin(s * pi);
|
||||||
weight = (float) frame / (FRAMES-1);
|
weight = (float) frame / (FRAMES-1);
|
||||||
v = y * (0.8 * weight + 0.2);
|
v = y * (0.8 * weight + 0.2);
|
||||||
return (GLint) (v * 255.0F);
|
return (GLint) (v * 255.0F);
|
||||||
|
|||||||
@@ -24,7 +24,8 @@ static int fullscreen = 1;
|
|||||||
static int WIDTH = 640;
|
static int WIDTH = 640;
|
||||||
static int HEIGHT = 480;
|
static int HEIGHT = 480;
|
||||||
|
|
||||||
#define FRAME 50
|
static GLint T0 = 0;
|
||||||
|
static GLint Frames = 0;
|
||||||
|
|
||||||
#define BASESIZE 7.5f
|
#define BASESIZE 7.5f
|
||||||
#define SPHERE_RADIUS 0.75f
|
#define SPHERE_RADIUS 0.75f
|
||||||
@@ -94,21 +95,6 @@ static int showreflectmap = 1;
|
|||||||
static int joyavailable = 0;
|
static int joyavailable = 0;
|
||||||
static int joyactive = 0;
|
static int joyactive = 0;
|
||||||
|
|
||||||
static float
|
|
||||||
gettime(void)
|
|
||||||
{
|
|
||||||
static float told = 0.0f;
|
|
||||||
float tnew, ris;
|
|
||||||
|
|
||||||
tnew = glutGet(GLUT_ELAPSED_TIME);
|
|
||||||
|
|
||||||
ris = tnew - told;
|
|
||||||
|
|
||||||
told = tnew;
|
|
||||||
|
|
||||||
return ris / 1000.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
calcposobs(void)
|
calcposobs(void)
|
||||||
{
|
{
|
||||||
@@ -116,6 +102,13 @@ calcposobs(void)
|
|||||||
dir[1] = cos(alpha * M_PI / 180.0) * sin(beta * 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);
|
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[0] += v * dir[0];
|
||||||
obs[1] += v * dir[1];
|
obs[1] += v * dir[1];
|
||||||
obs[2] += v * dir[2];
|
obs[2] += v * dir[2];
|
||||||
@@ -393,8 +386,7 @@ colorcheckmap(float ppos[3], float c[3])
|
|||||||
h[1] = 0.5f * (vdir[1] + ldir[1]);
|
h[1] = 0.5f * (vdir[1] + ldir[1]);
|
||||||
h[2] = 0.5f * (vdir[2] + ldir[2]);
|
h[2] = 0.5f * (vdir[2] + ldir[2]);
|
||||||
kfact = dprod(h, norm);
|
kfact = dprod(h, norm);
|
||||||
kfact =
|
kfact = pow(kfact, 6.0) * 7.0 * 255.0;
|
||||||
kfact * kfact * kfact * kfact * kfact * kfact * kfact * 7.0f * 255.0f;
|
|
||||||
|
|
||||||
r = r * dfact + kfact;
|
r = r * dfact + kfact;
|
||||||
g = g * dfact + kfact;
|
g = g * dfact + kfact;
|
||||||
@@ -494,12 +486,10 @@ updatereflectmap(int slot)
|
|||||||
h[1] = 0.5f * (vdir[1] + ldir[1]);
|
h[1] = 0.5f * (vdir[1] + ldir[1]);
|
||||||
h[2] = 0.5f * (vdir[2] + ldir[2]);
|
h[2] = 0.5f * (vdir[2] + ldir[2]);
|
||||||
kfact = dprod(h, norm);
|
kfact = dprod(h, norm);
|
||||||
kfact *= kfact;
|
kfact = pow(kfact, 4.0);
|
||||||
kfact *= kfact;
|
if (kfact < 1.0e-10)
|
||||||
kfact *= kfact;
|
kfact = 0.0;
|
||||||
kfact *= kfact;
|
}
|
||||||
kfact *= 10.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
r = dfact + kfact;
|
r = dfact + kfact;
|
||||||
g = dfact + kfact;
|
g = dfact + kfact;
|
||||||
@@ -622,9 +612,7 @@ updatemaps(void)
|
|||||||
static void
|
static void
|
||||||
draw(void)
|
draw(void)
|
||||||
{
|
{
|
||||||
static int count = 0;
|
static char frbuf[80] = "";
|
||||||
static char frbuf[80];
|
|
||||||
float fr;
|
|
||||||
|
|
||||||
dojoy();
|
dojoy();
|
||||||
|
|
||||||
@@ -657,11 +645,6 @@ draw(void)
|
|||||||
|
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
if ((count % FRAME) == 0) {
|
|
||||||
fr = gettime();
|
|
||||||
sprintf(frbuf, "Frame rate: %f", FRAME / fr);
|
|
||||||
}
|
|
||||||
|
|
||||||
glDisable(GL_DEPTH_TEST);
|
glDisable(GL_DEPTH_TEST);
|
||||||
glDisable(GL_FOG);
|
glDisable(GL_FOG);
|
||||||
|
|
||||||
@@ -746,7 +729,17 @@ draw(void)
|
|||||||
|
|
||||||
glutSwapBuffers();
|
glutSwapBuffers();
|
||||||
|
|
||||||
count++;
|
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
|
static void
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: readpix.c,v 1.3 2000/03/31 01:01:31 brianp Exp $ */
|
/* $Id: readpix.c,v 1.4 2000/10/16 21:24:39 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* glReadPixels and glCopyPixels test
|
* glReadPixels and glCopyPixels test
|
||||||
@@ -8,6 +8,9 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: readpix.c,v $
|
* $Log: readpix.c,v $
|
||||||
|
* Revision 1.4 2000/10/16 21:24:39 brianp
|
||||||
|
* use gray background, memset TempImage to white to help with debugging
|
||||||
|
*
|
||||||
* Revision 1.3 2000/03/31 01:01:31 brianp
|
* Revision 1.3 2000/03/31 01:01:31 brianp
|
||||||
* tweaks to allow different read formats/types
|
* tweaks to allow different read formats/types
|
||||||
*
|
*
|
||||||
@@ -43,11 +46,11 @@ static GLboolean ScaleAndBias = GL_FALSE;
|
|||||||
static GLboolean Benchmark = GL_FALSE;
|
static GLboolean Benchmark = GL_FALSE;
|
||||||
static GLubyte *TempImage = NULL;
|
static GLubyte *TempImage = NULL;
|
||||||
|
|
||||||
#if 1
|
#if 0
|
||||||
#define ReadFormat ImgFormat
|
#define ReadFormat ImgFormat
|
||||||
#define ReadType GL_UNSIGNED_BYTE
|
#define ReadType GL_UNSIGNED_BYTE
|
||||||
#endif
|
#endif
|
||||||
#if 0
|
#if 1
|
||||||
static GLenum ReadFormat = GL_RGBA;
|
static GLenum ReadFormat = GL_RGBA;
|
||||||
static GLenum ReadType = GL_UNSIGNED_BYTE;
|
static GLenum ReadType = GL_UNSIGNED_BYTE;
|
||||||
#endif
|
#endif
|
||||||
@@ -55,6 +58,18 @@ static GLenum ReadType = GL_UNSIGNED_BYTE;
|
|||||||
static GLenum ReadFormat = GL_RGB;
|
static GLenum ReadFormat = GL_RGB;
|
||||||
static GLenum ReadType = GL_UNSIGNED_SHORT_5_6_5;
|
static GLenum ReadType = GL_UNSIGNED_SHORT_5_6_5;
|
||||||
#endif
|
#endif
|
||||||
|
#if 0
|
||||||
|
static GLenum ReadFormat = GL_RGBA;
|
||||||
|
static GLenum ReadType = GL_UNSIGNED_SHORT_1_5_5_5_REV;
|
||||||
|
#endif
|
||||||
|
#if 0
|
||||||
|
static GLenum ReadFormat = GL_BGRA;
|
||||||
|
static GLenum ReadType = GL_UNSIGNED_SHORT_5_5_5_1;
|
||||||
|
#endif
|
||||||
|
#if 0
|
||||||
|
static GLenum ReadFormat = GL_BGRA;
|
||||||
|
static GLenum ReadType = GL_UNSIGNED_SHORT_4_4_4_4_REV;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -101,6 +116,7 @@ SetupPixelTransfer(GLboolean invert)
|
|||||||
static void
|
static void
|
||||||
Display( void )
|
Display( void )
|
||||||
{
|
{
|
||||||
|
glClearColor(.3, .3, .3, 1);
|
||||||
glClear( GL_COLOR_BUFFER_BIT );
|
glClear( GL_COLOR_BUFFER_BIT );
|
||||||
|
|
||||||
glRasterPos2i(5, ImgHeight+25);
|
glRasterPos2i(5, ImgHeight+25);
|
||||||
@@ -137,6 +153,8 @@ Display( void )
|
|||||||
Benchmark = GL_FALSE;
|
Benchmark = GL_FALSE;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
/* clear the temporary image to white (helpful for debugging */
|
||||||
|
memset(TempImage, 255, ImgWidth * ImgHeight * 4);
|
||||||
glReadPixels(APosX, APosY, ImgWidth, ImgHeight,
|
glReadPixels(APosX, APosY, ImgWidth, ImgHeight,
|
||||||
ReadFormat, ReadType, TempImage);
|
ReadFormat, ReadType, TempImage);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: reflect.c,v 1.3 2000/06/15 14:25:48 brianp Exp $ */
|
/* $Id: reflect.c,v 1.7 2001/04/25 15:51:32 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Demo of a reflective, texture-mapped surface with OpenGL.
|
* Demo of a reflective, texture-mapped surface with OpenGL.
|
||||||
@@ -53,7 +53,11 @@ static GLfloat spin;
|
|||||||
|
|
||||||
static GLint Width = 400, Height = 300;
|
static GLint Width = 400, Height = 300;
|
||||||
static GLenum ShowBuffer = GL_NONE;
|
static GLenum ShowBuffer = GL_NONE;
|
||||||
|
static GLboolean Anim = GL_TRUE;
|
||||||
|
|
||||||
|
/* performance info */
|
||||||
|
static GLint T0 = 0;
|
||||||
|
static GLint Frames = 0;
|
||||||
|
|
||||||
|
|
||||||
static void make_table( void )
|
static void make_table( void )
|
||||||
@@ -144,7 +148,7 @@ static void init( void )
|
|||||||
glEnable( GL_LIGHT0 );
|
glEnable( GL_LIGHT0 );
|
||||||
glEnable( GL_LIGHTING );
|
glEnable( GL_LIGHTING );
|
||||||
|
|
||||||
glClearColor( 0.5, 0.5, 0.9, 1.0 );
|
glClearColor( 0.5, 0.5, 0.9, 0.0 );
|
||||||
|
|
||||||
glEnable( GL_NORMALIZE );
|
glEnable( GL_NORMALIZE );
|
||||||
}
|
}
|
||||||
@@ -293,8 +297,31 @@ static void draw_scene( void )
|
|||||||
else if (ShowBuffer == GL_STENCIL) {
|
else if (ShowBuffer == GL_STENCIL) {
|
||||||
ShowStencilBuffer(Width, Height, 255.0, 0.0);
|
ShowStencilBuffer(Width, Height, 255.0, 0.0);
|
||||||
}
|
}
|
||||||
|
else if (ShowBuffer == GL_ALPHA) {
|
||||||
|
ShowAlphaBuffer(Width, Height);
|
||||||
|
}
|
||||||
|
|
||||||
glutSwapBuffers();
|
glutSwapBuffers();
|
||||||
|
|
||||||
|
{
|
||||||
|
GLint t = glutGet(GLUT_ELAPSED_TIME);
|
||||||
|
Frames++;
|
||||||
|
if (t - T0 >= 5000) {
|
||||||
|
GLfloat seconds = (t - T0) / 1000.0;
|
||||||
|
GLfloat fps = Frames / seconds;
|
||||||
|
printf("%d frames in %g seconds = %g FPS\n", Frames, seconds, fps);
|
||||||
|
T0 = t;
|
||||||
|
Frames = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void idle( void )
|
||||||
|
{
|
||||||
|
spin += 2.0;
|
||||||
|
yrot += 3.0;
|
||||||
|
glutPostRedisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -308,6 +335,16 @@ static void Key( unsigned char key, int x, int y )
|
|||||||
else if (key == 's') {
|
else if (key == 's') {
|
||||||
ShowBuffer = GL_STENCIL;
|
ShowBuffer = GL_STENCIL;
|
||||||
}
|
}
|
||||||
|
else if (key == 'a') {
|
||||||
|
ShowBuffer = GL_ALPHA;
|
||||||
|
}
|
||||||
|
else if (key == ' ') {
|
||||||
|
Anim = !Anim;
|
||||||
|
if (Anim)
|
||||||
|
glutIdleFunc(idle);
|
||||||
|
else
|
||||||
|
glutIdleFunc(NULL);
|
||||||
|
}
|
||||||
else if (key==27) {
|
else if (key==27) {
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
@@ -344,16 +381,6 @@ static void SpecialKey( int key, int x, int y )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void idle( void )
|
|
||||||
{
|
|
||||||
spin += 2.0;
|
|
||||||
yrot += 3.0;
|
|
||||||
glutPostRedisplay();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int main( int argc, char *argv[] )
|
int main( int argc, char *argv[] )
|
||||||
{
|
{
|
||||||
glutInit(&argc, argv);
|
glutInit(&argc, argv);
|
||||||
|
|||||||
@@ -1,119 +0,0 @@
|
|||||||
/**
|
|
||||||
(c) Copyright 1993, Silicon Graphics, Inc.
|
|
||||||
|
|
||||||
ALL RIGHTS RESERVED
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and distribute this software
|
|
||||||
for any purpose and without fee is hereby granted, provided
|
|
||||||
that the above copyright notice appear in all copies and that
|
|
||||||
both the copyright notice and this permission notice appear in
|
|
||||||
supporting documentation, and that the name of Silicon
|
|
||||||
Graphics, Inc. not be used in advertising or publicity
|
|
||||||
pertaining to distribution of the software without specific,
|
|
||||||
written prior permission.
|
|
||||||
|
|
||||||
THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU
|
|
||||||
"AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR
|
|
||||||
OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
|
|
||||||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO
|
|
||||||
EVENT SHALL SILICON GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE
|
|
||||||
ELSE FOR ANY DIRECT, SPECIAL, INCIDENTAL, INDIRECT OR
|
|
||||||
CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER,
|
|
||||||
INCLUDING WITHOUT LIMITATION, LOSS OF PROFIT, LOSS OF USE,
|
|
||||||
SAVINGS OR REVENUE, OR THE CLAIMS OF THIRD PARTIES, WHETHER OR
|
|
||||||
NOT SILICON GRAPHICS, INC. HAS BEEN ADVISED OF THE POSSIBILITY
|
|
||||||
OF SUCH LOSS, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
||||||
ARISING OUT OF OR IN CONNECTION WITH THE POSSESSION, USE OR
|
|
||||||
PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
|
|
||||||
US Government Users Restricted Rights
|
|
||||||
|
|
||||||
Use, duplication, or disclosure by the Government is subject to
|
|
||||||
restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
|
|
||||||
(c)(1)(ii) of the Rights in Technical Data and Computer
|
|
||||||
Software clause at DFARS 252.227-7013 and/or in similar or
|
|
||||||
successor clauses in the FAR or the DOD or NASA FAR
|
|
||||||
Supplement. Unpublished-- rights reserved under the copyright
|
|
||||||
laws of the United States. Contractor/manufacturer is Silicon
|
|
||||||
Graphics, Inc., 2011 N. Shoreline Blvd., Mountain View, CA
|
|
||||||
94039-7311.
|
|
||||||
|
|
||||||
OpenGL(TM) is a trademark of Silicon Graphics, Inc.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Taken from the projshadow.c - by Tom McReynolds, SGI */
|
|
||||||
|
|
||||||
/* Modified by David Bucciarelli */
|
|
||||||
|
|
||||||
/* Rendering shadows using projective shadows. */
|
|
||||||
|
|
||||||
#include <GL/glut.h>
|
|
||||||
#include "shadow.h"
|
|
||||||
|
|
||||||
|
|
||||||
enum {
|
|
||||||
X, Y, Z, W
|
|
||||||
};
|
|
||||||
enum {
|
|
||||||
A, B, C, D
|
|
||||||
};
|
|
||||||
|
|
||||||
/* create a matrix that will project the desired shadow */
|
|
||||||
void
|
|
||||||
shadowmatrix(GLfloat shadowMat[4][4],
|
|
||||||
GLfloat groundplane[4],
|
|
||||||
GLfloat lightpos[4])
|
|
||||||
{
|
|
||||||
GLfloat dot;
|
|
||||||
|
|
||||||
/* find dot product between light position vector and ground plane normal */
|
|
||||||
dot = groundplane[X] * lightpos[X] +
|
|
||||||
groundplane[Y] * lightpos[Y] +
|
|
||||||
groundplane[Z] * lightpos[Z] +
|
|
||||||
groundplane[W] * lightpos[W];
|
|
||||||
|
|
||||||
shadowMat[0][0] = dot - lightpos[X] * groundplane[X];
|
|
||||||
shadowMat[1][0] = 0.f - lightpos[X] * groundplane[Y];
|
|
||||||
shadowMat[2][0] = 0.f - lightpos[X] * groundplane[Z];
|
|
||||||
shadowMat[3][0] = 0.f - lightpos[X] * groundplane[W];
|
|
||||||
|
|
||||||
shadowMat[X][1] = 0.f - lightpos[Y] * groundplane[X];
|
|
||||||
shadowMat[1][1] = dot - lightpos[Y] * groundplane[Y];
|
|
||||||
shadowMat[2][1] = 0.f - lightpos[Y] * groundplane[Z];
|
|
||||||
shadowMat[3][1] = 0.f - lightpos[Y] * groundplane[W];
|
|
||||||
|
|
||||||
shadowMat[X][2] = 0.f - lightpos[Z] * groundplane[X];
|
|
||||||
shadowMat[1][2] = 0.f - lightpos[Z] * groundplane[Y];
|
|
||||||
shadowMat[2][2] = dot - lightpos[Z] * groundplane[Z];
|
|
||||||
shadowMat[3][2] = 0.f - lightpos[Z] * groundplane[W];
|
|
||||||
|
|
||||||
shadowMat[X][3] = 0.f - lightpos[W] * groundplane[X];
|
|
||||||
shadowMat[1][3] = 0.f - lightpos[W] * groundplane[Y];
|
|
||||||
shadowMat[2][3] = 0.f - lightpos[W] * groundplane[Z];
|
|
||||||
shadowMat[3][3] = dot - lightpos[W] * groundplane[W];
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* find the plane equation given 3 points */
|
|
||||||
void
|
|
||||||
findplane(GLfloat plane[4],
|
|
||||||
GLfloat v0[3], GLfloat v1[3], GLfloat v2[3])
|
|
||||||
{
|
|
||||||
GLfloat vec0[3], vec1[3];
|
|
||||||
|
|
||||||
/* need 2 vectors to find cross product */
|
|
||||||
vec0[X] = v1[X] - v0[X];
|
|
||||||
vec0[Y] = v1[Y] - v0[Y];
|
|
||||||
vec0[Z] = v1[Z] - v0[Z];
|
|
||||||
|
|
||||||
vec1[X] = v2[X] - v0[X];
|
|
||||||
vec1[Y] = v2[Y] - v0[Y];
|
|
||||||
vec1[Z] = v2[Z] - v0[Z];
|
|
||||||
|
|
||||||
/* find cross product to get A, B, and C of plane equation */
|
|
||||||
plane[A] = vec0[Y] * vec1[Z] - vec0[Z] * vec1[Y];
|
|
||||||
plane[B] = -(vec0[X] * vec1[Z] - vec0[Z] * vec1[X]);
|
|
||||||
plane[C] = vec0[X] * vec1[Y] - vec0[Y] * vec1[X];
|
|
||||||
|
|
||||||
plane[D] = -(plane[A] * v0[X] + plane[B] * v0[Y] + plane[C] * v0[Z]);
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
#ifndef SHADOW_H
|
|
||||||
#define SHADOW_H
|
|
||||||
|
|
||||||
|
|
||||||
extern void
|
|
||||||
shadowmatrix(GLfloat shadowMat[4][4],
|
|
||||||
GLfloat groundplane[4],
|
|
||||||
GLfloat lightpos[4]);
|
|
||||||
|
|
||||||
|
|
||||||
extern void
|
|
||||||
findplane(GLfloat plane[4],
|
|
||||||
GLfloat v0[3], GLfloat v1[3], GLfloat v2[3]);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
528
progs/demos/shadowtex.c
Normal file
528
progs/demos/shadowtex.c
Normal file
@@ -0,0 +1,528 @@
|
|||||||
|
/* $Id: shadowtex.c,v 1.4 2001/02/28 18:41:50 brianp Exp $ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Shadow demo using the GL_SGIX_depth_texture, GL_SGIX_shadow and
|
||||||
|
* GL_SGIX_shadow_ambient extensions.
|
||||||
|
*
|
||||||
|
* Brian Paul
|
||||||
|
* 19 Feb 2001
|
||||||
|
*
|
||||||
|
* Copyright (C) 1999-2001 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 <assert.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <GL/glut.h>
|
||||||
|
#include "../util/showbuffer.c"
|
||||||
|
|
||||||
|
|
||||||
|
#define DEG_TO_RAD (3.14159 / 180.0)
|
||||||
|
|
||||||
|
static GLint WindowWidth = 450, WindowHeight = 300;
|
||||||
|
static GLfloat Xrot = 15, Yrot = 0, Zrot = 0;
|
||||||
|
|
||||||
|
static GLfloat Red[4] = {1, 0, 0, 1};
|
||||||
|
static GLfloat Green[4] = {0, 1, 0, 1};
|
||||||
|
static GLfloat Blue[4] = {0, 0, 1, 1};
|
||||||
|
static GLfloat Yellow[4] = {1, 1, 0, 1};
|
||||||
|
|
||||||
|
static GLfloat LightDist = 10;
|
||||||
|
static GLfloat LightLatitude = 45.0;
|
||||||
|
static GLfloat LightLongitude = 45.0;
|
||||||
|
static GLfloat LightPos[4];
|
||||||
|
static GLfloat SpotDir[3];
|
||||||
|
static GLfloat SpotAngle = 40.0 * DEG_TO_RAD;
|
||||||
|
static GLfloat ShadowNear = 4.0, ShadowFar = 24.0;
|
||||||
|
static GLint ShadowTexWidth = 256, ShadowTexHeight = 256;
|
||||||
|
|
||||||
|
static GLboolean LinearFilter = GL_FALSE;
|
||||||
|
|
||||||
|
static GLfloat Bias = -0.06;
|
||||||
|
|
||||||
|
static GLboolean Anim = GL_TRUE;
|
||||||
|
|
||||||
|
static GLuint DisplayMode;
|
||||||
|
#define SHOW_NORMAL 0
|
||||||
|
#define SHOW_DEPTH_IMAGE 1
|
||||||
|
#define SHOW_DEPTH_MAPPING 2
|
||||||
|
#define SHOW_DISTANCE 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
DrawScene(void)
|
||||||
|
{
|
||||||
|
GLfloat k = 6;
|
||||||
|
/* sphere */
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(1.6, 2.2, 2.7);
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, Green);
|
||||||
|
glColor4fv(Green);
|
||||||
|
glutSolidSphere(1.5, 15, 15);
|
||||||
|
glPopMatrix();
|
||||||
|
/* dodecahedron */
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(-2.0, 1.2, 2.1);
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, Red);
|
||||||
|
glColor4fv(Red);
|
||||||
|
glutSolidDodecahedron();
|
||||||
|
glPopMatrix();
|
||||||
|
/* icosahedron */
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(-0.6, 1.3, -0.5);
|
||||||
|
glScalef(1.5, 1.5, 1.5);
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, Yellow);
|
||||||
|
glColor4fv(Red);
|
||||||
|
glutSolidIcosahedron();
|
||||||
|
glPopMatrix();
|
||||||
|
/* a plane */
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(0, -1.1, 0);
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, Blue);
|
||||||
|
glColor4fv(Blue);
|
||||||
|
glNormal3f(0, 1, 0);
|
||||||
|
glBegin(GL_POLYGON);
|
||||||
|
glVertex3f(-k, 0, -k);
|
||||||
|
glVertex3f( k, 0, -k);
|
||||||
|
glVertex3f( k, 0, k);
|
||||||
|
glVertex3f(-k, 0, k);
|
||||||
|
glEnd();
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Load the GL_TEXTURE matrix with the projection from the light
|
||||||
|
* source's point of view.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
MakeShadowMatrix(const GLfloat lightPos[4], const GLfloat spotDir[3],
|
||||||
|
GLfloat spotAngle, GLfloat shadowNear, GLfloat shadowFar)
|
||||||
|
{
|
||||||
|
GLfloat d;
|
||||||
|
|
||||||
|
glMatrixMode(GL_TEXTURE);
|
||||||
|
glLoadIdentity();
|
||||||
|
glTranslatef(0.5, 0.5, 0.5 + Bias);
|
||||||
|
glScalef(0.5, 0.5, 0.5);
|
||||||
|
d = shadowNear * tan(spotAngle);
|
||||||
|
glFrustum(-d, d, -d, d, shadowNear, shadowFar);
|
||||||
|
gluLookAt(lightPos[0], lightPos[1], lightPos[2],
|
||||||
|
lightPos[0] + spotDir[0],
|
||||||
|
lightPos[1] + spotDir[1],
|
||||||
|
lightPos[2] + spotDir[2],
|
||||||
|
0, 1, 0);
|
||||||
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
EnableIdentityTexgen(void)
|
||||||
|
{
|
||||||
|
/* texgen so that texcoord = vertex coord */
|
||||||
|
static GLfloat sPlane[4] = { 1, 0, 0, 0 };
|
||||||
|
static GLfloat tPlane[4] = { 0, 1, 0, 0 };
|
||||||
|
static GLfloat rPlane[4] = { 0, 0, 1, 0 };
|
||||||
|
static GLfloat qPlane[4] = { 0, 0, 0, 1 };
|
||||||
|
|
||||||
|
glTexGenfv(GL_S, GL_EYE_PLANE, sPlane);
|
||||||
|
glTexGenfv(GL_T, GL_EYE_PLANE, tPlane);
|
||||||
|
glTexGenfv(GL_R, GL_EYE_PLANE, rPlane);
|
||||||
|
glTexGenfv(GL_Q, GL_EYE_PLANE, qPlane);
|
||||||
|
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
|
||||||
|
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
|
||||||
|
glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
|
||||||
|
glTexGeni(GL_Q, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
|
||||||
|
|
||||||
|
glEnable(GL_TEXTURE_GEN_S);
|
||||||
|
glEnable(GL_TEXTURE_GEN_T);
|
||||||
|
glEnable(GL_TEXTURE_GEN_R);
|
||||||
|
glEnable(GL_TEXTURE_GEN_Q);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Setup 1-D texgen so that the distance from the light source, between
|
||||||
|
* the near and far planes maps to s=0 and s=1. When we draw the scene,
|
||||||
|
* the grayness will indicate the fragment's distance from the light
|
||||||
|
* source.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
EnableDistanceTexgen(const GLfloat lightPos[4], const GLfloat lightDir[3],
|
||||||
|
GLfloat lightNear, GLfloat lightFar)
|
||||||
|
{
|
||||||
|
GLfloat m, d;
|
||||||
|
GLfloat sPlane[4];
|
||||||
|
GLfloat nearPoint[3];
|
||||||
|
|
||||||
|
m = sqrt(lightDir[0] * lightDir[0] +
|
||||||
|
lightDir[1] * lightDir[1] +
|
||||||
|
lightDir[2] * lightDir[2]);
|
||||||
|
|
||||||
|
d = lightFar - lightNear;
|
||||||
|
|
||||||
|
/* nearPoint = point on light direction vector which intersects the
|
||||||
|
* near plane of the light frustum.
|
||||||
|
*/
|
||||||
|
nearPoint[0] = LightPos[0] + lightDir[0] / m * lightNear;
|
||||||
|
nearPoint[1] = LightPos[1] + lightDir[1] / m * lightNear;
|
||||||
|
nearPoint[2] = LightPos[2] + lightDir[2] / m * lightNear;
|
||||||
|
|
||||||
|
sPlane[0] = lightDir[0] / d / m;
|
||||||
|
sPlane[1] = lightDir[1] / d / m;
|
||||||
|
sPlane[2] = lightDir[2] / d / m;
|
||||||
|
sPlane[3] = -(sPlane[0] * nearPoint[0]
|
||||||
|
+ sPlane[1] * nearPoint[1]
|
||||||
|
+ sPlane[2] * nearPoint[2]);
|
||||||
|
|
||||||
|
glTexGenfv(GL_S, GL_EYE_PLANE, sPlane);
|
||||||
|
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
|
||||||
|
glEnable(GL_TEXTURE_GEN_S);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
DisableTexgen(void)
|
||||||
|
{
|
||||||
|
glDisable(GL_TEXTURE_GEN_S);
|
||||||
|
glDisable(GL_TEXTURE_GEN_T);
|
||||||
|
glDisable(GL_TEXTURE_GEN_R);
|
||||||
|
glDisable(GL_TEXTURE_GEN_Q);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
ComputeLightPos(GLfloat dist, GLfloat latitude, GLfloat longitude,
|
||||||
|
GLfloat pos[4], GLfloat dir[3])
|
||||||
|
{
|
||||||
|
|
||||||
|
pos[0] = dist * sin(longitude * DEG_TO_RAD);
|
||||||
|
pos[1] = dist * sin(latitude * DEG_TO_RAD);
|
||||||
|
pos[2] = dist * cos(latitude * DEG_TO_RAD) * cos(longitude * DEG_TO_RAD);
|
||||||
|
pos[3] = 1;
|
||||||
|
dir[0] = -pos[0];
|
||||||
|
dir[1] = -pos[1];
|
||||||
|
dir[2] = -pos[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
Display(void)
|
||||||
|
{
|
||||||
|
GLfloat ar = (GLfloat) WindowWidth / (GLfloat) WindowHeight;
|
||||||
|
GLfloat d;
|
||||||
|
|
||||||
|
ComputeLightPos(LightDist, LightLatitude, LightLongitude,
|
||||||
|
LightPos, SpotDir);
|
||||||
|
/*
|
||||||
|
* Step 1: render scene from point of view of the light source
|
||||||
|
*/
|
||||||
|
/* compute frustum to enclose spot light cone */
|
||||||
|
d = ShadowNear * tan(SpotAngle);
|
||||||
|
glMatrixMode(GL_PROJECTION);
|
||||||
|
glLoadIdentity();
|
||||||
|
glFrustum(-d, d, -d, d, ShadowNear, ShadowFar);
|
||||||
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
glLoadIdentity();
|
||||||
|
gluLookAt(LightPos[0], LightPos[1], LightPos[2], /* from */
|
||||||
|
0, 0, 0, /* target */
|
||||||
|
0, 1, 0); /* up */
|
||||||
|
|
||||||
|
glViewport(0, 0, ShadowTexWidth, ShadowTexHeight);
|
||||||
|
glClear(GL_DEPTH_BUFFER_BIT);
|
||||||
|
DrawScene();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Step 2: copy depth buffer into texture map
|
||||||
|
*/
|
||||||
|
if (DisplayMode == SHOW_DEPTH_MAPPING) {
|
||||||
|
/* load depth image as gray-scale luminance texture */
|
||||||
|
GLfloat *depth = malloc(ShadowTexWidth * ShadowTexHeight
|
||||||
|
* sizeof(GLfloat));
|
||||||
|
if (depth) {
|
||||||
|
glReadPixels(0, 0, ShadowTexWidth, ShadowTexHeight,
|
||||||
|
GL_DEPTH_COMPONENT, GL_FLOAT, depth);
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE,
|
||||||
|
ShadowTexWidth, ShadowTexHeight, 0,
|
||||||
|
GL_LUMINANCE, GL_FLOAT, depth);
|
||||||
|
free(depth);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/* The normal shadow case */
|
||||||
|
glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT,
|
||||||
|
0, 0, ShadowTexWidth, ShadowTexHeight, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Step 3: render scene from point of view of the camera
|
||||||
|
*/
|
||||||
|
glViewport(0, 0, WindowWidth, WindowHeight);
|
||||||
|
if (DisplayMode == SHOW_DEPTH_IMAGE) {
|
||||||
|
ShowDepthBuffer(WindowWidth, WindowHeight, 0, 1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
glMatrixMode(GL_PROJECTION);
|
||||||
|
glLoadIdentity();
|
||||||
|
glFrustum(-ar, ar, -1.0, 1.0, 4.0, 50.0);
|
||||||
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
glLoadIdentity();
|
||||||
|
glTranslatef(0.0, 0.0, -22.0);
|
||||||
|
glRotatef(Xrot, 1, 0, 0);
|
||||||
|
glRotatef(Yrot, 0, 1, 0);
|
||||||
|
glRotatef(Zrot, 0, 0, 1);
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
glLightfv(GL_LIGHT0, GL_POSITION, LightPos);
|
||||||
|
if (LinearFilter) {
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
if (DisplayMode == SHOW_DEPTH_MAPPING) {
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_SGIX, GL_FALSE);
|
||||||
|
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
MakeShadowMatrix(LightPos, SpotDir, SpotAngle, ShadowNear, ShadowFar);
|
||||||
|
EnableIdentityTexgen();
|
||||||
|
}
|
||||||
|
else if (DisplayMode == SHOW_DISTANCE) {
|
||||||
|
glMatrixMode(GL_TEXTURE);
|
||||||
|
glLoadIdentity();
|
||||||
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
EnableDistanceTexgen(LightPos, SpotDir, ShadowNear+Bias, ShadowFar);
|
||||||
|
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
||||||
|
glEnable(GL_TEXTURE_1D);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
assert(DisplayMode == SHOW_NORMAL);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_SGIX, GL_TRUE);
|
||||||
|
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
MakeShadowMatrix(LightPos, SpotDir, SpotAngle, ShadowNear, ShadowFar);
|
||||||
|
EnableIdentityTexgen();
|
||||||
|
}
|
||||||
|
DrawScene();
|
||||||
|
DisableTexgen();
|
||||||
|
glDisable(GL_TEXTURE_1D);
|
||||||
|
glDisable(GL_TEXTURE_2D);
|
||||||
|
}
|
||||||
|
|
||||||
|
glutSwapBuffers();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
Reshape(int width, int height)
|
||||||
|
{
|
||||||
|
WindowWidth = width;
|
||||||
|
WindowHeight = height;
|
||||||
|
if (width >= 512 && height >= 512) {
|
||||||
|
ShadowTexWidth = ShadowTexHeight = 512;
|
||||||
|
}
|
||||||
|
else if (width >= 256 && height >= 256) {
|
||||||
|
ShadowTexWidth = ShadowTexHeight = 256;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ShadowTexWidth = ShadowTexHeight = 128;
|
||||||
|
}
|
||||||
|
printf("Using %d x %d depth texture\n", ShadowTexWidth, ShadowTexHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
Idle(void)
|
||||||
|
{
|
||||||
|
Yrot += 5.0;
|
||||||
|
/*LightLongitude -= 5.0;*/
|
||||||
|
glutPostRedisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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 'b':
|
||||||
|
Bias -= 0.01;
|
||||||
|
printf("Bias %g\n", Bias);
|
||||||
|
break;
|
||||||
|
case 'B':
|
||||||
|
Bias += 0.01;
|
||||||
|
printf("Bias %g\n", Bias);
|
||||||
|
break;
|
||||||
|
case 'd':
|
||||||
|
DisplayMode = SHOW_DISTANCE;
|
||||||
|
break;
|
||||||
|
case 'f':
|
||||||
|
LinearFilter = !LinearFilter;
|
||||||
|
printf("%s filtering\n", LinearFilter ? "Bilinear" : "Nearest");
|
||||||
|
break;
|
||||||
|
case 'i':
|
||||||
|
DisplayMode = SHOW_DEPTH_IMAGE;
|
||||||
|
break;
|
||||||
|
case 'm':
|
||||||
|
DisplayMode = SHOW_DEPTH_MAPPING;
|
||||||
|
break;
|
||||||
|
case 'n':
|
||||||
|
case ' ':
|
||||||
|
DisplayMode = SHOW_NORMAL;
|
||||||
|
break;
|
||||||
|
case 'z':
|
||||||
|
Zrot -= step;
|
||||||
|
break;
|
||||||
|
case 'Z':
|
||||||
|
Zrot += step;
|
||||||
|
break;
|
||||||
|
case 27:
|
||||||
|
exit(0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
glutPostRedisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
SpecialKey(int key, int x, int y)
|
||||||
|
{
|
||||||
|
const GLfloat step = 3.0;
|
||||||
|
const int mod = glutGetModifiers();
|
||||||
|
(void) x;
|
||||||
|
(void) y;
|
||||||
|
switch (key) {
|
||||||
|
case GLUT_KEY_UP:
|
||||||
|
if (mod)
|
||||||
|
LightLatitude += step;
|
||||||
|
else
|
||||||
|
Xrot += step;
|
||||||
|
break;
|
||||||
|
case GLUT_KEY_DOWN:
|
||||||
|
if (mod)
|
||||||
|
LightLatitude -= step;
|
||||||
|
else
|
||||||
|
Xrot -= step;
|
||||||
|
break;
|
||||||
|
case GLUT_KEY_LEFT:
|
||||||
|
if (mod)
|
||||||
|
LightLongitude += step;
|
||||||
|
else
|
||||||
|
Yrot += step;
|
||||||
|
break;
|
||||||
|
case GLUT_KEY_RIGHT:
|
||||||
|
if (mod)
|
||||||
|
LightLongitude -= step;
|
||||||
|
else
|
||||||
|
Yrot -= step;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
glutPostRedisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
Init(void)
|
||||||
|
{
|
||||||
|
if (!glutExtensionSupported("GL_SGIX_depth_texture") ||
|
||||||
|
!glutExtensionSupported("GL_SGIX_shadow")) {
|
||||||
|
printf("Sorry, this demo requires the GL_SGIX_depth_texture and GL_SGIX_shadow extensions\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP);
|
||||||
|
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
|
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
|
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_T, GL_CLAMP);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
|
||||||
|
#ifdef GL_SGIX_shadow
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_OPERATOR_SGIX,
|
||||||
|
GL_TEXTURE_LEQUAL_R_SGIX);
|
||||||
|
#endif
|
||||||
|
#ifdef GL_SGIX_shadow_ambient
|
||||||
|
if (glutExtensionSupported("GL_SGIX_shadow_ambient"))
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_SHADOW_AMBIENT_SGIX, 0.3);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* setup 1-D grayscale texture image for SHOW_DISTANCE mode */
|
||||||
|
{
|
||||||
|
GLuint i;
|
||||||
|
GLubyte image[256];
|
||||||
|
for (i = 0; i < 256; i++)
|
||||||
|
image[i] = i;
|
||||||
|
glTexImage1D(GL_TEXTURE_1D, 0, GL_LUMINANCE,
|
||||||
|
256, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, image);
|
||||||
|
}
|
||||||
|
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
glEnable(GL_LIGHTING);
|
||||||
|
glEnable(GL_LIGHT0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
PrintHelp(void)
|
||||||
|
{
|
||||||
|
printf("Keys:\n");
|
||||||
|
printf(" a = toggle animation\n");
|
||||||
|
printf(" i = show depth texture image\n");
|
||||||
|
printf(" m = show depth texture mapping\n");
|
||||||
|
printf(" d = show fragment distance from light source\n");
|
||||||
|
printf(" n = show normal, shadowed image\n");
|
||||||
|
printf(" f = toggle nearest/bilinear texture filtering\n");
|
||||||
|
printf(" b/B = decrease/increase shadow map Z bias\n");
|
||||||
|
printf(" cursor keys = rotate scene\n");
|
||||||
|
printf(" <shift> + cursor keys = rotate light source\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
glutInit(&argc, argv);
|
||||||
|
glutInitWindowPosition(0, 0);
|
||||||
|
glutInitWindowSize(WindowWidth, WindowHeight);
|
||||||
|
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
|
||||||
|
glutCreateWindow(argv[0]);
|
||||||
|
glutReshapeFunc(Reshape);
|
||||||
|
glutKeyboardFunc(Key);
|
||||||
|
glutSpecialFunc(SpecialKey);
|
||||||
|
glutDisplayFunc(Display);
|
||||||
|
if (Anim)
|
||||||
|
glutIdleFunc(Idle);
|
||||||
|
Init();
|
||||||
|
PrintHelp();
|
||||||
|
glutMainLoop();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -16,8 +16,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
#include "../util/readtex.c"
|
#include "readtex.c"
|
||||||
#include "shadow.c"
|
|
||||||
|
|
||||||
#ifdef XMESA
|
#ifdef XMESA
|
||||||
#include "GL/xmesa.h"
|
#include "GL/xmesa.h"
|
||||||
@@ -27,7 +26,8 @@ static int fullscreen=1;
|
|||||||
static int WIDTH=640;
|
static int WIDTH=640;
|
||||||
static int HEIGHT=480;
|
static int HEIGHT=480;
|
||||||
|
|
||||||
#define FRAME 50
|
static GLint T0 = 0;
|
||||||
|
static GLint Frames = 0;
|
||||||
|
|
||||||
#define BASESIZE 10.0
|
#define BASESIZE 10.0
|
||||||
|
|
||||||
@@ -65,20 +65,84 @@ static int joyactive=0;
|
|||||||
static GLuint t1id,t2id;
|
static GLuint t1id,t2id;
|
||||||
static GLuint teapotdlist,basedlist,lightdlist;
|
static GLuint teapotdlist,basedlist,lightdlist;
|
||||||
|
|
||||||
static float gettime(void)
|
|
||||||
|
|
||||||
|
/******************** begin shadow code ********************/
|
||||||
|
|
||||||
|
/* Taken from the projshadow.c - by Tom McReynolds, SGI */
|
||||||
|
|
||||||
|
/* Modified by David Bucciarelli */
|
||||||
|
|
||||||
|
enum {
|
||||||
|
X, Y, Z, W
|
||||||
|
};
|
||||||
|
enum {
|
||||||
|
A, B, C, D
|
||||||
|
};
|
||||||
|
|
||||||
|
/* create a matrix that will project the desired shadow */
|
||||||
|
void
|
||||||
|
shadowmatrix(GLfloat shadowMat[4][4],
|
||||||
|
GLfloat groundplane[4],
|
||||||
|
GLfloat lightpos[4])
|
||||||
{
|
{
|
||||||
static clock_t told=0;
|
GLfloat dot;
|
||||||
clock_t tnew,ris;
|
|
||||||
|
|
||||||
tnew=clock();
|
/* find dot product between light position vector and ground plane normal */
|
||||||
|
dot = groundplane[X] * lightpos[X] +
|
||||||
|
groundplane[Y] * lightpos[Y] +
|
||||||
|
groundplane[Z] * lightpos[Z] +
|
||||||
|
groundplane[W] * lightpos[W];
|
||||||
|
|
||||||
ris=tnew-told;
|
shadowMat[0][0] = dot - lightpos[X] * groundplane[X];
|
||||||
|
shadowMat[1][0] = 0.f - lightpos[X] * groundplane[Y];
|
||||||
|
shadowMat[2][0] = 0.f - lightpos[X] * groundplane[Z];
|
||||||
|
shadowMat[3][0] = 0.f - lightpos[X] * groundplane[W];
|
||||||
|
|
||||||
told=tnew;
|
shadowMat[X][1] = 0.f - lightpos[Y] * groundplane[X];
|
||||||
|
shadowMat[1][1] = dot - lightpos[Y] * groundplane[Y];
|
||||||
|
shadowMat[2][1] = 0.f - lightpos[Y] * groundplane[Z];
|
||||||
|
shadowMat[3][1] = 0.f - lightpos[Y] * groundplane[W];
|
||||||
|
|
||||||
|
shadowMat[X][2] = 0.f - lightpos[Z] * groundplane[X];
|
||||||
|
shadowMat[1][2] = 0.f - lightpos[Z] * groundplane[Y];
|
||||||
|
shadowMat[2][2] = dot - lightpos[Z] * groundplane[Z];
|
||||||
|
shadowMat[3][2] = 0.f - lightpos[Z] * groundplane[W];
|
||||||
|
|
||||||
|
shadowMat[X][3] = 0.f - lightpos[W] * groundplane[X];
|
||||||
|
shadowMat[1][3] = 0.f - lightpos[W] * groundplane[Y];
|
||||||
|
shadowMat[2][3] = 0.f - lightpos[W] * groundplane[Z];
|
||||||
|
shadowMat[3][3] = dot - lightpos[W] * groundplane[W];
|
||||||
|
|
||||||
return(ris/(float)CLOCKS_PER_SEC);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* find the plane equation given 3 points */
|
||||||
|
void
|
||||||
|
findplane(GLfloat plane[4],
|
||||||
|
GLfloat v0[3], GLfloat v1[3], GLfloat v2[3])
|
||||||
|
{
|
||||||
|
GLfloat vec0[3], vec1[3];
|
||||||
|
|
||||||
|
/* need 2 vectors to find cross product */
|
||||||
|
vec0[X] = v1[X] - v0[X];
|
||||||
|
vec0[Y] = v1[Y] - v0[Y];
|
||||||
|
vec0[Z] = v1[Z] - v0[Z];
|
||||||
|
|
||||||
|
vec1[X] = v2[X] - v0[X];
|
||||||
|
vec1[Y] = v2[Y] - v0[Y];
|
||||||
|
vec1[Z] = v2[Z] - v0[Z];
|
||||||
|
|
||||||
|
/* find cross product to get A, B, and C of plane equation */
|
||||||
|
plane[A] = vec0[Y] * vec1[Z] - vec0[Z] * vec1[Y];
|
||||||
|
plane[B] = -(vec0[X] * vec1[Z] - vec0[Z] * vec1[X]);
|
||||||
|
plane[C] = vec0[X] * vec1[Y] - vec0[Y] * vec1[X];
|
||||||
|
|
||||||
|
plane[D] = -(plane[A] * v0[X] + plane[B] * v0[Y] + plane[C] * v0[Z]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************** end shadow code ********************/
|
||||||
|
|
||||||
|
|
||||||
static void calcposobs(void)
|
static void calcposobs(void)
|
||||||
{
|
{
|
||||||
dir[0]=sin(alpha*M_PI/180.0);
|
dir[0]=sin(alpha*M_PI/180.0);
|
||||||
@@ -208,11 +272,15 @@ static void printhelp(void)
|
|||||||
|
|
||||||
static void drawbase(void)
|
static void drawbase(void)
|
||||||
{
|
{
|
||||||
|
static const GLfloat amb[4] = { 1, .5, 0.2, 1 };
|
||||||
|
static const GLfloat diff[4] = { 1, .4, 0.2, 1 };
|
||||||
int i,j;
|
int i,j;
|
||||||
float x,y,dx,dy;
|
float x,y,dx,dy;
|
||||||
|
|
||||||
glBindTexture(GL_TEXTURE_2D,t1id);
|
glBindTexture(GL_TEXTURE_2D,t1id);
|
||||||
|
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, amb);
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diff);
|
||||||
dx=BASESIZE/BASERES;
|
dx=BASESIZE/BASERES;
|
||||||
dy=-BASESIZE/BASERES;
|
dy=-BASESIZE/BASERES;
|
||||||
for(y=BASESIZE/2.0,j=0;j<BASERES;y+=dy,j++) {
|
for(y=BASESIZE/2.0,j=0;j<BASERES;y+=dy,j++) {
|
||||||
@@ -232,9 +300,14 @@ static void drawbase(void)
|
|||||||
|
|
||||||
static void drawteapot(void)
|
static void drawteapot(void)
|
||||||
{
|
{
|
||||||
|
static const GLfloat amb[4] = { 0.2, 0.2, 0.2, 1 };
|
||||||
|
static const GLfloat diff[4] = { 0.8, 0.3, 0.5, 1 };
|
||||||
static float xrot=0.0;
|
static float xrot=0.0;
|
||||||
static float zrot=0.0;
|
static float zrot=0.0;
|
||||||
|
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, amb);
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diff);
|
||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glRotatef(lightalpha,0.0,0.0,1.0);
|
glRotatef(lightalpha,0.0,0.0,1.0);
|
||||||
glMultMatrixf((GLfloat *)baseshadow);
|
glMultMatrixf((GLfloat *)baseshadow);
|
||||||
@@ -339,9 +412,7 @@ static void dojoy(void)
|
|||||||
|
|
||||||
static void draw(void)
|
static void draw(void)
|
||||||
{
|
{
|
||||||
static int count=0;
|
static char frbuf[80] = "";
|
||||||
static char frbuf[80];
|
|
||||||
float fr;
|
|
||||||
|
|
||||||
dojoy();
|
dojoy();
|
||||||
|
|
||||||
@@ -375,11 +446,6 @@ static void draw(void)
|
|||||||
drawlight2();
|
drawlight2();
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
if((count % FRAME)==0) {
|
|
||||||
fr=gettime();
|
|
||||||
sprintf(frbuf,"Frame rate: %f",FRAME/fr);
|
|
||||||
}
|
|
||||||
|
|
||||||
glDisable(GL_LIGHTING);
|
glDisable(GL_LIGHTING);
|
||||||
glDisable(GL_TEXTURE_2D);
|
glDisable(GL_TEXTURE_2D);
|
||||||
glDisable(GL_DEPTH_TEST);
|
glDisable(GL_DEPTH_TEST);
|
||||||
@@ -405,7 +471,18 @@ static void draw(void)
|
|||||||
|
|
||||||
glutSwapBuffers();
|
glutSwapBuffers();
|
||||||
|
|
||||||
count++;
|
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 inittextures(void)
|
static void inittextures(void)
|
||||||
@@ -430,11 +507,26 @@ static void inittextures(void)
|
|||||||
glGenTextures(1,&t2id);
|
glGenTextures(1,&t2id);
|
||||||
glBindTexture(GL_TEXTURE_2D,t2id);
|
glBindTexture(GL_TEXTURE_2D,t2id);
|
||||||
|
|
||||||
|
glPixelTransferf(GL_RED_SCALE, 0.75);
|
||||||
|
glPixelTransferf(GL_RED_BIAS, 0.25);
|
||||||
|
glPixelTransferf(GL_GREEN_SCALE, 0.75);
|
||||||
|
glPixelTransferf(GL_GREEN_BIAS, 0.25);
|
||||||
|
glPixelTransferf(GL_BLUE_SCALE, 0.75);
|
||||||
|
glPixelTransferf(GL_BLUE_BIAS, 0.25);
|
||||||
|
|
||||||
if (!LoadRGBMipmaps("../images/bw.rgb", GL_RGB)) {
|
if (!LoadRGBMipmaps("../images/bw.rgb", GL_RGB)) {
|
||||||
fprintf(stderr,"Error reading a texture.\n");
|
fprintf(stderr,"Error reading a texture.\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glPixelTransferf(GL_RED_SCALE, 1.0);
|
||||||
|
glPixelTransferf(GL_RED_BIAS, 0.0);
|
||||||
|
glPixelTransferf(GL_GREEN_SCALE, 1.0);
|
||||||
|
glPixelTransferf(GL_GREEN_BIAS, 0.0);
|
||||||
|
glPixelTransferf(GL_BLUE_SCALE, 1.0);
|
||||||
|
glPixelTransferf(GL_BLUE_BIAS, 0.0);
|
||||||
|
|
||||||
|
|
||||||
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
|
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_WRAP_T,GL_REPEAT);
|
||||||
|
|
||||||
@@ -446,17 +538,26 @@ static void inittextures(void)
|
|||||||
|
|
||||||
static void initlight(void)
|
static void initlight(void)
|
||||||
{
|
{
|
||||||
float lamb[4]={0.2,0.2,0.2,1.0};
|
float matamb[4] ={0.5, 0.5, 0.5, 1.0};
|
||||||
float lspec[4]={1.0,1.0,1.0,1.0};
|
float matdiff[4]={0.9, 0.2, 0.2, 1.0};
|
||||||
|
float matspec[4]={1.0,1.0,1.0,1.0};
|
||||||
|
|
||||||
|
float lamb[4] ={1.5, 1.5, 1.5, 1.0};
|
||||||
|
float ldiff[4]={1.0, 1.0, 1.0, 1.0};
|
||||||
|
float lspec[4]={1.0, 1.0, 1.0, 1.0};
|
||||||
|
|
||||||
glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,70.0);
|
glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,70.0);
|
||||||
glLightf(GL_LIGHT0,GL_SPOT_EXPONENT,20.0);
|
glLightf(GL_LIGHT0,GL_SPOT_EXPONENT,20.0);
|
||||||
glLightfv(GL_LIGHT0,GL_AMBIENT,lamb);
|
glLightfv(GL_LIGHT0,GL_AMBIENT,lamb);
|
||||||
|
glLightfv(GL_LIGHT0,GL_DIFFUSE,ldiff);
|
||||||
glLightfv(GL_LIGHT0,GL_SPECULAR,lspec);
|
glLightfv(GL_LIGHT0,GL_SPECULAR,lspec);
|
||||||
|
|
||||||
glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,20.0);
|
glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 15.0);
|
||||||
glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,lspec);
|
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, matdiff);
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, matspec);
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, matamb);
|
||||||
|
|
||||||
|
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lamb);
|
||||||
glEnable(GL_LIGHT0);
|
glEnable(GL_LIGHT0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,9 +38,10 @@ static int fullscreen = 1;
|
|||||||
#define WIDTH 640
|
#define WIDTH 640
|
||||||
#define HEIGHT 480
|
#define HEIGHT 480
|
||||||
|
|
||||||
#define TSCALE 4
|
static GLint T0 = 0;
|
||||||
|
static GLint Frames = 0;
|
||||||
|
|
||||||
#define FRAME 50
|
#define TSCALE 4
|
||||||
|
|
||||||
#define FOV 85
|
#define FOV 85
|
||||||
|
|
||||||
@@ -71,21 +72,6 @@ static float v = 15.0;
|
|||||||
static float alpha = 75.0;
|
static float alpha = 75.0;
|
||||||
static float beta = 90.0;
|
static float beta = 90.0;
|
||||||
|
|
||||||
static float
|
|
||||||
gettime(void)
|
|
||||||
{
|
|
||||||
static clock_t told = 0;
|
|
||||||
clock_t tnew, ris;
|
|
||||||
|
|
||||||
tnew = clock();
|
|
||||||
|
|
||||||
ris = tnew - told;
|
|
||||||
|
|
||||||
told = tnew;
|
|
||||||
|
|
||||||
return (ris / (float) CLOCKS_PER_SEC);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
calcposobs(void)
|
calcposobs(void)
|
||||||
{
|
{
|
||||||
@@ -95,6 +81,13 @@ calcposobs(void)
|
|||||||
dir[2] = cos(alpha * M_PI / 180.0) * sin(beta * 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);
|
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;
|
||||||
|
|
||||||
alpha1 = alpha + FOV / 2.0;
|
alpha1 = alpha + FOV / 2.0;
|
||||||
v1[0] = sin(alpha1 * M_PI / 180.0);
|
v1[0] = sin(alpha1 * M_PI / 180.0);
|
||||||
v1[1] = cos(alpha1 * M_PI / 180.0);
|
v1[1] = cos(alpha1 * M_PI / 180.0);
|
||||||
@@ -360,9 +353,7 @@ dojoy(void)
|
|||||||
static void
|
static void
|
||||||
drawscene(void)
|
drawscene(void)
|
||||||
{
|
{
|
||||||
static int count = 0;
|
static char frbuf[80] = "";
|
||||||
static char frbuf[80];
|
|
||||||
float fr;
|
|
||||||
|
|
||||||
dojoy();
|
dojoy();
|
||||||
|
|
||||||
@@ -391,11 +382,6 @@ drawscene(void)
|
|||||||
drawterrain();
|
drawterrain();
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
if ((count % FRAME) == 0) {
|
|
||||||
fr = gettime();
|
|
||||||
sprintf(frbuf, "Frame rate: %.3f", FRAME / fr);
|
|
||||||
}
|
|
||||||
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
glDisable(GL_TEXTURE_2D);
|
||||||
glDisable(GL_DEPTH_TEST);
|
glDisable(GL_DEPTH_TEST);
|
||||||
glDisable(GL_FOG);
|
glDisable(GL_FOG);
|
||||||
@@ -424,7 +410,17 @@ drawscene(void)
|
|||||||
|
|
||||||
glutSwapBuffers();
|
glutSwapBuffers();
|
||||||
|
|
||||||
count++;
|
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
|
static void
|
||||||
@@ -558,7 +554,7 @@ loadpic(void)
|
|||||||
GLenum gluerr;
|
GLenum gluerr;
|
||||||
|
|
||||||
if ((FilePic = fopen("terrain.dat", "r")) == NULL) {
|
if ((FilePic = fopen("terrain.dat", "r")) == NULL) {
|
||||||
fprintf(stderr, "Error loading Mnt.bin\n");
|
fprintf(stderr, "Error loading terrain.dat\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
fread(bufferter, 256 * 256, 1, FilePic);
|
fread(bufferter, 256 * 256, 1, FilePic);
|
||||||
|
|||||||
1
progs/demos/terrain.dat
Normal file
1
progs/demos/terrain.dat
Normal file
File diff suppressed because one or more lines are too long
@@ -1,331 +1,410 @@
|
|||||||
/* $Id: tessdemo.c,v 1.8 2000/07/11 14:11:58 brianp Exp $ */
|
/* $Id: tessdemo.c,v 1.11 2001/03/21 02:47:32 gareth Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A demo of the GLU polygon tesselation functions written by Bogdan Sikorski.
|
* A demo of the GLU polygon tesselation functions written by Bogdan Sikorski.
|
||||||
|
* Updated for GLU 1.3 tessellation by Gareth Hughes <gareth@valinux.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#define MAX_POINTS 200
|
#define MAX_POINTS 256
|
||||||
#define MAX_CONTOURS 50
|
#define MAX_CONTOURS 32
|
||||||
|
#define MAX_TRIANGLES 256
|
||||||
|
|
||||||
static int menu;
|
#ifndef GLCALLBACK
|
||||||
typedef enum
|
#ifdef CALLBACK
|
||||||
{ QUIT, TESSELATE, CLEAR }
|
#define GLCALLBACK CALLBACK
|
||||||
menu_entries;
|
#else
|
||||||
|
#define GLCALLBACK
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef enum
|
#ifdef GLU_VERSION_1_2
|
||||||
{ DEFINE, TESSELATED }
|
|
||||||
mode_type;
|
|
||||||
|
|
||||||
struct
|
typedef enum{ QUIT, TESSELATE, CLEAR } menu_entries;
|
||||||
|
typedef enum{ DEFINE, TESSELATED } mode_type;
|
||||||
|
|
||||||
|
static GLsizei width, height;
|
||||||
|
static GLuint contour_cnt;
|
||||||
|
static GLuint triangle_cnt;
|
||||||
|
|
||||||
|
static mode_type mode;
|
||||||
|
static int menu;
|
||||||
|
|
||||||
|
static GLuint list_start;
|
||||||
|
|
||||||
|
static GLfloat edge_color[3];
|
||||||
|
|
||||||
|
static struct {
|
||||||
|
GLfloat p[MAX_POINTS][2];
|
||||||
|
GLuint point_cnt;
|
||||||
|
} contours[MAX_CONTOURS];
|
||||||
|
|
||||||
|
static struct {
|
||||||
|
GLsizei no;
|
||||||
|
GLfloat p[3][2];
|
||||||
|
GLclampf color[3][3];
|
||||||
|
} triangles[MAX_TRIANGLES];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void GLCALLBACK error_callback( GLenum err )
|
||||||
{
|
{
|
||||||
GLint p[MAX_POINTS][2];
|
int len, i;
|
||||||
GLuint point_cnt;
|
char const *str;
|
||||||
}
|
|
||||||
contours[MAX_CONTOURS];
|
|
||||||
|
|
||||||
static GLuint contour_cnt;
|
glColor3f( 0.9, 0.9, 0.9 );
|
||||||
static GLsizei width, height;
|
glRasterPos2i( 5, 5 );
|
||||||
static mode_type mode;
|
|
||||||
|
|
||||||
struct
|
str = (const char *) gluErrorString( err );
|
||||||
{
|
len = strlen( str );
|
||||||
GLsizei no;
|
|
||||||
GLfloat color[3];
|
|
||||||
GLint p[3][2];
|
|
||||||
GLclampf p_color[3][3];
|
|
||||||
}
|
|
||||||
triangle;
|
|
||||||
|
|
||||||
|
for ( i = 0 ; i < len ; i++ ) {
|
||||||
static void GLCALLBACK
|
glutBitmapCharacter( GLUT_BITMAP_9_BY_15, str[i] );
|
||||||
my_error(GLenum err)
|
|
||||||
{
|
|
||||||
int len, i;
|
|
||||||
char const *str;
|
|
||||||
|
|
||||||
glColor3f(0.9, 0.9, 0.9);
|
|
||||||
glRasterPos2i(5, 5);
|
|
||||||
str = (const char *) gluErrorString(err);
|
|
||||||
len = strlen(str);
|
|
||||||
for (i = 0; i < len; i++)
|
|
||||||
glutBitmapCharacter(GLUT_BITMAP_9_BY_15, str[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void GLCALLBACK
|
|
||||||
begin_callback(GLenum mode)
|
|
||||||
{
|
|
||||||
triangle.no = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void GLCALLBACK
|
|
||||||
edge_callback(GLenum flag)
|
|
||||||
{
|
|
||||||
if (flag == GL_TRUE) {
|
|
||||||
triangle.color[0] = 1.0;
|
|
||||||
triangle.color[1] = 1.0;
|
|
||||||
triangle.color[2] = 0.5;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
triangle.color[0] = 1.0;
|
|
||||||
triangle.color[1] = 0.0;
|
|
||||||
triangle.color[2] = 0.0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void GLCALLBACK begin_callback( GLenum mode )
|
||||||
static void GLCALLBACK
|
|
||||||
end_callback()
|
|
||||||
{
|
{
|
||||||
glBegin(GL_LINES);
|
/* Allow multiple triangles to be output inside the begin/end pair. */
|
||||||
glColor3f(triangle.p_color[0][0], triangle.p_color[0][1],
|
triangle_cnt = 0;
|
||||||
triangle.p_color[0][2]);
|
triangles[triangle_cnt].no = 0;
|
||||||
glVertex2i(triangle.p[0][0], triangle.p[0][1]);
|
}
|
||||||
glVertex2i(triangle.p[1][0], triangle.p[1][1]);
|
|
||||||
glColor3f(triangle.p_color[1][0], triangle.p_color[1][1],
|
static void GLCALLBACK edge_callback( GLenum flag )
|
||||||
triangle.p_color[1][2]);
|
{
|
||||||
glVertex2i(triangle.p[1][0], triangle.p[1][1]);
|
/* Persist the edge flag across triangles. */
|
||||||
glVertex2i(triangle.p[2][0], triangle.p[2][1]);
|
if ( flag == GL_TRUE ) {
|
||||||
glColor3f(triangle.p_color[2][0], triangle.p_color[2][1],
|
edge_color[0] = 1.0;
|
||||||
triangle.p_color[2][2]);
|
edge_color[1] = 1.0;
|
||||||
glVertex2i(triangle.p[2][0], triangle.p[2][1]);
|
edge_color[2] = 0.5;
|
||||||
glVertex2i(triangle.p[0][0], triangle.p[0][1]);
|
} else {
|
||||||
|
edge_color[0] = 1.0;
|
||||||
|
edge_color[1] = 0.0;
|
||||||
|
edge_color[2] = 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void GLCALLBACK end_callback()
|
||||||
|
{
|
||||||
|
GLint i;
|
||||||
|
|
||||||
|
glBegin( GL_LINES );
|
||||||
|
|
||||||
|
/* Output the three edges of each triangle as lines colored
|
||||||
|
according to their edge flag. */
|
||||||
|
for ( i = 0 ; i < triangle_cnt ; i++ ) {
|
||||||
|
glColor3f( triangles[i].color[0][0],
|
||||||
|
triangles[i].color[0][1],
|
||||||
|
triangles[i].color[0][2] );
|
||||||
|
|
||||||
|
glVertex2f( triangles[i].p[0][0], triangles[i].p[0][1] );
|
||||||
|
glVertex2f( triangles[i].p[1][0], triangles[i].p[1][1] );
|
||||||
|
|
||||||
|
glColor3f( triangles[i].color[1][0],
|
||||||
|
triangles[i].color[1][1],
|
||||||
|
triangles[i].color[1][2] );
|
||||||
|
|
||||||
|
glVertex2f( triangles[i].p[1][0], triangles[i].p[1][1] );
|
||||||
|
glVertex2f( triangles[i].p[2][0], triangles[i].p[2][1] );
|
||||||
|
|
||||||
|
glColor3f( triangles[i].color[2][0],
|
||||||
|
triangles[i].color[2][1],
|
||||||
|
triangles[i].color[2][2] );
|
||||||
|
|
||||||
|
glVertex2f( triangles[i].p[2][0], triangles[i].p[2][1] );
|
||||||
|
glVertex2f( triangles[i].p[0][0], triangles[i].p[0][1] );
|
||||||
|
}
|
||||||
|
|
||||||
glEnd();
|
glEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void GLCALLBACK vertex_callback( void *data )
|
||||||
static void GLCALLBACK
|
|
||||||
vertex_callback(void *data)
|
|
||||||
{
|
{
|
||||||
GLsizei no;
|
GLsizei no;
|
||||||
GLint *p;
|
GLfloat *p;
|
||||||
|
|
||||||
p = (GLint *) data;
|
p = (GLfloat *) data;
|
||||||
no = triangle.no;
|
no = triangles[triangle_cnt].no;
|
||||||
triangle.p[no][0] = p[0];
|
|
||||||
triangle.p[no][1] = p[1];
|
triangles[triangle_cnt].p[no][0] = p[0];
|
||||||
triangle.p_color[no][0] = triangle.color[0];
|
triangles[triangle_cnt].p[no][1] = p[1];
|
||||||
triangle.p_color[no][1] = triangle.color[1];
|
|
||||||
triangle.p_color[no][2] = triangle.color[2];
|
triangles[triangle_cnt].color[no][0] = edge_color[0];
|
||||||
++(triangle.no);
|
triangles[triangle_cnt].color[no][1] = edge_color[1];
|
||||||
|
triangles[triangle_cnt].color[no][2] = edge_color[2];
|
||||||
|
|
||||||
|
/* After every three vertices, initialize the next triangle. */
|
||||||
|
if ( ++(triangles[triangle_cnt].no) == 3 ) {
|
||||||
|
triangle_cnt++;
|
||||||
|
triangles[triangle_cnt].no = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void GLCALLBACK combine_callback( GLdouble coords[3],
|
||||||
|
GLdouble *vertex_data[4],
|
||||||
|
GLfloat weight[4], void **data )
|
||||||
|
{
|
||||||
|
GLfloat *vertex;
|
||||||
|
|
||||||
|
vertex = (GLfloat *) malloc( 2 * sizeof(GLfloat) );
|
||||||
|
|
||||||
|
vertex[0] = (GLfloat) coords[0];
|
||||||
|
vertex[1] = (GLfloat) coords[1];
|
||||||
|
|
||||||
|
*data = vertex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void set_screen_wh( GLsizei w, GLsizei h )
|
||||||
set_screen_wh(GLsizei w, GLsizei h)
|
|
||||||
{
|
{
|
||||||
width = w;
|
width = w;
|
||||||
height = h;
|
height = h;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void tesse( void )
|
||||||
static void
|
|
||||||
tesse(void)
|
|
||||||
{
|
{
|
||||||
GLUtriangulatorObj *tobj;
|
GLUtesselator *tobj;
|
||||||
GLdouble data[3];
|
GLdouble data[3];
|
||||||
GLuint i, j, point_cnt;
|
GLuint i, j, point_cnt;
|
||||||
|
|
||||||
|
list_start = glGenLists( 2 );
|
||||||
|
|
||||||
tobj = gluNewTess();
|
tobj = gluNewTess();
|
||||||
if (tobj != NULL) {
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
if ( tobj != NULL ) {
|
||||||
glColor3f(0.7, 0.7, 0.0);
|
gluTessNormal( tobj, 0.0, 0.0, 1.0 );
|
||||||
gluTessCallback(tobj, GLU_BEGIN, glBegin);
|
gluTessCallback( tobj, GLU_TESS_BEGIN, glBegin );
|
||||||
gluTessCallback(tobj, GLU_END, glEnd);
|
gluTessCallback( tobj, GLU_TESS_VERTEX, glVertex2fv );
|
||||||
gluTessCallback(tobj, GLU_ERROR, my_error);
|
gluTessCallback( tobj, GLU_TESS_END, glEnd );
|
||||||
gluTessCallback(tobj, GLU_VERTEX, glVertex2iv);
|
gluTessCallback( tobj, GLU_TESS_ERROR, error_callback );
|
||||||
gluBeginPolygon(tobj);
|
gluTessCallback( tobj, GLU_TESS_COMBINE, combine_callback );
|
||||||
for (j = 0; j <= contour_cnt; j++) {
|
|
||||||
|
glNewList( list_start, GL_COMPILE );
|
||||||
|
gluBeginPolygon( tobj );
|
||||||
|
|
||||||
|
for ( j = 0 ; j <= contour_cnt ; j++ ) {
|
||||||
point_cnt = contours[j].point_cnt;
|
point_cnt = contours[j].point_cnt;
|
||||||
gluNextContour(tobj, GLU_UNKNOWN);
|
gluNextContour( tobj, GLU_UNKNOWN );
|
||||||
for (i = 0; i < point_cnt; i++) {
|
|
||||||
data[0] = (GLdouble) (contours[j].p[i][0]);
|
for ( i = 0 ; i < point_cnt ; i++ ) {
|
||||||
data[1] = (GLdouble) (contours[j].p[i][1]);
|
data[0] = (GLdouble)( contours[j].p[i][0] );
|
||||||
|
data[1] = (GLdouble)( contours[j].p[i][1] );
|
||||||
data[2] = 0.0;
|
data[2] = 0.0;
|
||||||
gluTessVertex(tobj, data, contours[j].p[i]);
|
gluTessVertex( tobj, data, contours[j].p[i] );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gluEndPolygon(tobj);
|
|
||||||
glLineWidth(2.0);
|
gluEndPolygon( tobj );
|
||||||
gluTessCallback(tobj, GLU_BEGIN, begin_callback);
|
glEndList();
|
||||||
gluTessCallback(tobj, GLU_END, end_callback);
|
|
||||||
gluTessCallback(tobj, GLU_VERTEX, vertex_callback);
|
gluTessCallback( tobj, GLU_TESS_BEGIN, begin_callback );
|
||||||
gluTessCallback(tobj, GLU_EDGE_FLAG, edge_callback);
|
gluTessCallback( tobj, GLU_TESS_VERTEX, vertex_callback );
|
||||||
gluBeginPolygon(tobj);
|
gluTessCallback( tobj, GLU_TESS_END, end_callback );
|
||||||
for (j = 0; j <= contour_cnt; j++) {
|
gluTessCallback( tobj, GLU_TESS_EDGE_FLAG, edge_callback );
|
||||||
|
|
||||||
|
glNewList( list_start + 1, GL_COMPILE );
|
||||||
|
gluBeginPolygon( tobj );
|
||||||
|
|
||||||
|
for ( j = 0 ; j <= contour_cnt ; j++ ) {
|
||||||
point_cnt = contours[j].point_cnt;
|
point_cnt = contours[j].point_cnt;
|
||||||
gluNextContour(tobj, GLU_UNKNOWN);
|
gluNextContour( tobj, GLU_UNKNOWN );
|
||||||
for (i = 0; i < point_cnt; i++) {
|
|
||||||
data[0] = (GLdouble) (contours[j].p[i][0]);
|
for ( i = 0 ; i < point_cnt ; i++ ) {
|
||||||
data[1] = (GLdouble) (contours[j].p[i][1]);
|
data[0] = (GLdouble)( contours[j].p[i][0] );
|
||||||
|
data[1] = (GLdouble)( contours[j].p[i][1] );
|
||||||
data[2] = 0.0;
|
data[2] = 0.0;
|
||||||
gluTessVertex(tobj, data, contours[j].p[i]);
|
gluTessVertex( tobj, data, contours[j].p[i] );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gluEndPolygon(tobj);
|
|
||||||
gluDeleteTess(tobj);
|
gluEndPolygon( tobj );
|
||||||
glutMouseFunc(NULL);
|
glEndList();
|
||||||
glColor3f(1.0, 1.0, 0.0);
|
|
||||||
glLineWidth(1.0);
|
gluDeleteTess( tobj );
|
||||||
|
|
||||||
|
glutMouseFunc( NULL );
|
||||||
mode = TESSELATED;
|
mode = TESSELATED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void left_down( int x1, int y1 )
|
||||||
static void
|
|
||||||
left_down(int x1, int y1)
|
|
||||||
{
|
{
|
||||||
GLint P[2];
|
GLfloat P[2];
|
||||||
GLuint point_cnt;
|
GLuint point_cnt;
|
||||||
|
|
||||||
/* translate GLUT into GL coordinates */
|
/* translate GLUT into GL coordinates */
|
||||||
|
|
||||||
P[0] = x1;
|
P[0] = x1;
|
||||||
P[1] = height - y1;
|
P[1] = height - y1;
|
||||||
|
|
||||||
point_cnt = contours[contour_cnt].point_cnt;
|
point_cnt = contours[contour_cnt].point_cnt;
|
||||||
|
|
||||||
contours[contour_cnt].p[point_cnt][0] = P[0];
|
contours[contour_cnt].p[point_cnt][0] = P[0];
|
||||||
contours[contour_cnt].p[point_cnt][1] = P[1];
|
contours[contour_cnt].p[point_cnt][1] = P[1];
|
||||||
glBegin(GL_LINES);
|
|
||||||
if (point_cnt) {
|
glBegin( GL_LINES );
|
||||||
glVertex2iv(contours[contour_cnt].p[point_cnt - 1]);
|
|
||||||
glVertex2iv(P);
|
if ( point_cnt ) {
|
||||||
}
|
glVertex2fv( contours[contour_cnt].p[point_cnt-1] );
|
||||||
else {
|
glVertex2fv( P );
|
||||||
glVertex2iv(P);
|
} else {
|
||||||
glVertex2iv(P);
|
glVertex2fv( P );
|
||||||
|
glVertex2fv( P );
|
||||||
}
|
}
|
||||||
|
|
||||||
glEnd();
|
glEnd();
|
||||||
glFinish();
|
glFinish();
|
||||||
++(contours[contour_cnt].point_cnt);
|
|
||||||
|
contours[contour_cnt].point_cnt++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void middle_down( int x1, int y1 )
|
||||||
static void
|
|
||||||
middle_down(int x1, int y1)
|
|
||||||
{
|
{
|
||||||
GLuint point_cnt;
|
GLuint point_cnt;
|
||||||
|
(void) x1;
|
||||||
|
(void) y1;
|
||||||
|
|
||||||
point_cnt = contours[contour_cnt].point_cnt;
|
point_cnt = contours[contour_cnt].point_cnt;
|
||||||
if (point_cnt > 2) {
|
|
||||||
glBegin(GL_LINES);
|
if ( point_cnt > 2 ) {
|
||||||
glVertex2iv(contours[contour_cnt].p[0]);
|
glBegin( GL_LINES );
|
||||||
glVertex2iv(contours[contour_cnt].p[point_cnt - 1]);
|
|
||||||
|
glVertex2fv( contours[contour_cnt].p[0] );
|
||||||
|
glVertex2fv( contours[contour_cnt].p[point_cnt-1] );
|
||||||
|
|
||||||
contours[contour_cnt].p[point_cnt][0] = -1;
|
contours[contour_cnt].p[point_cnt][0] = -1;
|
||||||
|
|
||||||
glEnd();
|
glEnd();
|
||||||
glFinish();
|
glFinish();
|
||||||
|
|
||||||
contour_cnt++;
|
contour_cnt++;
|
||||||
contours[contour_cnt].point_cnt = 0;
|
contours[contour_cnt].point_cnt = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void mouse_clicked( int button, int state, int x, int y )
|
||||||
static void
|
|
||||||
mouse_clicked(int button, int state, int x, int y)
|
|
||||||
{
|
{
|
||||||
x -= x % 10;
|
x -= x%10;
|
||||||
y -= y % 10;
|
y -= y%10;
|
||||||
switch (button) {
|
|
||||||
|
switch ( button ) {
|
||||||
case GLUT_LEFT_BUTTON:
|
case GLUT_LEFT_BUTTON:
|
||||||
if (state == GLUT_DOWN)
|
if ( state == GLUT_DOWN ) {
|
||||||
left_down(x, y);
|
left_down( x, y );
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case GLUT_MIDDLE_BUTTON:
|
case GLUT_MIDDLE_BUTTON:
|
||||||
if (state == GLUT_DOWN)
|
if ( state == GLUT_DOWN ) {
|
||||||
middle_down(x, y);
|
middle_down( x, y );
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void display( void )
|
||||||
static void
|
|
||||||
display(void)
|
|
||||||
{
|
{
|
||||||
GLuint i, j;
|
GLuint i,j;
|
||||||
GLuint point_cnt;
|
GLuint point_cnt;
|
||||||
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
glClear( GL_COLOR_BUFFER_BIT );
|
||||||
switch (mode) {
|
|
||||||
|
switch ( mode ) {
|
||||||
case DEFINE:
|
case DEFINE:
|
||||||
/* draw grid */
|
/* draw grid */
|
||||||
glColor3f(0.6, 0.5, 0.5);
|
glColor3f( 0.6, 0.5, 0.5 );
|
||||||
glBegin(GL_LINES);
|
|
||||||
for (i = 0; i < width; i += 10)
|
glBegin( GL_LINES );
|
||||||
for (j = 0; j < height; j += 10) {
|
|
||||||
glVertex2i(0, j);
|
for ( i = 0 ; i < width ; i += 10 ) {
|
||||||
glVertex2i(width, j);
|
for ( j = 0 ; j < height ; j += 10 ) {
|
||||||
glVertex2i(i, height);
|
glVertex2i( 0, j );
|
||||||
glVertex2i(i, 0);
|
glVertex2i( width, j );
|
||||||
|
glVertex2i( i, height );
|
||||||
|
glVertex2i( i, 0 );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
glEnd();
|
glEnd();
|
||||||
glColor3f(1.0, 1.0, 0.0);
|
|
||||||
for (i = 0; i <= contour_cnt; i++) {
|
glColor3f( 1.0, 1.0, 0.0 );
|
||||||
|
|
||||||
|
for ( i = 0 ; i <= contour_cnt ; i++ ) {
|
||||||
point_cnt = contours[i].point_cnt;
|
point_cnt = contours[i].point_cnt;
|
||||||
glBegin(GL_LINES);
|
|
||||||
switch (point_cnt) {
|
glBegin( GL_LINES );
|
||||||
|
|
||||||
|
switch ( point_cnt ) {
|
||||||
case 0:
|
case 0:
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
glVertex2iv(contours[i].p[0]);
|
glVertex2fv( contours[i].p[0] );
|
||||||
glVertex2iv(contours[i].p[0]);
|
glVertex2fv( contours[i].p[0] );
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
glVertex2iv(contours[i].p[0]);
|
glVertex2fv( contours[i].p[0] );
|
||||||
glVertex2iv(contours[i].p[1]);
|
glVertex2fv( contours[i].p[1] );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
--point_cnt;
|
--point_cnt;
|
||||||
for (j = 0; j < point_cnt; j++) {
|
for ( j = 0 ; j < point_cnt ; j++ ) {
|
||||||
glVertex2iv(contours[i].p[j]);
|
glVertex2fv( contours[i].p[j] );
|
||||||
glVertex2iv(contours[i].p[j + 1]);
|
glVertex2fv( contours[i].p[j+1] );
|
||||||
}
|
}
|
||||||
if (contours[i].p[j + 1][0] == -1) {
|
if ( contours[i].p[j+1][0] == -1 ) {
|
||||||
glVertex2iv(contours[i].p[0]);
|
glVertex2fv( contours[i].p[0] );
|
||||||
glVertex2iv(contours[i].p[j]);
|
glVertex2fv( contours[i].p[j] );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
glEnd();
|
glEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
glFinish();
|
glFinish();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TESSELATED:
|
case TESSELATED:
|
||||||
/* draw lines */
|
/* draw triangles */
|
||||||
tesse();
|
glColor3f( 0.7, 0.7, 0.0 );
|
||||||
|
glCallList( list_start );
|
||||||
|
|
||||||
|
glLineWidth( 2.0 );
|
||||||
|
glCallList( list_start + 1 );
|
||||||
|
glLineWidth( 1.0 );
|
||||||
|
|
||||||
|
glFlush();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
glColor3f(1.0, 1.0, 0.0);
|
glColor3f( 1.0, 1.0, 0.0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void clear( void )
|
||||||
static void
|
|
||||||
clear(void)
|
|
||||||
{
|
{
|
||||||
contour_cnt = 0;
|
contour_cnt = 0;
|
||||||
contours[0].point_cnt = 0;
|
contours[0].point_cnt = 0;
|
||||||
glutMouseFunc(mouse_clicked);
|
triangle_cnt = 0;
|
||||||
|
|
||||||
|
glutMouseFunc( mouse_clicked );
|
||||||
|
|
||||||
mode = DEFINE;
|
mode = DEFINE;
|
||||||
display();
|
|
||||||
|
glDeleteLists( list_start, 2 );
|
||||||
|
list_start = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void quit( void )
|
||||||
static void
|
|
||||||
quit(void)
|
|
||||||
{
|
{
|
||||||
exit(0);
|
exit( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void menu_selected( int entry )
|
||||||
static void
|
|
||||||
menu_selected(int entry)
|
|
||||||
{
|
{
|
||||||
switch (entry) {
|
switch ( entry ) {
|
||||||
case CLEAR:
|
case CLEAR:
|
||||||
clear();
|
clear();
|
||||||
break;
|
break;
|
||||||
@@ -336,87 +415,107 @@ menu_selected(int entry)
|
|||||||
quit();
|
quit();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glutPostRedisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void key_pressed( unsigned char key, int x, int y )
|
||||||
static void
|
|
||||||
key_pressed(unsigned char key, int x, int y)
|
|
||||||
{
|
{
|
||||||
switch (key) {
|
(void) x;
|
||||||
case 't':
|
(void) y;
|
||||||
case 'T':
|
|
||||||
tesse();
|
switch ( key ) {
|
||||||
glFinish();
|
|
||||||
break;
|
|
||||||
case 'q':
|
|
||||||
case 'Q':
|
|
||||||
quit();
|
|
||||||
break;
|
|
||||||
case 'c':
|
case 'c':
|
||||||
case 'C':
|
case 'C':
|
||||||
clear();
|
clear();
|
||||||
break;
|
break;
|
||||||
|
case 't':
|
||||||
|
case 'T':
|
||||||
|
tesse();
|
||||||
|
break;
|
||||||
|
case 27:
|
||||||
|
case 'q':
|
||||||
|
case 'Q':
|
||||||
|
quit();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glutPostRedisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void myinit( void )
|
||||||
static void
|
|
||||||
myinit(void)
|
|
||||||
{
|
{
|
||||||
/* clear background to gray */
|
/* clear background to gray */
|
||||||
glClearColor(0.4, 0.4, 0.4, 0.0);
|
glClearColor( 0.4, 0.4, 0.4, 0.0 );
|
||||||
glShadeModel(GL_FLAT);
|
glShadeModel( GL_FLAT );
|
||||||
|
glPolygonMode( GL_FRONT, GL_FILL );
|
||||||
|
|
||||||
|
menu = glutCreateMenu( menu_selected );
|
||||||
|
|
||||||
|
glutAddMenuEntry( "clear", CLEAR );
|
||||||
|
glutAddMenuEntry( "tesselate", TESSELATE );
|
||||||
|
glutAddMenuEntry( "quit", QUIT );
|
||||||
|
|
||||||
|
glutAttachMenu( GLUT_RIGHT_BUTTON );
|
||||||
|
|
||||||
|
glutMouseFunc( mouse_clicked );
|
||||||
|
glutKeyboardFunc( key_pressed );
|
||||||
|
|
||||||
menu = glutCreateMenu(menu_selected);
|
|
||||||
glutAddMenuEntry("clear", CLEAR);
|
|
||||||
glutAddMenuEntry("tesselate", TESSELATE);
|
|
||||||
glutAddMenuEntry("quit", QUIT);
|
|
||||||
glutAttachMenu(GLUT_RIGHT_BUTTON);
|
|
||||||
glutMouseFunc(mouse_clicked);
|
|
||||||
glutKeyboardFunc(key_pressed);
|
|
||||||
contour_cnt = 0;
|
contour_cnt = 0;
|
||||||
glPolygonMode(GL_FRONT, GL_FILL);
|
|
||||||
mode = DEFINE;
|
mode = DEFINE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void reshape( GLsizei w, GLsizei h )
|
||||||
static void
|
|
||||||
reshape(GLsizei w, GLsizei h)
|
|
||||||
{
|
{
|
||||||
glViewport(0, 0, w, h);
|
glViewport( 0, 0, w, h );
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
|
glMatrixMode( GL_PROJECTION );
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
glOrtho(0.0, (GLdouble) w, 0.0, (GLdouble) h, -1.0, 1.0);
|
glOrtho( 0.0, (GLdouble)w, 0.0, (GLdouble)h, -1.0, 1.0 );
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
|
glMatrixMode( GL_MODELVIEW );
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
set_screen_wh(w, h);
|
|
||||||
|
set_screen_wh( w, h );
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
static void usage( void )
|
||||||
|
{
|
||||||
|
printf( "Use left mouse button to place vertices.\n" );
|
||||||
|
printf( "Press middle mouse button when done.\n" );
|
||||||
|
printf( "Select tesselate from the pop-up menu.\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
int main( int argc, char **argv )
|
||||||
usage(void)
|
|
||||||
{
|
{
|
||||||
printf("Use left mouse button to place vertices.\n");
|
const char *version = (const char *) gluGetString( GLU_VERSION );
|
||||||
printf("Press middle mouse button when done.\n");
|
printf( "GLU version string: %s\n", version );
|
||||||
printf("Select tesselate from the pop-up menu.\n");
|
if ( strstr( version, "1.0" ) || strstr( version, "1.1" ) ) {
|
||||||
}
|
fprintf( stderr, "Sorry, this demo reqiures GLU 1.2 or later.\n" );
|
||||||
|
exit( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Main Loop
|
|
||||||
* Open window with initial window size, title bar,
|
|
||||||
* RGBA display mode, and handle input events.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
usage();
|
usage();
|
||||||
glutInit(&argc, argv);
|
|
||||||
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
|
glutInit( &argc, argv );
|
||||||
glutInitWindowSize(400, 400);
|
glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB );
|
||||||
glutCreateWindow(argv[0]);
|
glutInitWindowSize( 400, 400 );
|
||||||
|
glutCreateWindow( argv[0] );
|
||||||
|
|
||||||
|
/* GH: Bit of a hack...
|
||||||
|
*/
|
||||||
|
#ifdef GLU_VERSION_1_2
|
||||||
myinit();
|
myinit();
|
||||||
glutDisplayFunc(display);
|
|
||||||
glutReshapeFunc(reshape);
|
glutDisplayFunc( display );
|
||||||
|
glutReshapeFunc( reshape );
|
||||||
|
|
||||||
glutMainLoop();
|
glutMainLoop();
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: texcyl.c,v 1.2 1999/10/21 16:39:06 brianp Exp $ */
|
/* $Id: texcyl.c,v 1.5 2001/03/27 17:35:26 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Textured cylinder demo: lighting, texturing, reflection mapping.
|
* Textured cylinder demo: lighting, texturing, reflection mapping.
|
||||||
@@ -12,6 +12,38 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: texcyl.c,v $
|
* $Log: texcyl.c,v $
|
||||||
|
* Revision 1.5 2001/03/27 17:35:26 brianp
|
||||||
|
* set initial window pos
|
||||||
|
*
|
||||||
|
* Revision 1.4 2000/12/24 22:53:54 pesco
|
||||||
|
* * demos/Makefile.am (INCLUDES): Added -I$(top_srcdir)/util.
|
||||||
|
* * demos/Makefile.X11, demos/Makefile.BeOS-R4, demos/Makefile.cygnus:
|
||||||
|
* Essentially the same.
|
||||||
|
* Program files updated to include "readtex.c", not "../util/readtex.c".
|
||||||
|
* * demos/reflect.c: Likewise for "showbuffer.c".
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* * Makefile.am (EXTRA_DIST): Added top-level regular files.
|
||||||
|
*
|
||||||
|
* * include/GL/Makefile.am (INC_X11): Added glxext.h.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* * src/GGI/include/ggi/mesa/Makefile.am (EXTRA_HEADERS): Include
|
||||||
|
* Mesa GGI headers in dist even if HAVE_GGI is not given.
|
||||||
|
*
|
||||||
|
* * configure.in: Look for GLUT and demo source dirs in $srcdir.
|
||||||
|
*
|
||||||
|
* * src/swrast/Makefile.am (libMesaSwrast_la_SOURCES): Set to *.[ch].
|
||||||
|
* More source list updates in various Makefile.am's.
|
||||||
|
*
|
||||||
|
* * Makefile.am (dist-hook): Remove CVS directory from distribution.
|
||||||
|
* (DIST_SUBDIRS): List all possible subdirs here.
|
||||||
|
* (SUBDIRS): Only list subdirs selected for build again.
|
||||||
|
* The above two applied to all subdir Makefile.am's also.
|
||||||
|
*
|
||||||
|
* Revision 1.3 2000/09/29 23:09:39 brianp
|
||||||
|
* added fps output
|
||||||
|
*
|
||||||
* Revision 1.2 1999/10/21 16:39:06 brianp
|
* Revision 1.2 1999/10/21 16:39:06 brianp
|
||||||
* added -info command line option
|
* added -info command line option
|
||||||
*
|
*
|
||||||
@@ -38,7 +70,7 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
|
|
||||||
#include "../util/readtex.c" /* I know, this is a hack. */
|
#include "readtex.c" /* I know, this is a hack. */
|
||||||
|
|
||||||
#define TEXTURE_FILE "../images/reflect.rgb"
|
#define TEXTURE_FILE "../images/reflect.rgb"
|
||||||
|
|
||||||
@@ -56,6 +88,10 @@ static GLboolean Animate = GL_TRUE;
|
|||||||
static GLfloat Xrot = 0.0, Yrot = 0.0, Zrot = 0.0;
|
static GLfloat Xrot = 0.0, Yrot = 0.0, Zrot = 0.0;
|
||||||
static GLfloat DXrot = 1.0, DYrot = 2.5;
|
static GLfloat DXrot = 1.0, DYrot = 2.5;
|
||||||
|
|
||||||
|
/* performance info */
|
||||||
|
static GLint T0 = 0;
|
||||||
|
static GLint Frames = 0;
|
||||||
|
|
||||||
|
|
||||||
static void Idle( void )
|
static void Idle( void )
|
||||||
{
|
{
|
||||||
@@ -81,6 +117,18 @@ static void Display( void )
|
|||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
glutSwapBuffers();
|
glutSwapBuffers();
|
||||||
|
|
||||||
|
if (Animate) {
|
||||||
|
GLint t = glutGet(GLUT_ELAPSED_TIME);
|
||||||
|
Frames++;
|
||||||
|
if (t - T0 >= 5000) {
|
||||||
|
GLfloat seconds = (t - T0) / 1000.0;
|
||||||
|
GLfloat fps = Frames / seconds;
|
||||||
|
printf("%d frames in %g seconds = %g FPS\n", Frames, seconds, fps);
|
||||||
|
T0 = t;
|
||||||
|
Frames = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -248,6 +296,7 @@ int main( int argc, char *argv[] )
|
|||||||
{
|
{
|
||||||
glutInit( &argc, argv );
|
glutInit( &argc, argv );
|
||||||
glutInitWindowSize( 400, 400 );
|
glutInitWindowSize( 400, 400 );
|
||||||
|
glutInitWindowPosition( 0, 0 );
|
||||||
|
|
||||||
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
|
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: texdown.c,v 1.3 2000/03/29 18:02:52 brianp Exp $ */
|
/* $Id: texdown.c,v 1.4 2001/02/07 03:04:58 gareth Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1999 Brian Paul All Rights Reserved.
|
* Copyright (C) 1999 Brian Paul All Rights Reserved.
|
||||||
@@ -148,6 +148,10 @@ MeasureDownloadRate(void)
|
|||||||
glPixelTransferf(GL_BLUE_BIAS, 0.0);
|
glPixelTransferf(GL_BLUE_BIAS, 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
|
||||||
count = 0;
|
count = 0;
|
||||||
t0 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
t0 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
||||||
do {
|
do {
|
||||||
@@ -163,24 +167,20 @@ MeasureDownloadRate(void)
|
|||||||
FormatTable[Format].Type, texImage);
|
FormatTable[Format].Type, texImage);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count == 0) {
|
/* draw a tiny polygon to force texture into texram */
|
||||||
/* draw a tiny polygon to force texture into texram */
|
glBegin(GL_TRIANGLES);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
glTexCoord2f(0, 0); glVertex2f(1, 1);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
glTexCoord2f(1, 0); glVertex2f(3, 1);
|
||||||
glEnable(GL_TEXTURE_2D);
|
glTexCoord2f(0.5, 1); glVertex2f(2, 3);
|
||||||
glBegin(GL_TRIANGLES);
|
glEnd();
|
||||||
glTexCoord2f(0, 0); glVertex2f(1, 1);
|
|
||||||
glTexCoord2f(1, 0); glVertex2f(3, 1);
|
|
||||||
glTexCoord2f(0.5, 1); glVertex2f(2, 3);
|
|
||||||
glEnd();
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
|
||||||
}
|
|
||||||
|
|
||||||
t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
||||||
time = t1 - t0;
|
time = t1 - t0;
|
||||||
count++;
|
count++;
|
||||||
} while (time < 3.0);
|
} while (time < 3.0);
|
||||||
|
|
||||||
|
glDisable(GL_TEXTURE_2D);
|
||||||
|
|
||||||
printf("w*h=%d count=%d time=%f\n", w*h, count, time);
|
printf("w*h=%d count=%d time=%f\n", w*h, count, time);
|
||||||
DownloadRate = w * h * count / time;
|
DownloadRate = w * h * count / time;
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ GLfloat *labelInfoColor = labelColor0;
|
|||||||
GLfloat labelLevelColor0[4] = { 0.8, 0.8, 0.1, 1.0 };
|
GLfloat labelLevelColor0[4] = { 0.8, 0.8, 0.1, 1.0 };
|
||||||
GLfloat labelLevelColor1[4] = { 0.0, 0.0, 0.0, 1.0 };
|
GLfloat labelLevelColor1[4] = { 0.0, 0.0, 0.0, 1.0 };
|
||||||
|
|
||||||
GLboolean doubleBuffered = GL_FALSE;
|
GLboolean doubleBuffered = GL_TRUE;
|
||||||
GLboolean drawBackground = GL_FALSE;
|
GLboolean drawBackground = GL_FALSE;
|
||||||
GLboolean drawBlended = GL_TRUE;
|
GLboolean drawBlended = GL_TRUE;
|
||||||
GLboolean drawSmooth = GL_FALSE;
|
GLboolean drawSmooth = GL_FALSE;
|
||||||
@@ -141,7 +141,7 @@ struct formatInfo rgbFormats[] =
|
|||||||
#define NUM_RGBA_FORMATS (sizeof(rgbaFormats) / sizeof(rgbaFormats[0]))
|
#define NUM_RGBA_FORMATS (sizeof(rgbaFormats) / sizeof(rgbaFormats[0]))
|
||||||
struct formatInfo rgbaFormats[] =
|
struct formatInfo rgbaFormats[] =
|
||||||
{
|
{
|
||||||
{ GL_RGBA, 4, "RGBA" },
|
{ GL_RGBA, GL_RGBA, "RGBA" },
|
||||||
{ GL_RGBA, GL_RGBA2, "RGBA2" },
|
{ GL_RGBA, GL_RGBA2, "RGBA2" },
|
||||||
{ GL_RGBA, GL_RGBA4, "RGBA4" },
|
{ GL_RGBA, GL_RGBA4, "RGBA4" },
|
||||||
{ GL_RGBA, GL_RGB5_A1, "RGB5_A1" },
|
{ GL_RGBA, GL_RGB5_A1, "RGB5_A1" },
|
||||||
@@ -208,7 +208,8 @@ static void checkErrors( void )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void drawString( char *string, GLfloat x, GLfloat y, GLfloat color[4] )
|
static void drawString( const char *string, GLfloat x, GLfloat y,
|
||||||
|
const GLfloat color[4] )
|
||||||
{
|
{
|
||||||
glColor4fv( color );
|
glColor4fv( color );
|
||||||
glRasterPos2f( x, y );
|
glRasterPos2f( x, y );
|
||||||
@@ -219,8 +220,9 @@ static void drawString( char *string, GLfloat x, GLfloat y, GLfloat color[4] )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void drawStringOutline( char *string, GLfloat x, GLfloat y,
|
static void drawStringOutline( const char *string, GLfloat x, GLfloat y,
|
||||||
GLfloat color[4], GLfloat outline[4] )
|
const GLfloat color[4],
|
||||||
|
const GLfloat outline[4] )
|
||||||
{
|
{
|
||||||
drawString( string, x - 1, y, outline );
|
drawString( string, x - 1, y, outline );
|
||||||
drawString( string, x + 1, y, outline );
|
drawString( string, x + 1, y, outline );
|
||||||
@@ -335,7 +337,8 @@ reshape( int w, int h )
|
|||||||
/* No need to call glViewPort here since "draw" calls it! */
|
/* No need to call glViewPort here since "draw" calls it! */
|
||||||
}
|
}
|
||||||
|
|
||||||
static void loadTexture( int width, int height, struct formatInfo *format )
|
static void loadTexture( int width, int height,
|
||||||
|
const struct formatInfo *format )
|
||||||
{
|
{
|
||||||
int luminanceSize = 0;
|
int luminanceSize = 0;
|
||||||
int alphaSize = 0;
|
int alphaSize = 0;
|
||||||
@@ -497,7 +500,8 @@ static void loadTexture( int width, int height, struct formatInfo *format )
|
|||||||
free( texImage );
|
free( texImage );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void drawCheck( int w, int h, GLfloat lightCheck[4], GLfloat darkCheck[4] )
|
static void drawCheck( int w, int h, const GLfloat lightCheck[4],
|
||||||
|
const GLfloat darkCheck[4] )
|
||||||
{
|
{
|
||||||
float dw = 2.0 / w;
|
float dw = 2.0 / w;
|
||||||
float dh = 2.0 / h;
|
float dh = 2.0 / h;
|
||||||
@@ -526,8 +530,35 @@ static void drawCheck( int w, int h, GLfloat lightCheck[4], GLfloat darkCheck[4]
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *lookupFormat( GLint format )
|
||||||
|
{
|
||||||
|
switch ( format ) {
|
||||||
|
case GL_RGBA:
|
||||||
|
return "GL_RGBA";
|
||||||
|
case GL_RGB:
|
||||||
|
return "GL_RGB";
|
||||||
|
case GL_ALPHA:
|
||||||
|
return "GL_ALPHA";
|
||||||
|
case GL_LUMINANCE:
|
||||||
|
return "GL_LUMINANCE";
|
||||||
|
case GL_LUMINANCE_ALPHA:
|
||||||
|
return "GL_LUMINANCE_ALPHA";
|
||||||
|
case GL_INTENSITY:
|
||||||
|
return "GL_INTENSITY";
|
||||||
|
case GL_COLOR_INDEX:
|
||||||
|
return "GL_COLOR_INDEX";
|
||||||
|
case GL_BGRA:
|
||||||
|
return "GL_BGRA";
|
||||||
|
case GL_BGR:
|
||||||
|
return "GL_BGR";
|
||||||
|
default:
|
||||||
|
return "unknown format";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void drawSample( int x, int y, int w, int h,
|
static void drawSample( int x, int y, int w, int h,
|
||||||
struct formatInfo *format, struct envModeInfo *envMode )
|
const struct formatInfo *format,
|
||||||
|
const struct envModeInfo *envMode )
|
||||||
{
|
{
|
||||||
glViewport( x, y, w, h );
|
glViewport( x, y, w, h );
|
||||||
glScissor( x, y, w, h );
|
glScissor( x, y, w, h );
|
||||||
@@ -543,8 +574,8 @@ static void drawSample( int x, int y, int w, int h,
|
|||||||
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, envMode->mode );
|
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, envMode->mode );
|
||||||
glTexEnvfv( GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, envColors[envColor] );
|
glTexEnvfv( GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, envColors[envColor] );
|
||||||
|
|
||||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
|
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
|
||||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
|
||||||
|
|
||||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP );
|
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP );
|
||||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP );
|
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP );
|
||||||
@@ -561,24 +592,32 @@ static void drawSample( int x, int y, int w, int h,
|
|||||||
if ( drawSmooth ) {
|
if ( drawSmooth ) {
|
||||||
glShadeModel( GL_SMOOTH );
|
glShadeModel( GL_SMOOTH );
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
glShadeModel( GL_FLAT );
|
||||||
|
glColor4f(1, 1, 1, 1);
|
||||||
|
}
|
||||||
if ( drawTextured ) {
|
if ( drawTextured ) {
|
||||||
glEnable( GL_TEXTURE_2D );
|
glEnable( GL_TEXTURE_2D );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* if (drawSmooth) then draw quad which goes from purple at the
|
||||||
|
* bottom (100% alpha) to green at the top (50% alpha).
|
||||||
|
*/
|
||||||
glBegin( GL_QUADS );
|
glBegin( GL_QUADS );
|
||||||
glColor4f( 1.0, 0.0, 0.0, 1.0 );
|
if ( drawSmooth ) glColor4f( 1.0, 0.0, 1.0, 1.0 );
|
||||||
glTexCoord2f( 0.0, 0.0 );
|
glTexCoord2f( 0.0, 0.0 );
|
||||||
glVertex2f( -0.8, -0.8 );
|
glVertex2f( -0.8, -0.8 );
|
||||||
|
|
||||||
glColor4f( 0.0, 1.0, 0.0, 1.0 );
|
if ( drawSmooth ) glColor4f( 1.0, 0.0, 1.0, 1.0 );
|
||||||
glTexCoord2f( 1.0, 0.0 );
|
glTexCoord2f( 1.0, 0.0 );
|
||||||
glVertex2f( 0.8, -0.8 );
|
glVertex2f( 0.8, -0.8 );
|
||||||
|
|
||||||
glColor4f( 0.0, 0.0, 1.0, 1.0 );
|
if ( drawSmooth ) glColor4f( 0.0, 1.0, 0.0, 0.5 );
|
||||||
glTexCoord2f( 1.0, 1.0 );
|
glTexCoord2f( 1.0, 1.0 );
|
||||||
glVertex2f( 0.8, 0.8 );
|
glVertex2f( 0.8, 0.8 );
|
||||||
|
|
||||||
glColor4f( 1.0, 1.0, 1.0, 1.0 );
|
if ( drawSmooth ) glColor4f( 0.0, 1.0, 0.0, 0.5 );
|
||||||
glTexCoord2f( 0.0, 1.0 );
|
glTexCoord2f( 0.0, 1.0 );
|
||||||
glVertex2f( -0.8, 0.8 );
|
glVertex2f( -0.8, 0.8 );
|
||||||
glEnd();
|
glEnd();
|
||||||
@@ -587,8 +626,19 @@ static void drawSample( int x, int y, int w, int h,
|
|||||||
glShadeModel( GL_FLAT );
|
glShadeModel( GL_FLAT );
|
||||||
glDisable( GL_TEXTURE_2D );
|
glDisable( GL_TEXTURE_2D );
|
||||||
|
|
||||||
if ( displayLevelInfo ) {
|
if ( envMode->mode == GL_DECAL &&
|
||||||
GLint width, height, border, components;
|
(format->baseFormat == GL_ALPHA ||
|
||||||
|
format->baseFormat == GL_LUMINANCE ||
|
||||||
|
format->baseFormat == GL_LUMINANCE_ALPHA ||
|
||||||
|
format->baseFormat == GL_INTENSITY)) {
|
||||||
|
/* undefined format/mode combination */
|
||||||
|
begin2D( w, h );
|
||||||
|
drawStringOutline( "UNDEFINED MODE", 15, h / 2,
|
||||||
|
labelLevelColor0, labelLevelColor1 );
|
||||||
|
end2D();
|
||||||
|
}
|
||||||
|
else if ( displayLevelInfo ) {
|
||||||
|
GLint width, height, border, format;
|
||||||
GLint redSize, greenSize, blueSize, alphaSize;
|
GLint redSize, greenSize, blueSize, alphaSize;
|
||||||
GLint luminanceSize, intensitySize;
|
GLint luminanceSize, intensitySize;
|
||||||
char buf[255];
|
char buf[255];
|
||||||
@@ -596,7 +646,7 @@ static void drawSample( int x, int y, int w, int h,
|
|||||||
glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width );
|
glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width );
|
||||||
glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &height );
|
glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &height );
|
||||||
glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_BORDER, &border );
|
glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_BORDER, &border );
|
||||||
glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_COMPONENTS, &components );
|
glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT, &format );
|
||||||
glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_RED_SIZE, &redSize );
|
glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_RED_SIZE, &redSize );
|
||||||
glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_GREEN_SIZE, &greenSize );
|
glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_GREEN_SIZE, &greenSize );
|
||||||
glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_BLUE_SIZE, &blueSize );
|
glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_BLUE_SIZE, &blueSize );
|
||||||
@@ -611,16 +661,19 @@ static void drawSample( int x, int y, int w, int h,
|
|||||||
sprintf( buf, "border: %d", border );
|
sprintf( buf, "border: %d", border );
|
||||||
drawStringOutline( buf, 15, h / 2 + 10, labelLevelColor0, labelLevelColor1 );
|
drawStringOutline( buf, 15, h / 2 + 10, labelLevelColor0, labelLevelColor1 );
|
||||||
|
|
||||||
sprintf( buf, "components: 0x%04X", components );
|
sprintf( buf, "internal format:" );
|
||||||
drawStringOutline( buf, 15, h / 2, labelLevelColor0, labelLevelColor1 );
|
drawStringOutline( buf, 15, h / 2, labelLevelColor0, labelLevelColor1 );
|
||||||
|
|
||||||
sprintf( buf, "sizes:" );
|
sprintf( buf, " %s", lookupFormat( format ) );
|
||||||
drawStringOutline( buf, 15, h / 2 - 10, labelLevelColor0, labelLevelColor1 );
|
drawStringOutline( buf, 15, h / 2 - 10, labelLevelColor0, labelLevelColor1 );
|
||||||
|
|
||||||
|
sprintf( buf, "sizes:" );
|
||||||
|
drawStringOutline( buf, 15, h / 2 - 20, labelLevelColor0, labelLevelColor1 );
|
||||||
|
|
||||||
sprintf( buf, " %d / %d / %d / %d / %d / %d",
|
sprintf( buf, " %d / %d / %d / %d / %d / %d",
|
||||||
redSize, greenSize, blueSize, alphaSize,
|
redSize, greenSize, blueSize, alphaSize,
|
||||||
luminanceSize, intensitySize );
|
luminanceSize, intensitySize );
|
||||||
drawStringOutline( buf, 15, h / 2 - 20, labelLevelColor0, labelLevelColor1 );
|
drawStringOutline( buf, 15, h / 2 - 30, labelLevelColor0, labelLevelColor1 );
|
||||||
|
|
||||||
end2D();
|
end2D();
|
||||||
}
|
}
|
||||||
@@ -700,6 +753,8 @@ static void instructions( void )
|
|||||||
fprintf( stderr, " [s] - toggle smooth shading\n" );
|
fprintf( stderr, " [s] - toggle smooth shading\n" );
|
||||||
fprintf( stderr, " [t] - toggle texturing\n" );
|
fprintf( stderr, " [t] - toggle texturing\n" );
|
||||||
fprintf( stderr, " [i] - toggle information display\n" );
|
fprintf( stderr, " [i] - toggle information display\n" );
|
||||||
|
fprintf( stderr, " up/down - select row\n" );
|
||||||
|
fprintf( stderr, " left/right - change row's internal format\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
int main( int argc, char *argv[] )
|
int main( int argc, char *argv[] )
|
||||||
@@ -729,6 +784,7 @@ int main( int argc, char *argv[] )
|
|||||||
}
|
}
|
||||||
|
|
||||||
glutInitWindowSize( winWidth, winHeight );
|
glutInitWindowSize( winWidth, winHeight );
|
||||||
|
glutInitWindowPosition( 0, 0 );
|
||||||
glutCreateWindow( "Texture Environment Test" );
|
glutCreateWindow( "Texture Environment Test" );
|
||||||
|
|
||||||
initialize();
|
initialize();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: trispd.c,v 1.1 1999/08/19 00:55:40 jtg Exp $ */
|
/* $Id: trispd.c,v 1.2 2000/10/26 15:26:14 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Simple GLUT program to measure triangle strip rendering speed.
|
* Simple GLUT program to measure triangle strip rendering speed.
|
||||||
@@ -7,8 +7,11 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: trispd.c,v $
|
* $Log: trispd.c,v $
|
||||||
* Revision 1.1 1999/08/19 00:55:40 jtg
|
* Revision 1.2 2000/10/26 15:26:14 brianp
|
||||||
* Initial revision
|
* added a glFinish() call
|
||||||
|
*
|
||||||
|
* Revision 1.1.1.1 1999/08/19 00:55:40 jtg
|
||||||
|
* Imported sources
|
||||||
*
|
*
|
||||||
* Revision 3.4 1999/03/28 18:24:37 brianp
|
* Revision 3.4 1999/03/28 18:24:37 brianp
|
||||||
* minor clean-up
|
* minor clean-up
|
||||||
@@ -107,6 +110,7 @@ static void Display( void )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
glFinish();
|
||||||
t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
|
||||||
|
|
||||||
if (t1-t0 < MinPeriod) {
|
if (t1-t0 < MinPeriod) {
|
||||||
|
|||||||
@@ -16,8 +16,8 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
#include "../util/readtex.c"
|
#include "readtex.c"
|
||||||
#include "tunneldat.c"
|
#include "tunneldat.h"
|
||||||
|
|
||||||
#ifdef XMESA
|
#ifdef XMESA
|
||||||
#include "GL/xmesa.h"
|
#include "GL/xmesa.h"
|
||||||
@@ -27,7 +27,9 @@ static int fullscreen = 1;
|
|||||||
static int WIDTH = 640;
|
static int WIDTH = 640;
|
||||||
static int HEIGHT = 480;
|
static int HEIGHT = 480;
|
||||||
|
|
||||||
#define FRAME 50
|
static GLint T0 = 0;
|
||||||
|
static GLint Frames = 0;
|
||||||
|
static GLint NiceFog = 1;
|
||||||
|
|
||||||
#define NUMBLOC 5
|
#define NUMBLOC 5
|
||||||
|
|
||||||
@@ -35,6 +37,7 @@ static int HEIGHT = 480;
|
|||||||
#define M_PI 3.1415926535
|
#define M_PI 3.1415926535
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
extern int striplength_skin_13[];
|
extern int striplength_skin_13[];
|
||||||
extern float stripdata_skin_13[];
|
extern float stripdata_skin_13[];
|
||||||
|
|
||||||
@@ -46,7 +49,7 @@ extern float stripdata_skin_11[];
|
|||||||
|
|
||||||
extern int striplength_skin_9[];
|
extern int striplength_skin_9[];
|
||||||
extern float stripdata_skin_9[];
|
extern float stripdata_skin_9[];
|
||||||
|
*/
|
||||||
|
|
||||||
static int win = 0;
|
static int win = 0;
|
||||||
|
|
||||||
@@ -56,7 +59,7 @@ static float v = 0.5;
|
|||||||
static float alpha = 90.0;
|
static float alpha = 90.0;
|
||||||
static float beta = 90.0;
|
static float beta = 90.0;
|
||||||
|
|
||||||
static int fog = 0;
|
static int fog = 1;
|
||||||
static int bfcull = 1;
|
static int bfcull = 1;
|
||||||
static int usetex = 1;
|
static int usetex = 1;
|
||||||
static int cstrip = 0;
|
static int cstrip = 0;
|
||||||
@@ -103,7 +106,7 @@ inittextures(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
drawobjs(int *l, float *f)
|
drawobjs(const int *l, const float *f)
|
||||||
{
|
{
|
||||||
int mend, j;
|
int mend, j;
|
||||||
|
|
||||||
@@ -154,21 +157,6 @@ drawobjs(int *l, float *f)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static float
|
|
||||||
gettime(void)
|
|
||||||
{
|
|
||||||
static clock_t told = 0;
|
|
||||||
clock_t tnew, ris;
|
|
||||||
|
|
||||||
tnew = clock();
|
|
||||||
|
|
||||||
ris = tnew - told;
|
|
||||||
|
|
||||||
told = tnew;
|
|
||||||
|
|
||||||
return (ris / (float) CLOCKS_PER_SEC);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
calcposobs(void)
|
calcposobs(void)
|
||||||
{
|
{
|
||||||
@@ -176,6 +164,13 @@ calcposobs(void)
|
|||||||
dir[1] = cos(alpha * M_PI / 180.0) * sin(beta * 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);
|
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[0] += v * dir[0];
|
||||||
obs[1] += v * dir[1];
|
obs[1] += v * dir[1];
|
||||||
obs[2] += v * dir[2];
|
obs[2] += v * dir[2];
|
||||||
@@ -221,7 +216,6 @@ key(unsigned char k, int x, int y)
|
|||||||
XMesaSetFXmode(fullscreen ? XMESA_FX_FULLSCREEN : XMESA_FX_WINDOW);
|
XMesaSetFXmode(fullscreen ? XMESA_FX_FULLSCREEN : XMESA_FX_WINDOW);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case 'j':
|
case 'j':
|
||||||
joyactive = (!joyactive);
|
joyactive = (!joyactive);
|
||||||
break;
|
break;
|
||||||
@@ -256,7 +250,12 @@ key(unsigned char k, int x, int y)
|
|||||||
inittextures();
|
inittextures();
|
||||||
fprintf(stderr, "Done.\n");
|
fprintf(stderr, "Done.\n");
|
||||||
break;
|
break;
|
||||||
|
case 'n':
|
||||||
|
NiceFog = !NiceFog;
|
||||||
|
printf("NiceFog %d\n", NiceFog);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
glutPostRedisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -366,10 +365,14 @@ dojoy(void)
|
|||||||
static void
|
static void
|
||||||
draw(void)
|
draw(void)
|
||||||
{
|
{
|
||||||
static int count = 0;
|
static char frbuf[80] = "";
|
||||||
static char frbuf[80];
|
|
||||||
int i;
|
int i;
|
||||||
float fr, base, offset;
|
float base, offset;
|
||||||
|
|
||||||
|
if (NiceFog)
|
||||||
|
glHint(GL_FOG_HINT, GL_NICEST);
|
||||||
|
else
|
||||||
|
glHint(GL_FOG_HINT, GL_DONT_CARE);
|
||||||
|
|
||||||
dojoy();
|
dojoy();
|
||||||
|
|
||||||
@@ -416,11 +419,6 @@ draw(void)
|
|||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
if ((count % FRAME) == 0) {
|
|
||||||
fr = gettime();
|
|
||||||
sprintf(frbuf, "Frame rate: %f", FRAME / fr);
|
|
||||||
}
|
|
||||||
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
glDisable(GL_TEXTURE_2D);
|
||||||
glDisable(GL_FOG);
|
glDisable(GL_FOG);
|
||||||
glShadeModel(GL_FLAT);
|
glShadeModel(GL_FLAT);
|
||||||
@@ -449,9 +447,27 @@ draw(void)
|
|||||||
|
|
||||||
glutSwapBuffers();
|
glutSwapBuffers();
|
||||||
|
|
||||||
count++;
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int ac, char **av)
|
main(int ac, char **av)
|
||||||
{
|
{
|
||||||
@@ -500,7 +516,7 @@ main(int ac, char **av)
|
|||||||
glutDisplayFunc(draw);
|
glutDisplayFunc(draw);
|
||||||
glutKeyboardFunc(key);
|
glutKeyboardFunc(key);
|
||||||
glutSpecialFunc(special);
|
glutSpecialFunc(special);
|
||||||
glutIdleFunc(draw);
|
glutIdleFunc(idle);
|
||||||
|
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
/*glBlendFunc(GL_SRC_ALPHA_SATURATE,GL_ONE); */
|
/*glBlendFunc(GL_SRC_ALPHA_SATURATE,GL_ONE); */
|
||||||
|
|||||||
@@ -19,8 +19,8 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
#include "../util/readtex.c"
|
#include "readtex.c"
|
||||||
#include "tunneldat.c"
|
#include "tunneldat.h"
|
||||||
|
|
||||||
#ifdef FX
|
#ifdef FX
|
||||||
#endif
|
#endif
|
||||||
@@ -40,7 +40,8 @@ static int HEIGHTC0 = 480;
|
|||||||
static int WIDTHC1 = 640;
|
static int WIDTHC1 = 640;
|
||||||
static int HEIGHTC1 = 480;
|
static int HEIGHTC1 = 480;
|
||||||
|
|
||||||
#define FRAME 50
|
static GLint T0 = 0;
|
||||||
|
static GLint Frames = 0;
|
||||||
|
|
||||||
#define NUMBLOC 5
|
#define NUMBLOC 5
|
||||||
|
|
||||||
@@ -48,19 +49,6 @@ static int HEIGHTC1 = 480;
|
|||||||
#define M_PI 3.1415926535
|
#define M_PI 3.1415926535
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern int striplength_skin_13[];
|
|
||||||
extern float stripdata_skin_13[];
|
|
||||||
|
|
||||||
extern int striplength_skin_12[];
|
|
||||||
extern float stripdata_skin_12[];
|
|
||||||
|
|
||||||
extern int striplength_skin_11[];
|
|
||||||
extern float stripdata_skin_11[];
|
|
||||||
|
|
||||||
extern int striplength_skin_9[];
|
|
||||||
extern float stripdata_skin_9[];
|
|
||||||
|
|
||||||
|
|
||||||
static float obs[3] = { 1000.0, 0.0, 2.0 };
|
static float obs[3] = { 1000.0, 0.0, 2.0 };
|
||||||
static float dir[3];
|
static float dir[3];
|
||||||
static float v = 0.5;
|
static float v = 0.5;
|
||||||
@@ -116,7 +104,7 @@ inittextures(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
drawobjs(int *l, float *f)
|
drawobjs(const int *l, const float *f)
|
||||||
{
|
{
|
||||||
int mend, j;
|
int mend, j;
|
||||||
|
|
||||||
@@ -167,21 +155,6 @@ drawobjs(int *l, float *f)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static float
|
|
||||||
gettime(void)
|
|
||||||
{
|
|
||||||
static clock_t told = 0;
|
|
||||||
clock_t tnew, ris;
|
|
||||||
|
|
||||||
tnew = clock();
|
|
||||||
|
|
||||||
ris = tnew - told;
|
|
||||||
|
|
||||||
told = tnew;
|
|
||||||
|
|
||||||
return (ris / (float) CLOCKS_PER_SEC);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
calcposobs(void)
|
calcposobs(void)
|
||||||
{
|
{
|
||||||
@@ -189,6 +162,13 @@ calcposobs(void)
|
|||||||
dir[1] = cos(alpha * M_PI / 180.0) * sin(beta * 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);
|
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[0] += v * dir[0];
|
||||||
obs[1] += v * dir[1];
|
obs[1] += v * dir[1];
|
||||||
obs[2] += v * dir[2];
|
obs[2] += v * dir[2];
|
||||||
@@ -409,10 +389,9 @@ dojoy(void)
|
|||||||
static void
|
static void
|
||||||
draw(void)
|
draw(void)
|
||||||
{
|
{
|
||||||
static int count = 0;
|
static char frbuf[80] = "";
|
||||||
static char frbuf[80];
|
|
||||||
int i;
|
int i;
|
||||||
float fr, base, offset;
|
float base, offset;
|
||||||
|
|
||||||
dojoy();
|
dojoy();
|
||||||
|
|
||||||
@@ -461,11 +440,6 @@ draw(void)
|
|||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
if ((count % FRAME) == 0) {
|
|
||||||
fr = gettime();
|
|
||||||
sprintf(frbuf, "Frame rate: %f", FRAME / fr);
|
|
||||||
}
|
|
||||||
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
glDisable(GL_TEXTURE_2D);
|
||||||
glDisable(GL_FOG);
|
glDisable(GL_FOG);
|
||||||
glShadeModel(GL_FLAT);
|
glShadeModel(GL_FLAT);
|
||||||
@@ -492,7 +466,17 @@ draw(void)
|
|||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
glMatrixMode(GL_MODELVIEW);
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
|
||||||
count++;
|
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
|
static void
|
||||||
@@ -557,14 +541,12 @@ main(int ac, char **av)
|
|||||||
{
|
{
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Tunnel2 V1.0\nWritten by David Bucciarelli (tech.hmw@plus.it)\n");
|
"Tunnel2 V1.0\nWritten by David Bucciarelli (tech.hmw@plus.it)\n");
|
||||||
fprintf(stderr,
|
|
||||||
"You need TWO Voodoo Graphics boards in order to run this demo !\n");
|
|
||||||
|
|
||||||
glutInitWindowPosition(0, 0);
|
glutInitWindowPosition(0, 0);
|
||||||
glutInitWindowSize(WIDTHC0, HEIGHTC0);
|
glutInitWindowSize(WIDTHC0, HEIGHTC0);
|
||||||
glutInit(&ac, av);
|
glutInit(&ac, av);
|
||||||
|
|
||||||
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_ALPHA);
|
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
|
||||||
|
|
||||||
#ifdef FX
|
#ifdef FX
|
||||||
if (!fxMesaSelectCurrentBoard(0)) {
|
if (!fxMesaSelectCurrentBoard(0)) {
|
||||||
|
|||||||
@@ -1,83 +0,0 @@
|
|||||||
/* Object: skin_13 */
|
|
||||||
|
|
||||||
#if defined(_MSC_VER) && defined(_WIN32)
|
|
||||||
#pragma warning( disable : 4305 ) /* 'initializing' : truncation from 'const double' to 'float' */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int striplength_skin_13[]={
|
|
||||||
10,7,3,5,5,4,4,4,4,5,3,4,5,4,4,4,4,4,4,6,
|
|
||||||
6,3,6,3,3,3,3,0};
|
|
||||||
|
|
||||||
float stripdata_skin_13[]={
|
|
||||||
0.415686,0.415686,0.415686,1.000000,0.000000,1.500000,2.000000,4.000000,0.000000,0.341176,0.341176,0.341176,1.000000,-0.500000,1.500000,4.000000,4.000000,0.000000,0.545098,0.545098,0.545098,1.000000,0.000000,1.000000,2.000000,4.000000,2.000000,0.435294,0.435294,0.435294,1.000000,-0.500000,1.000000,4.000000,4.000000,2.000000,0.517647,0.517647,0.517647,1.000000,0.000000,0.500000,2.000000,4.000000,4.000000,0.450980,0.450980,0.450980,1.000000,-0.500000,0.500000,4.000000,4.000000,4.000000,0.427451,0.427451,0.427451,1.000000,0.000000,0.000000,2.000000,4.000000,6.000000,0.388235,0.388235,0.388235,1.000000,-0.500000,0.000000,4.000000,4.000000,6.000000,0.356863,0.356863,0.356863,1.000000,0.000000,-0.500000,2.000000,4.000000,8.000000,0.333333,0.333333,0.333333,1.000000,-0.500000,-0.500000,4.000000,4.000000,8.000000,
|
|
||||||
0.435294,0.435294,0.435294,1.000000,1.500000,1.000000,-4.000000,4.000000,2.000000,0.415686,0.415686,0.415686,1.000000,1.000000,1.500000,-2.000000,4.000000,0.000000,0.545098,0.545098,0.545098,1.000000,1.000000,1.000000,-2.000000,4.000000,2.000000,0.450980,0.450980,0.450980,1.000000,0.500000,1.500000,0.000000,4.000000,0.000000,0.600000,0.600000,0.600000,1.000000,0.500000,1.000000,0.000000,4.000000,2.000000,0.415686,0.415686,0.415686,1.000000,0.000000,1.500000,2.000000,4.000000,0.000000,0.545098,0.545098,0.545098,1.000000,0.000000,1.000000,2.000000,4.000000,2.000000,
|
|
||||||
0.435294,0.435294,0.435294,1.000000,1.500000,1.000000,-4.000000,4.000000,2.000000,0.341176,0.341176,0.341176,1.000000,1.500000,1.500000,-4.000000,4.000000,0.000000,0.415686,0.415686,0.415686,1.000000,1.000000,1.500000,-2.000000,4.000000,0.000000,
|
|
||||||
0.356863,0.356863,0.356863,1.000000,0.000000,-0.500000,2.000000,4.000000,8.000000,0.364706,0.364706,0.364706,1.000000,0.500000,-0.500000,0.000000,4.000000,8.000000,0.427451,0.427451,0.427451,1.000000,0.000000,0.000000,2.000000,4.000000,6.000000,0.415686,0.415686,0.415686,1.000000,0.395020,-0.133318,0.420032,4.000000,6.533272,0.423529,0.423529,0.423529,1.000000,0.388550,-0.103582,0.445932,4.000000,6.414327,
|
|
||||||
0.423529,0.423529,0.423529,1.000000,0.388550,-0.103582,0.445932,4.000000,6.414327,0.427451,0.427451,0.427451,1.000000,0.383423,-0.069344,0.466541,4.000000,6.277375,0.427451,0.427451,0.427451,1.000000,0.000000,0.000000,2.000000,4.000000,6.000000,0.435294,0.435294,0.435294,1.000000,0.380371,-0.034595,0.478689,4.000000,6.138380,0.439216,0.439216,0.439216,1.000000,0.379272,0.000000,0.482673,4.000000,6.000000,
|
|
||||||
0.407843,0.407843,0.407843,1.000000,0.414673,-0.191394,0.341301,4.000000,6.765576,0.411765,0.411765,0.411765,1.000000,0.403687,-0.162957,0.385368,4.000000,6.651829,0.364706,0.364706,0.364706,1.000000,0.500000,-0.500000,0.000000,4.000000,8.000000,0.415686,0.415686,0.415686,1.000000,0.395020,-0.133318,0.420032,4.000000,6.533272,
|
|
||||||
0.400000,0.400000,0.400000,1.000000,0.438232,-0.232438,0.247284,4.000000,6.929754,0.403922,0.403922,0.403922,1.000000,0.425171,-0.212276,0.299425,4.000000,6.849104,0.364706,0.364706,0.364706,1.000000,0.500000,-0.500000,0.000000,4.000000,8.000000,0.407843,0.407843,0.407843,1.000000,0.414673,-0.191394,0.341301,4.000000,6.765576,
|
|
||||||
0.396078,0.396078,0.396078,1.000000,0.467285,-0.260554,0.130636,4.000000,7.042214,0.400000,0.400000,0.400000,1.000000,0.453857,-0.250068,0.184711,4.000000,7.000273,0.364706,0.364706,0.364706,1.000000,0.500000,-0.500000,0.000000,4.000000,8.000000,0.400000,0.400000,0.400000,1.000000,0.438232,-0.232438,0.247284,4.000000,6.929754,
|
|
||||||
0.396078,0.396078,0.396078,1.000000,0.500000,-0.270672,0.000000,4.000000,7.082688,0.396078,0.396078,0.396078,1.000000,0.482788,-0.267902,0.068730,4.000000,7.071609,0.364706,0.364706,0.364706,1.000000,0.500000,-0.500000,0.000000,4.000000,8.000000,0.396078,0.396078,0.396078,1.000000,0.467285,-0.260554,0.130636,4.000000,7.042214,
|
|
||||||
0.439216,0.439216,0.439216,1.000000,0.379272,0.000000,0.482673,4.000000,6.000000,0.474510,0.474510,0.474510,1.000000,0.379272,0.180448,0.482673,4.000000,5.278208,0.517647,0.517647,0.517647,1.000000,0.000000,0.500000,2.000000,4.000000,4.000000,0.513726,0.513726,0.513726,1.000000,0.379272,0.360896,0.482673,4.000000,4.556417,0.545098,0.545098,0.545098,1.000000,0.379272,0.500000,0.482673,4.000000,4.000000,
|
|
||||||
0.545098,0.545098,0.545098,1.000000,0.379272,0.500000,0.482673,4.000000,4.000000,0.545098,0.545098,0.545098,1.000000,0.000000,1.000000,2.000000,4.000000,2.000000,0.517647,0.517647,0.517647,1.000000,0.000000,0.500000,2.000000,4.000000,4.000000,
|
|
||||||
0.600000,0.600000,0.600000,1.000000,0.500000,1.000000,0.000000,4.000000,2.000000,0.545098,0.545098,0.545098,1.000000,0.000000,1.000000,2.000000,4.000000,2.000000,0.552941,0.552941,0.552941,1.000000,0.379272,0.541344,0.482673,4.000000,3.834625,0.545098,0.545098,0.545098,1.000000,0.379272,0.500000,0.482673,4.000000,4.000000,
|
|
||||||
0.552941,0.552941,0.552941,1.000000,0.379272,0.541344,0.482673,4.000000,3.834625,0.556863,0.556863,0.556863,1.000000,0.459717,0.541344,0.160891,4.000000,3.834625,0.600000,0.600000,0.600000,1.000000,0.500000,1.000000,0.000000,4.000000,2.000000,0.556863,0.556863,0.556863,1.000000,0.500000,0.541344,0.000000,4.000000,3.834625,0.556863,0.556863,0.556863,1.000000,0.540283,0.541344,-0.160891,4.000000,3.834625,
|
|
||||||
0.396078,0.396078,0.396078,1.000000,0.517212,-0.267902,-0.068730,4.000000,7.071609,0.396078,0.396078,0.396078,1.000000,0.500000,-0.270672,0.000000,4.000000,7.082688,0.356863,0.356863,0.356863,1.000000,1.000000,-0.500000,-2.000000,4.000000,8.000000,0.364706,0.364706,0.364706,1.000000,0.500000,-0.500000,0.000000,4.000000,8.000000,
|
|
||||||
0.400000,0.400000,0.400000,1.000000,0.546143,-0.250068,-0.184711,4.000000,7.000273,0.396078,0.396078,0.396078,1.000000,0.532715,-0.260554,-0.130636,4.000000,7.042214,0.356863,0.356863,0.356863,1.000000,1.000000,-0.500000,-2.000000,4.000000,8.000000,0.396078,0.396078,0.396078,1.000000,0.517212,-0.267902,-0.068730,4.000000,7.071609,
|
|
||||||
0.403922,0.403922,0.403922,1.000000,0.574829,-0.212276,-0.299425,4.000000,6.849104,0.400000,0.400000,0.400000,1.000000,0.561768,-0.232438,-0.247284,4.000000,6.929754,0.356863,0.356863,0.356863,1.000000,1.000000,-0.500000,-2.000000,4.000000,8.000000,0.400000,0.400000,0.400000,1.000000,0.546143,-0.250068,-0.184711,4.000000,7.000273,
|
|
||||||
0.411765,0.411765,0.411765,1.000000,0.596313,-0.162957,-0.385368,4.000000,6.651829,0.407843,0.407843,0.407843,1.000000,0.585327,-0.191394,-0.341301,4.000000,6.765576,0.356863,0.356863,0.356863,1.000000,1.000000,-0.500000,-2.000000,4.000000,8.000000,0.403922,0.403922,0.403922,1.000000,0.574829,-0.212276,-0.299425,4.000000,6.849104,
|
|
||||||
0.423529,0.423529,0.423529,1.000000,0.611450,-0.103582,-0.445931,4.000000,6.414327,0.415686,0.415686,0.415686,1.000000,0.604980,-0.133318,-0.420033,4.000000,6.533272,0.356863,0.356863,0.356863,1.000000,1.000000,-0.500000,-2.000000,4.000000,8.000000,0.411765,0.411765,0.411765,1.000000,0.596313,-0.162957,-0.385368,4.000000,6.651829,
|
|
||||||
0.435294,0.435294,0.435294,1.000000,0.619629,-0.034595,-0.478689,4.000000,6.138380,0.427451,0.427451,0.427451,1.000000,0.616577,-0.069344,-0.466541,4.000000,6.277375,0.356863,0.356863,0.356863,1.000000,1.000000,-0.500000,-2.000000,4.000000,8.000000,0.423529,0.423529,0.423529,1.000000,0.611450,-0.103582,-0.445931,4.000000,6.414327,
|
|
||||||
0.513726,0.513726,0.513726,1.000000,0.620728,0.360896,-0.482673,4.000000,4.556417,0.474510,0.474510,0.474510,1.000000,0.620728,0.180448,-0.482673,4.000000,5.278208,0.427451,0.427451,0.427451,1.000000,1.000000,0.000000,-2.000000,4.000000,6.000000,0.439216,0.439216,0.439216,1.000000,0.620728,0.000000,-0.482673,4.000000,6.000000,0.356863,0.356863,0.356863,1.000000,1.000000,-0.500000,-2.000000,4.000000,8.000000,0.435294,0.435294,0.435294,1.000000,0.619629,-0.034595,-0.478689,4.000000,6.138380,
|
|
||||||
0.333333,0.333333,0.333333,1.000000,1.500000,-0.500000,-4.000000,4.000000,8.000000,0.388235,0.388235,0.388235,1.000000,1.500000,0.000000,-4.000000,4.000000,6.000000,0.427451,0.427451,0.427451,1.000000,1.000000,0.000000,-2.000000,4.000000,6.000000,0.517647,0.517647,0.517647,1.000000,1.000000,0.500000,-2.000000,4.000000,4.000000,0.513726,0.513726,0.513726,1.000000,0.620728,0.360896,-0.482673,4.000000,4.556417,0.545098,0.545098,0.545098,1.000000,0.620728,0.500000,-0.482673,4.000000,4.000000,
|
|
||||||
0.333333,0.333333,0.333333,1.000000,1.500000,-0.500000,-4.000000,4.000000,8.000000,0.427451,0.427451,0.427451,1.000000,1.000000,0.000000,-2.000000,4.000000,6.000000,0.356863,0.356863,0.356863,1.000000,1.000000,-0.500000,-2.000000,4.000000,8.000000,
|
|
||||||
0.556863,0.556863,0.556863,1.000000,0.540283,0.541344,-0.160891,4.000000,3.834625,0.552941,0.552941,0.552941,1.000000,0.620728,0.541344,-0.482673,4.000000,3.834625,0.545098,0.545098,0.545098,1.000000,1.000000,1.000000,-2.000000,4.000000,2.000000,0.517647,0.517647,0.517647,1.000000,1.000000,0.500000,-2.000000,4.000000,4.000000,0.450980,0.450980,0.450980,1.000000,1.500000,0.500000,-4.000000,4.000000,4.000000,0.388235,0.388235,0.388235,1.000000,1.500000,0.000000,-4.000000,4.000000,6.000000,
|
|
||||||
0.517647,0.517647,0.517647,1.000000,1.000000,0.500000,-2.000000,4.000000,4.000000,0.552941,0.552941,0.552941,1.000000,0.620728,0.541344,-0.482673,4.000000,3.834625,0.545098,0.545098,0.545098,1.000000,0.620728,0.500000,-0.482673,4.000000,4.000000,
|
|
||||||
0.450980,0.450980,0.450980,1.000000,1.500000,0.500000,-4.000000,4.000000,4.000000,0.435294,0.435294,0.435294,1.000000,1.500000,1.000000,-4.000000,4.000000,2.000000,0.545098,0.545098,0.545098,1.000000,1.000000,1.000000,-2.000000,4.000000,2.000000,
|
|
||||||
0.439216,0.439216,0.439216,1.000000,0.379272,0.000000,0.482673,4.000000,6.000000,0.517647,0.517647,0.517647,1.000000,0.000000,0.500000,2.000000,4.000000,4.000000,0.427451,0.427451,0.427451,1.000000,0.000000,0.000000,2.000000,4.000000,6.000000,
|
|
||||||
0.556863,0.556863,0.556863,1.000000,0.540283,0.541344,-0.160891,4.000000,3.834625,0.545098,0.545098,0.545098,1.000000,1.000000,1.000000,-2.000000,4.000000,2.000000,0.600000,0.600000,0.600000,1.000000,0.500000,1.000000,0.000000,4.000000,2.000000
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/* Object: skin_12 */
|
|
||||||
|
|
||||||
int striplength_skin_12[]={
|
|
||||||
12,12,12,12,12,0};
|
|
||||||
|
|
||||||
float stripdata_skin_12[]={
|
|
||||||
0.498039,0.498039,0.498039,1.000000,-0.099976,1.500000,-2.400000,-4.000000,-0.000002,0.337255,0.337255,0.337255,1.000000,-0.500000,1.500000,-4.000000,-4.000000,-0.000002,0.568627,0.568627,0.568627,1.000000,-0.099976,1.100000,-2.400000,-4.000000,1.599999,0.341176,0.341176,0.341176,1.000000,-0.500000,1.100000,-4.000000,-4.000000,1.599999,0.498039,0.498039,0.498039,1.000000,-0.099976,0.700000,-2.400000,-4.000000,3.200000,0.325490,0.325490,0.325490,1.000000,-0.500000,0.700000,-4.000000,-4.000000,3.199999,0.352941,0.352941,0.352941,1.000000,-0.099976,0.300000,-2.400000,-4.000000,4.800000,0.282353,0.282353,0.282353,1.000000,-0.500000,0.300000,-4.000000,-4.000000,4.800000,0.282353,0.282353,0.282353,1.000000,-0.099976,-0.100000,-2.400000,-4.000000,6.400001,0.254902,0.254902,0.254902,1.000000,-0.500000,-0.100000,-4.000000,-4.000000,6.400000,0.239216,0.239216,0.239216,1.000000,-0.099976,-0.500000,-2.400000,-4.000000,8.000000,0.227451,0.227451,0.227451,1.000000,-0.500000,-0.500000,-4.000000,-4.000000,8.000000,
|
|
||||||
0.239216,0.239216,0.239216,1.000000,1.099976,-0.500000,2.400001,-4.000000,8.000000,0.227451,0.227451,0.227451,1.000000,1.500000,-0.500000,4.000002,-4.000000,8.000000,0.282353,0.282353,0.282353,1.000000,1.099976,-0.100000,2.400001,-4.000000,6.400001,0.254902,0.254902,0.254902,1.000000,1.500000,-0.100000,4.000002,-4.000000,6.400001,0.352941,0.352941,0.352941,1.000000,1.099976,0.300000,2.400002,-4.000000,4.800001,0.282353,0.282353,0.282353,1.000000,1.500000,0.300000,4.000002,-4.000000,4.800001,0.498039,0.498039,0.498039,1.000000,1.099976,0.700000,2.400002,-4.000000,3.200000,0.321569,0.321569,0.321569,1.000000,1.500000,0.700000,4.000003,-4.000000,3.200000,0.568627,0.568627,0.568627,1.000000,1.099976,1.100000,2.400002,-4.000000,1.599999,0.341176,0.341176,0.341176,1.000000,1.500000,1.100000,4.000003,-4.000000,1.599999,0.494118,0.494118,0.494118,1.000000,1.099976,1.500000,2.400003,-4.000000,-0.000002,0.337255,0.337255,0.337255,1.000000,1.500000,1.500000,4.000004,-4.000000,-0.000002,
|
|
||||||
0.639216,0.639216,0.639216,1.000000,0.300049,1.500000,-0.799999,-4.000000,-0.000002,0.498039,0.498039,0.498039,1.000000,-0.099976,1.500000,-2.400000,-4.000000,-0.000002,0.858824,0.858824,0.858824,1.000000,0.300049,1.100000,-0.799999,-4.000000,1.599999,0.568627,0.568627,0.568627,1.000000,-0.099976,1.100000,-2.400000,-4.000000,1.599999,0.686275,0.686275,0.686275,1.000000,0.300049,0.700000,-0.799999,-4.000000,3.200000,0.498039,0.498039,0.498039,1.000000,-0.099976,0.700000,-2.400000,-4.000000,3.200000,0.419608,0.419608,0.419608,1.000000,0.300049,0.300000,-0.800000,-4.000000,4.800000,0.352941,0.352941,0.352941,1.000000,-0.099976,0.300000,-2.400000,-4.000000,4.800000,0.298039,0.298039,0.298039,1.000000,0.300049,-0.100000,-0.800000,-4.000000,6.400001,0.282353,0.282353,0.282353,1.000000,-0.099976,-0.100000,-2.400000,-4.000000,6.400001,0.247059,0.247059,0.247059,1.000000,0.300049,-0.500000,-0.800000,-4.000000,8.000000,0.239216,0.239216,0.239216,1.000000,-0.099976,-0.500000,-2.400000,-4.000000,8.000000,
|
|
||||||
0.639216,0.639216,0.639216,1.000000,0.699951,1.500000,0.800002,-4.000000,-0.000002,0.639216,0.639216,0.639216,1.000000,0.300049,1.500000,-0.799999,-4.000000,-0.000002,0.858824,0.858824,0.858824,1.000000,0.699951,1.100000,0.800001,-4.000000,1.599999,0.858824,0.858824,0.858824,1.000000,0.300049,1.100000,-0.799999,-4.000000,1.599999,0.686275,0.686275,0.686275,1.000000,0.699951,0.700000,0.800001,-4.000000,3.200000,0.686275,0.686275,0.686275,1.000000,0.300049,0.700000,-0.799999,-4.000000,3.200000,0.419608,0.419608,0.419608,1.000000,0.699951,0.300000,0.800001,-4.000000,4.800001,0.419608,0.419608,0.419608,1.000000,0.300049,0.300000,-0.800000,-4.000000,4.800000,0.298039,0.298039,0.298039,1.000000,0.699951,-0.100000,0.800001,-4.000000,6.400001,0.298039,0.298039,0.298039,1.000000,0.300049,-0.100000,-0.800000,-4.000000,6.400001,0.247059,0.247059,0.247059,1.000000,0.699951,-0.500000,0.800000,-4.000000,8.000000,0.247059,0.247059,0.247059,1.000000,0.300049,-0.500000,-0.800000,-4.000000,8.000000,
|
|
||||||
0.494118,0.494118,0.494118,1.000000,1.099976,1.500000,2.400003,-4.000000,-0.000002,0.639216,0.639216,0.639216,1.000000,0.699951,1.500000,0.800002,-4.000000,-0.000002,0.568627,0.568627,0.568627,1.000000,1.099976,1.100000,2.400002,-4.000000,1.599999,0.858824,0.858824,0.858824,1.000000,0.699951,1.100000,0.800001,-4.000000,1.599999,0.498039,0.498039,0.498039,1.000000,1.099976,0.700000,2.400002,-4.000000,3.200000,0.686275,0.686275,0.686275,1.000000,0.699951,0.700000,0.800001,-4.000000,3.200000,0.352941,0.352941,0.352941,1.000000,1.099976,0.300000,2.400002,-4.000000,4.800001,0.419608,0.419608,0.419608,1.000000,0.699951,0.300000,0.800001,-4.000000,4.800001,0.282353,0.282353,0.282353,1.000000,1.099976,-0.100000,2.400001,-4.000000,6.400001,0.298039,0.298039,0.298039,1.000000,0.699951,-0.100000,0.800001,-4.000000,6.400001,0.239216,0.239216,0.239216,1.000000,1.099976,-0.500000,2.400001,-4.000000,8.000000,0.247059,0.247059,0.247059,1.000000,0.699951,-0.500000,0.800000,-4.000000,8.000000
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/* Object: skin_11 */
|
|
||||||
|
|
||||||
int striplength_skin_11[]={
|
|
||||||
12,12,12,12,12,0};
|
|
||||||
|
|
||||||
float stripdata_skin_11[]={
|
|
||||||
0.145098,0.145098,0.145098,1.000000,-0.099976,1.500000,-2.400000,4.000002,0.000000,0.141176,0.141176,0.141176,1.000000,-0.500000,1.500000,-4.000000,4.000002,0.000000,0.176471,0.176471,0.176471,1.000000,-0.099976,1.100000,-2.400000,2.400001,0.000000,0.145098,0.145098,0.145098,1.000000,-0.500000,1.100000,-4.000000,2.400001,0.000000,0.341176,0.341176,0.341176,1.000000,-0.099976,0.700000,-2.400000,0.800000,0.000000,0.188235,0.188235,0.188235,1.000000,-0.500000,0.700000,-4.000000,0.800000,0.000000,0.450980,0.450980,0.450980,1.000000,-0.099976,0.300000,-2.400000,-0.800000,0.000000,0.247059,0.247059,0.247059,1.000000,-0.500000,0.300000,-4.000000,-0.800000,0.000000,0.439216,0.439216,0.439216,1.000000,-0.099976,-0.100000,-2.400000,-2.400000,0.000000,0.270588,0.270588,0.270588,1.000000,-0.500000,-0.100000,-4.000000,-2.400000,0.000000,0.364706,0.364706,0.364706,1.000000,-0.099976,-0.500000,-2.400000,-4.000000,0.000000,0.258824,0.258824,0.258824,1.000000,-0.500000,-0.500000,-4.000000,-4.000000,0.000000,
|
|
||||||
0.364706,0.364706,0.364706,1.000000,1.099976,-0.500000,2.400001,-4.000000,0.000000,0.258824,0.258824,0.258824,1.000000,1.500000,-0.500000,4.000002,-4.000000,0.000000,0.439216,0.439216,0.439216,1.000000,1.099976,-0.100000,2.400001,-2.400001,0.000000,0.270588,0.270588,0.270588,1.000000,1.500000,-0.100000,4.000002,-2.400001,0.000000,0.454902,0.454902,0.454902,1.000000,1.099976,0.300000,2.400002,-0.800000,0.000000,0.247059,0.247059,0.247059,1.000000,1.500000,0.300000,4.000002,-0.800000,0.000000,0.341176,0.341176,0.341176,1.000000,1.099976,0.700000,2.400002,0.800000,0.000000,0.184314,0.184314,0.184314,1.000000,1.500000,0.700000,4.000003,0.800000,0.000000,0.176471,0.176471,0.176471,1.000000,1.099976,1.100000,2.400002,2.400001,0.000000,0.145098,0.145098,0.145098,1.000000,1.500000,1.100000,4.000003,2.400001,0.000000,0.145098,0.145098,0.145098,1.000000,1.099976,1.500000,2.400003,4.000003,0.000000,0.141176,0.141176,0.141176,1.000000,1.500000,1.500000,4.000004,4.000002,0.000000,
|
|
||||||
0.145098,0.145098,0.145098,1.000000,0.300049,1.500000,-0.799999,4.000002,0.000000,0.145098,0.145098,0.145098,1.000000,-0.099976,1.500000,-2.400000,4.000002,0.000000,0.262745,0.262745,0.262745,1.000000,0.300049,1.100000,-0.799999,2.400001,0.000000,0.176471,0.176471,0.176471,1.000000,-0.099976,1.100000,-2.400000,2.400001,0.000000,0.580392,0.580392,0.580392,1.000000,0.300049,0.700000,-0.799999,0.800000,0.000000,0.341176,0.341176,0.341176,1.000000,-0.099976,0.700000,-2.400000,0.800000,0.000000,0.709804,0.709804,0.709804,1.000000,0.300049,0.300000,-0.800000,-0.800000,0.000000,0.450980,0.450980,0.450980,1.000000,-0.099976,0.300000,-2.400000,-0.800000,0.000000,0.627451,0.627451,0.627451,1.000000,0.300049,-0.100000,-0.800000,-2.400001,0.000000,0.439216,0.439216,0.439216,1.000000,-0.099976,-0.100000,-2.400000,-2.400000,0.000000,0.458824,0.458824,0.458824,1.000000,0.300049,-0.500000,-0.800000,-4.000000,0.000000,0.364706,0.364706,0.364706,1.000000,-0.099976,-0.500000,-2.400000,-4.000000,0.000000,
|
|
||||||
0.145098,0.145098,0.145098,1.000000,0.699951,1.500000,0.800002,4.000002,0.000000,0.145098,0.145098,0.145098,1.000000,0.300049,1.500000,-0.799999,4.000002,0.000000,0.262745,0.262745,0.262745,1.000000,0.699951,1.100000,0.800001,2.400001,0.000000,0.262745,0.262745,0.262745,1.000000,0.300049,1.100000,-0.799999,2.400001,0.000000,0.580392,0.580392,0.580392,1.000000,0.699951,0.700000,0.800001,0.800000,0.000000,0.580392,0.580392,0.580392,1.000000,0.300049,0.700000,-0.799999,0.800000,0.000000,0.713726,0.713726,0.713726,1.000000,0.699951,0.300000,0.800001,-0.800000,0.000000,0.709804,0.709804,0.709804,1.000000,0.300049,0.300000,-0.800000,-0.800000,0.000000,0.631373,0.631373,0.631373,1.000000,0.699951,-0.100000,0.800001,-2.400001,0.000000,0.627451,0.627451,0.627451,1.000000,0.300049,-0.100000,-0.800000,-2.400001,0.000000,0.458824,0.458824,0.458824,1.000000,0.699951,-0.500000,0.800000,-4.000000,0.000000,0.458824,0.458824,0.458824,1.000000,0.300049,-0.500000,-0.800000,-4.000000,0.000000,
|
|
||||||
0.145098,0.145098,0.145098,1.000000,1.099976,1.500000,2.400003,4.000003,0.000000,0.145098,0.145098,0.145098,1.000000,0.699951,1.500000,0.800002,4.000002,0.000000,0.176471,0.176471,0.176471,1.000000,1.099976,1.100000,2.400002,2.400001,0.000000,0.262745,0.262745,0.262745,1.000000,0.699951,1.100000,0.800001,2.400001,0.000000,0.341176,0.341176,0.341176,1.000000,1.099976,0.700000,2.400002,0.800000,0.000000,0.580392,0.580392,0.580392,1.000000,0.699951,0.700000,0.800001,0.800000,0.000000,0.454902,0.454902,0.454902,1.000000,1.099976,0.300000,2.400002,-0.800000,0.000000,0.713726,0.713726,0.713726,1.000000,0.699951,0.300000,0.800001,-0.800000,0.000000,0.439216,0.439216,0.439216,1.000000,1.099976,-0.100000,2.400001,-2.400001,0.000000,0.631373,0.631373,0.631373,1.000000,0.699951,-0.100000,0.800001,-2.400001,0.000000,0.364706,0.364706,0.364706,1.000000,1.099976,-0.500000,2.400001,-4.000000,0.000000,0.458824,0.458824,0.458824,1.000000,0.699951,-0.500000,0.800000,-4.000000,0.000000
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/* Object: skin_9 */
|
|
||||||
|
|
||||||
int striplength_skin_9[]={
|
|
||||||
18,0};
|
|
||||||
|
|
||||||
float stripdata_skin_9[]={
|
|
||||||
0.384314,0.384314,0.384314,1.000000,-0.500000,1.500000,-4.000000,4.000000,8.000000,0.384314,0.384314,0.384314,1.000000,1.500000,1.500000,4.000000,4.000000,8.000000,0.376471,0.376471,0.376471,1.000000,-0.500000,1.250000,-4.000000,3.695518,9.530733,0.403922,0.403922,0.403922,1.000000,1.500000,1.250000,4.000000,3.695518,9.530733,0.415686,0.415686,0.415686,1.000000,-0.500000,1.000000,-4.000000,2.828427,10.828427,0.431373,0.431373,0.431373,1.000000,1.500000,1.000000,4.000000,2.828427,10.828427,0.435294,0.435294,0.435294,1.000000,-0.500000,0.750000,-4.000000,1.530734,11.695518,0.443137,0.443137,0.443137,1.000000,1.500000,0.750000,4.000000,1.530734,11.695518,0.439216,0.439216,0.439216,1.000000,-0.500000,0.500000,-4.000000,0.000000,12.000000,0.435294,0.435294,0.435294,1.000000,1.500000,0.500000,4.000000,0.000000,12.000000,0.427451,0.427451,0.427451,1.000000,-0.500000,0.250000,-4.000000,-1.530734,11.695518,0.411765,0.411765,0.411765,1.000000,1.500000,0.250000,4.000000,-1.530734,11.695518,0.396078,0.396078,0.396078,1.000000,-0.500000,0.000000,-4.000000,-2.828427,10.828427,0.368627,0.368627,0.368627,1.000000,1.500000,0.000000,4.000000,-2.828427,10.828427,0.341176,0.341176,0.341176,1.000000,-0.500000,-0.250000,-4.000000,-3.695518,9.530733,0.301961,0.301961,0.301961,1.000000,1.500000,-0.250000,4.000000,-3.695518,9.530733,0.294118,0.294118,0.294118,1.000000,-0.500000,-0.500000,-4.000000,-4.000000,8.000000,0.294118,0.294118,0.294118,1.000000,1.500000,-0.500000,4.000000,-4.000000,8.000000
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
395
progs/demos/tunneldat.h
Normal file
395
progs/demos/tunneldat.h
Normal file
@@ -0,0 +1,395 @@
|
|||||||
|
/* Object: skin_13 */
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && defined(_WIN32)
|
||||||
|
#pragma warning( disable : 4305 ) /* 'initializing' : truncation from 'const double' to 'float' */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static const int striplength_skin_13[] = {
|
||||||
|
10, 7, 3, 5, 5, 4, 4, 4, 4, 5, 3, 4, 5, 4, 4, 4, 4, 4, 4, 6,
|
||||||
|
6, 3, 6, 3, 3, 3, 3, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
static const float stripdata_skin_13[] = {
|
||||||
|
0.415686, 0.415686, 0.415686, 1.000000, 0.000000, 1.500000, 2.000000,
|
||||||
|
4.000000, 0.000000, 0.341176, 0.341176, 0.341176, 1.000000, -0.500000,
|
||||||
|
1.500000, 4.000000, 4.000000, 0.000000, 0.545098, 0.545098, 0.545098,
|
||||||
|
1.000000, 0.000000, 1.000000, 2.000000, 4.000000, 2.000000, 0.435294,
|
||||||
|
0.435294, 0.435294, 1.000000, -0.500000, 1.000000, 4.000000, 4.000000,
|
||||||
|
2.000000, 0.517647, 0.517647, 0.517647, 1.000000, 0.000000, 0.500000,
|
||||||
|
2.000000, 4.000000, 4.000000, 0.450980, 0.450980, 0.450980, 1.000000,
|
||||||
|
-0.500000, 0.500000, 4.000000, 4.000000, 4.000000, 0.427451, 0.427451,
|
||||||
|
0.427451, 1.000000, 0.000000, 0.000000, 2.000000, 4.000000, 6.000000,
|
||||||
|
0.388235, 0.388235, 0.388235, 1.000000, -0.500000, 0.000000, 4.000000,
|
||||||
|
4.000000, 6.000000, 0.356863, 0.356863, 0.356863, 1.000000, 0.000000,
|
||||||
|
-0.500000, 2.000000, 4.000000, 8.000000, 0.333333, 0.333333, 0.333333,
|
||||||
|
1.000000, -0.500000, -0.500000, 4.000000, 4.000000, 8.000000,
|
||||||
|
0.435294, 0.435294, 0.435294, 1.000000, 1.500000, 1.000000, -4.000000,
|
||||||
|
4.000000, 2.000000, 0.415686, 0.415686, 0.415686, 1.000000, 1.000000,
|
||||||
|
1.500000, -2.000000, 4.000000, 0.000000, 0.545098, 0.545098, 0.545098,
|
||||||
|
1.000000, 1.000000, 1.000000, -2.000000, 4.000000, 2.000000, 0.450980,
|
||||||
|
0.450980, 0.450980, 1.000000, 0.500000, 1.500000, 0.000000, 4.000000,
|
||||||
|
0.000000, 0.600000, 0.600000, 0.600000, 1.000000, 0.500000, 1.000000,
|
||||||
|
0.000000, 4.000000, 2.000000, 0.415686, 0.415686, 0.415686, 1.000000,
|
||||||
|
0.000000, 1.500000, 2.000000, 4.000000, 0.000000, 0.545098, 0.545098,
|
||||||
|
0.545098, 1.000000, 0.000000, 1.000000, 2.000000, 4.000000, 2.000000,
|
||||||
|
0.435294, 0.435294, 0.435294, 1.000000, 1.500000, 1.000000, -4.000000,
|
||||||
|
4.000000, 2.000000, 0.341176, 0.341176, 0.341176, 1.000000, 1.500000,
|
||||||
|
1.500000, -4.000000, 4.000000, 0.000000, 0.415686, 0.415686, 0.415686,
|
||||||
|
1.000000, 1.000000, 1.500000, -2.000000, 4.000000, 0.000000,
|
||||||
|
0.356863, 0.356863, 0.356863, 1.000000, 0.000000, -0.500000, 2.000000,
|
||||||
|
4.000000, 8.000000, 0.364706, 0.364706, 0.364706, 1.000000, 0.500000,
|
||||||
|
-0.500000, 0.000000, 4.000000, 8.000000, 0.427451, 0.427451, 0.427451,
|
||||||
|
1.000000, 0.000000, 0.000000, 2.000000, 4.000000, 6.000000, 0.415686,
|
||||||
|
0.415686, 0.415686, 1.000000, 0.395020, -0.133318, 0.420032, 4.000000,
|
||||||
|
6.533272, 0.423529, 0.423529, 0.423529, 1.000000, 0.388550, -0.103582,
|
||||||
|
0.445932, 4.000000, 6.414327,
|
||||||
|
0.423529, 0.423529, 0.423529, 1.000000, 0.388550, -0.103582, 0.445932,
|
||||||
|
4.000000, 6.414327, 0.427451, 0.427451, 0.427451, 1.000000, 0.383423,
|
||||||
|
-0.069344, 0.466541, 4.000000, 6.277375, 0.427451, 0.427451, 0.427451,
|
||||||
|
1.000000, 0.000000, 0.000000, 2.000000, 4.000000, 6.000000, 0.435294,
|
||||||
|
0.435294, 0.435294, 1.000000, 0.380371, -0.034595, 0.478689, 4.000000,
|
||||||
|
6.138380, 0.439216, 0.439216, 0.439216, 1.000000, 0.379272, 0.000000,
|
||||||
|
0.482673, 4.000000, 6.000000,
|
||||||
|
0.407843, 0.407843, 0.407843, 1.000000, 0.414673, -0.191394, 0.341301,
|
||||||
|
4.000000, 6.765576, 0.411765, 0.411765, 0.411765, 1.000000, 0.403687,
|
||||||
|
-0.162957, 0.385368, 4.000000, 6.651829, 0.364706, 0.364706, 0.364706,
|
||||||
|
1.000000, 0.500000, -0.500000, 0.000000, 4.000000, 8.000000, 0.415686,
|
||||||
|
0.415686, 0.415686, 1.000000, 0.395020, -0.133318, 0.420032, 4.000000,
|
||||||
|
6.533272,
|
||||||
|
0.400000, 0.400000, 0.400000, 1.000000, 0.438232, -0.232438, 0.247284,
|
||||||
|
4.000000, 6.929754, 0.403922, 0.403922, 0.403922, 1.000000, 0.425171,
|
||||||
|
-0.212276, 0.299425, 4.000000, 6.849104, 0.364706, 0.364706, 0.364706,
|
||||||
|
1.000000, 0.500000, -0.500000, 0.000000, 4.000000, 8.000000, 0.407843,
|
||||||
|
0.407843, 0.407843, 1.000000, 0.414673, -0.191394, 0.341301, 4.000000,
|
||||||
|
6.765576,
|
||||||
|
0.396078, 0.396078, 0.396078, 1.000000, 0.467285, -0.260554, 0.130636,
|
||||||
|
4.000000, 7.042214, 0.400000, 0.400000, 0.400000, 1.000000, 0.453857,
|
||||||
|
-0.250068, 0.184711, 4.000000, 7.000273, 0.364706, 0.364706, 0.364706,
|
||||||
|
1.000000, 0.500000, -0.500000, 0.000000, 4.000000, 8.000000, 0.400000,
|
||||||
|
0.400000, 0.400000, 1.000000, 0.438232, -0.232438, 0.247284, 4.000000,
|
||||||
|
6.929754,
|
||||||
|
0.396078, 0.396078, 0.396078, 1.000000, 0.500000, -0.270672, 0.000000,
|
||||||
|
4.000000, 7.082688, 0.396078, 0.396078, 0.396078, 1.000000, 0.482788,
|
||||||
|
-0.267902, 0.068730, 4.000000, 7.071609, 0.364706, 0.364706, 0.364706,
|
||||||
|
1.000000, 0.500000, -0.500000, 0.000000, 4.000000, 8.000000, 0.396078,
|
||||||
|
0.396078, 0.396078, 1.000000, 0.467285, -0.260554, 0.130636, 4.000000,
|
||||||
|
7.042214,
|
||||||
|
0.439216, 0.439216, 0.439216, 1.000000, 0.379272, 0.000000, 0.482673,
|
||||||
|
4.000000, 6.000000, 0.474510, 0.474510, 0.474510, 1.000000, 0.379272,
|
||||||
|
0.180448, 0.482673, 4.000000, 5.278208, 0.517647, 0.517647, 0.517647,
|
||||||
|
1.000000, 0.000000, 0.500000, 2.000000, 4.000000, 4.000000, 0.513726,
|
||||||
|
0.513726, 0.513726, 1.000000, 0.379272, 0.360896, 0.482673, 4.000000,
|
||||||
|
4.556417, 0.545098, 0.545098, 0.545098, 1.000000, 0.379272, 0.500000,
|
||||||
|
0.482673, 4.000000, 4.000000,
|
||||||
|
0.545098, 0.545098, 0.545098, 1.000000, 0.379272, 0.500000, 0.482673,
|
||||||
|
4.000000, 4.000000, 0.545098, 0.545098, 0.545098, 1.000000, 0.000000,
|
||||||
|
1.000000, 2.000000, 4.000000, 2.000000, 0.517647, 0.517647, 0.517647,
|
||||||
|
1.000000, 0.000000, 0.500000, 2.000000, 4.000000, 4.000000,
|
||||||
|
0.600000, 0.600000, 0.600000, 1.000000, 0.500000, 1.000000, 0.000000,
|
||||||
|
4.000000, 2.000000, 0.545098, 0.545098, 0.545098, 1.000000, 0.000000,
|
||||||
|
1.000000, 2.000000, 4.000000, 2.000000, 0.552941, 0.552941, 0.552941,
|
||||||
|
1.000000, 0.379272, 0.541344, 0.482673, 4.000000, 3.834625, 0.545098,
|
||||||
|
0.545098, 0.545098, 1.000000, 0.379272, 0.500000, 0.482673, 4.000000,
|
||||||
|
4.000000,
|
||||||
|
0.552941, 0.552941, 0.552941, 1.000000, 0.379272, 0.541344, 0.482673,
|
||||||
|
4.000000, 3.834625, 0.556863, 0.556863, 0.556863, 1.000000, 0.459717,
|
||||||
|
0.541344, 0.160891, 4.000000, 3.834625, 0.600000, 0.600000, 0.600000,
|
||||||
|
1.000000, 0.500000, 1.000000, 0.000000, 4.000000, 2.000000, 0.556863,
|
||||||
|
0.556863, 0.556863, 1.000000, 0.500000, 0.541344, 0.000000, 4.000000,
|
||||||
|
3.834625, 0.556863, 0.556863, 0.556863, 1.000000, 0.540283, 0.541344,
|
||||||
|
-0.160891, 4.000000, 3.834625,
|
||||||
|
0.396078, 0.396078, 0.396078, 1.000000, 0.517212, -0.267902, -0.068730,
|
||||||
|
4.000000, 7.071609, 0.396078, 0.396078, 0.396078, 1.000000, 0.500000,
|
||||||
|
-0.270672, 0.000000, 4.000000, 7.082688, 0.356863, 0.356863, 0.356863,
|
||||||
|
1.000000, 1.000000, -0.500000, -2.000000, 4.000000, 8.000000, 0.364706,
|
||||||
|
0.364706, 0.364706, 1.000000, 0.500000, -0.500000, 0.000000, 4.000000,
|
||||||
|
8.000000,
|
||||||
|
0.400000, 0.400000, 0.400000, 1.000000, 0.546143, -0.250068, -0.184711,
|
||||||
|
4.000000, 7.000273, 0.396078, 0.396078, 0.396078, 1.000000, 0.532715,
|
||||||
|
-0.260554, -0.130636, 4.000000, 7.042214, 0.356863, 0.356863, 0.356863,
|
||||||
|
1.000000, 1.000000, -0.500000, -2.000000, 4.000000, 8.000000, 0.396078,
|
||||||
|
0.396078, 0.396078, 1.000000, 0.517212, -0.267902, -0.068730, 4.000000,
|
||||||
|
7.071609,
|
||||||
|
0.403922, 0.403922, 0.403922, 1.000000, 0.574829, -0.212276, -0.299425,
|
||||||
|
4.000000, 6.849104, 0.400000, 0.400000, 0.400000, 1.000000, 0.561768,
|
||||||
|
-0.232438, -0.247284, 4.000000, 6.929754, 0.356863, 0.356863, 0.356863,
|
||||||
|
1.000000, 1.000000, -0.500000, -2.000000, 4.000000, 8.000000, 0.400000,
|
||||||
|
0.400000, 0.400000, 1.000000, 0.546143, -0.250068, -0.184711, 4.000000,
|
||||||
|
7.000273,
|
||||||
|
0.411765, 0.411765, 0.411765, 1.000000, 0.596313, -0.162957, -0.385368,
|
||||||
|
4.000000, 6.651829, 0.407843, 0.407843, 0.407843, 1.000000, 0.585327,
|
||||||
|
-0.191394, -0.341301, 4.000000, 6.765576, 0.356863, 0.356863, 0.356863,
|
||||||
|
1.000000, 1.000000, -0.500000, -2.000000, 4.000000, 8.000000, 0.403922,
|
||||||
|
0.403922, 0.403922, 1.000000, 0.574829, -0.212276, -0.299425, 4.000000,
|
||||||
|
6.849104,
|
||||||
|
0.423529, 0.423529, 0.423529, 1.000000, 0.611450, -0.103582, -0.445931,
|
||||||
|
4.000000, 6.414327, 0.415686, 0.415686, 0.415686, 1.000000, 0.604980,
|
||||||
|
-0.133318, -0.420033, 4.000000, 6.533272, 0.356863, 0.356863, 0.356863,
|
||||||
|
1.000000, 1.000000, -0.500000, -2.000000, 4.000000, 8.000000, 0.411765,
|
||||||
|
0.411765, 0.411765, 1.000000, 0.596313, -0.162957, -0.385368, 4.000000,
|
||||||
|
6.651829,
|
||||||
|
0.435294, 0.435294, 0.435294, 1.000000, 0.619629, -0.034595, -0.478689,
|
||||||
|
4.000000, 6.138380, 0.427451, 0.427451, 0.427451, 1.000000, 0.616577,
|
||||||
|
-0.069344, -0.466541, 4.000000, 6.277375, 0.356863, 0.356863, 0.356863,
|
||||||
|
1.000000, 1.000000, -0.500000, -2.000000, 4.000000, 8.000000, 0.423529,
|
||||||
|
0.423529, 0.423529, 1.000000, 0.611450, -0.103582, -0.445931, 4.000000,
|
||||||
|
6.414327,
|
||||||
|
0.513726, 0.513726, 0.513726, 1.000000, 0.620728, 0.360896, -0.482673,
|
||||||
|
4.000000, 4.556417, 0.474510, 0.474510, 0.474510, 1.000000, 0.620728,
|
||||||
|
0.180448, -0.482673, 4.000000, 5.278208, 0.427451, 0.427451, 0.427451,
|
||||||
|
1.000000, 1.000000, 0.000000, -2.000000, 4.000000, 6.000000, 0.439216,
|
||||||
|
0.439216, 0.439216, 1.000000, 0.620728, 0.000000, -0.482673, 4.000000,
|
||||||
|
6.000000, 0.356863, 0.356863, 0.356863, 1.000000, 1.000000, -0.500000,
|
||||||
|
-2.000000, 4.000000, 8.000000, 0.435294, 0.435294, 0.435294, 1.000000,
|
||||||
|
0.619629, -0.034595, -0.478689, 4.000000, 6.138380,
|
||||||
|
0.333333, 0.333333, 0.333333, 1.000000, 1.500000, -0.500000, -4.000000,
|
||||||
|
4.000000, 8.000000, 0.388235, 0.388235, 0.388235, 1.000000, 1.500000,
|
||||||
|
0.000000, -4.000000, 4.000000, 6.000000, 0.427451, 0.427451, 0.427451,
|
||||||
|
1.000000, 1.000000, 0.000000, -2.000000, 4.000000, 6.000000, 0.517647,
|
||||||
|
0.517647, 0.517647, 1.000000, 1.000000, 0.500000, -2.000000, 4.000000,
|
||||||
|
4.000000, 0.513726, 0.513726, 0.513726, 1.000000, 0.620728, 0.360896,
|
||||||
|
-0.482673, 4.000000, 4.556417, 0.545098, 0.545098, 0.545098, 1.000000,
|
||||||
|
0.620728, 0.500000, -0.482673, 4.000000, 4.000000,
|
||||||
|
0.333333, 0.333333, 0.333333, 1.000000, 1.500000, -0.500000, -4.000000,
|
||||||
|
4.000000, 8.000000, 0.427451, 0.427451, 0.427451, 1.000000, 1.000000,
|
||||||
|
0.000000, -2.000000, 4.000000, 6.000000, 0.356863, 0.356863, 0.356863,
|
||||||
|
1.000000, 1.000000, -0.500000, -2.000000, 4.000000, 8.000000,
|
||||||
|
0.556863, 0.556863, 0.556863, 1.000000, 0.540283, 0.541344, -0.160891,
|
||||||
|
4.000000, 3.834625, 0.552941, 0.552941, 0.552941, 1.000000, 0.620728,
|
||||||
|
0.541344, -0.482673, 4.000000, 3.834625, 0.545098, 0.545098, 0.545098,
|
||||||
|
1.000000, 1.000000, 1.000000, -2.000000, 4.000000, 2.000000, 0.517647,
|
||||||
|
0.517647, 0.517647, 1.000000, 1.000000, 0.500000, -2.000000, 4.000000,
|
||||||
|
4.000000, 0.450980, 0.450980, 0.450980, 1.000000, 1.500000, 0.500000,
|
||||||
|
-4.000000, 4.000000, 4.000000, 0.388235, 0.388235, 0.388235, 1.000000,
|
||||||
|
1.500000, 0.000000, -4.000000, 4.000000, 6.000000,
|
||||||
|
0.517647, 0.517647, 0.517647, 1.000000, 1.000000, 0.500000, -2.000000,
|
||||||
|
4.000000, 4.000000, 0.552941, 0.552941, 0.552941, 1.000000, 0.620728,
|
||||||
|
0.541344, -0.482673, 4.000000, 3.834625, 0.545098, 0.545098, 0.545098,
|
||||||
|
1.000000, 0.620728, 0.500000, -0.482673, 4.000000, 4.000000,
|
||||||
|
0.450980, 0.450980, 0.450980, 1.000000, 1.500000, 0.500000, -4.000000,
|
||||||
|
4.000000, 4.000000, 0.435294, 0.435294, 0.435294, 1.000000, 1.500000,
|
||||||
|
1.000000, -4.000000, 4.000000, 2.000000, 0.545098, 0.545098, 0.545098,
|
||||||
|
1.000000, 1.000000, 1.000000, -2.000000, 4.000000, 2.000000,
|
||||||
|
0.439216, 0.439216, 0.439216, 1.000000, 0.379272, 0.000000, 0.482673,
|
||||||
|
4.000000, 6.000000, 0.517647, 0.517647, 0.517647, 1.000000, 0.000000,
|
||||||
|
0.500000, 2.000000, 4.000000, 4.000000, 0.427451, 0.427451, 0.427451,
|
||||||
|
1.000000, 0.000000, 0.000000, 2.000000, 4.000000, 6.000000,
|
||||||
|
0.556863, 0.556863, 0.556863, 1.000000, 0.540283, 0.541344, -0.160891,
|
||||||
|
4.000000, 3.834625, 0.545098, 0.545098, 0.545098, 1.000000, 1.000000,
|
||||||
|
1.000000, -2.000000, 4.000000, 2.000000, 0.600000, 0.600000, 0.600000,
|
||||||
|
1.000000, 0.500000, 1.000000, 0.000000, 4.000000, 2.000000
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* Object: skin_12 */
|
||||||
|
|
||||||
|
static const int striplength_skin_12[] = {
|
||||||
|
12, 12, 12, 12, 12, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
static const float stripdata_skin_12[] = {
|
||||||
|
0.498039, 0.498039, 0.498039, 1.000000, -0.099976, 1.500000, -2.400000,
|
||||||
|
-4.000000, -0.000002, 0.337255, 0.337255, 0.337255, 1.000000, -0.500000,
|
||||||
|
1.500000, -4.000000, -4.000000, -0.000002, 0.568627, 0.568627, 0.568627,
|
||||||
|
1.000000, -0.099976, 1.100000, -2.400000, -4.000000, 1.599999, 0.341176,
|
||||||
|
0.341176, 0.341176, 1.000000, -0.500000, 1.100000, -4.000000, -4.000000,
|
||||||
|
1.599999, 0.498039, 0.498039, 0.498039, 1.000000, -0.099976, 0.700000,
|
||||||
|
-2.400000, -4.000000, 3.200000, 0.325490, 0.325490, 0.325490, 1.000000,
|
||||||
|
-0.500000, 0.700000, -4.000000, -4.000000, 3.199999, 0.352941, 0.352941,
|
||||||
|
0.352941, 1.000000, -0.099976, 0.300000, -2.400000, -4.000000, 4.800000,
|
||||||
|
0.282353, 0.282353, 0.282353, 1.000000, -0.500000, 0.300000, -4.000000,
|
||||||
|
-4.000000, 4.800000, 0.282353, 0.282353, 0.282353, 1.000000, -0.099976,
|
||||||
|
-0.100000, -2.400000, -4.000000, 6.400001, 0.254902, 0.254902, 0.254902,
|
||||||
|
1.000000, -0.500000, -0.100000, -4.000000, -4.000000, 6.400000,
|
||||||
|
0.239216, 0.239216, 0.239216, 1.000000, -0.099976, -0.500000, -2.400000,
|
||||||
|
-4.000000, 8.000000, 0.227451, 0.227451, 0.227451, 1.000000, -0.500000,
|
||||||
|
-0.500000, -4.000000, -4.000000, 8.000000,
|
||||||
|
0.239216, 0.239216, 0.239216, 1.000000, 1.099976, -0.500000, 2.400001,
|
||||||
|
-4.000000, 8.000000, 0.227451, 0.227451, 0.227451, 1.000000, 1.500000,
|
||||||
|
-0.500000, 4.000002, -4.000000, 8.000000, 0.282353, 0.282353, 0.282353,
|
||||||
|
1.000000, 1.099976, -0.100000, 2.400001, -4.000000, 6.400001, 0.254902,
|
||||||
|
0.254902, 0.254902, 1.000000, 1.500000, -0.100000, 4.000002, -4.000000,
|
||||||
|
6.400001, 0.352941, 0.352941, 0.352941, 1.000000, 1.099976, 0.300000,
|
||||||
|
2.400002, -4.000000, 4.800001, 0.282353, 0.282353, 0.282353, 1.000000,
|
||||||
|
1.500000, 0.300000, 4.000002, -4.000000, 4.800001, 0.498039, 0.498039,
|
||||||
|
0.498039, 1.000000, 1.099976, 0.700000, 2.400002, -4.000000, 3.200000,
|
||||||
|
0.321569, 0.321569, 0.321569, 1.000000, 1.500000, 0.700000, 4.000003,
|
||||||
|
-4.000000, 3.200000, 0.568627, 0.568627, 0.568627, 1.000000, 1.099976,
|
||||||
|
1.100000, 2.400002, -4.000000, 1.599999, 0.341176, 0.341176, 0.341176,
|
||||||
|
1.000000, 1.500000, 1.100000, 4.000003, -4.000000, 1.599999, 0.494118,
|
||||||
|
0.494118, 0.494118, 1.000000, 1.099976, 1.500000, 2.400003, -4.000000,
|
||||||
|
-0.000002, 0.337255, 0.337255, 0.337255, 1.000000, 1.500000, 1.500000,
|
||||||
|
4.000004, -4.000000, -0.000002,
|
||||||
|
0.639216, 0.639216, 0.639216, 1.000000, 0.300049, 1.500000, -0.799999,
|
||||||
|
-4.000000, -0.000002, 0.498039, 0.498039, 0.498039, 1.000000, -0.099976,
|
||||||
|
1.500000, -2.400000, -4.000000, -0.000002, 0.858824, 0.858824, 0.858824,
|
||||||
|
1.000000, 0.300049, 1.100000, -0.799999, -4.000000, 1.599999, 0.568627,
|
||||||
|
0.568627, 0.568627, 1.000000, -0.099976, 1.100000, -2.400000, -4.000000,
|
||||||
|
1.599999, 0.686275, 0.686275, 0.686275, 1.000000, 0.300049, 0.700000,
|
||||||
|
-0.799999, -4.000000, 3.200000, 0.498039, 0.498039, 0.498039, 1.000000,
|
||||||
|
-0.099976, 0.700000, -2.400000, -4.000000, 3.200000, 0.419608, 0.419608,
|
||||||
|
0.419608, 1.000000, 0.300049, 0.300000, -0.800000, -4.000000, 4.800000,
|
||||||
|
0.352941, 0.352941, 0.352941, 1.000000, -0.099976, 0.300000, -2.400000,
|
||||||
|
-4.000000, 4.800000, 0.298039, 0.298039, 0.298039, 1.000000, 0.300049,
|
||||||
|
-0.100000, -0.800000, -4.000000, 6.400001, 0.282353, 0.282353, 0.282353,
|
||||||
|
1.000000, -0.099976, -0.100000, -2.400000, -4.000000, 6.400001,
|
||||||
|
0.247059, 0.247059, 0.247059, 1.000000, 0.300049, -0.500000, -0.800000,
|
||||||
|
-4.000000, 8.000000, 0.239216, 0.239216, 0.239216, 1.000000, -0.099976,
|
||||||
|
-0.500000, -2.400000, -4.000000, 8.000000,
|
||||||
|
0.639216, 0.639216, 0.639216, 1.000000, 0.699951, 1.500000, 0.800002,
|
||||||
|
-4.000000, -0.000002, 0.639216, 0.639216, 0.639216, 1.000000, 0.300049,
|
||||||
|
1.500000, -0.799999, -4.000000, -0.000002, 0.858824, 0.858824, 0.858824,
|
||||||
|
1.000000, 0.699951, 1.100000, 0.800001, -4.000000, 1.599999, 0.858824,
|
||||||
|
0.858824, 0.858824, 1.000000, 0.300049, 1.100000, -0.799999, -4.000000,
|
||||||
|
1.599999, 0.686275, 0.686275, 0.686275, 1.000000, 0.699951, 0.700000,
|
||||||
|
0.800001, -4.000000, 3.200000, 0.686275, 0.686275, 0.686275, 1.000000,
|
||||||
|
0.300049, 0.700000, -0.799999, -4.000000, 3.200000, 0.419608, 0.419608,
|
||||||
|
0.419608, 1.000000, 0.699951, 0.300000, 0.800001, -4.000000, 4.800001,
|
||||||
|
0.419608, 0.419608, 0.419608, 1.000000, 0.300049, 0.300000, -0.800000,
|
||||||
|
-4.000000, 4.800000, 0.298039, 0.298039, 0.298039, 1.000000, 0.699951,
|
||||||
|
-0.100000, 0.800001, -4.000000, 6.400001, 0.298039, 0.298039, 0.298039,
|
||||||
|
1.000000, 0.300049, -0.100000, -0.800000, -4.000000, 6.400001, 0.247059,
|
||||||
|
0.247059, 0.247059, 1.000000, 0.699951, -0.500000, 0.800000, -4.000000,
|
||||||
|
8.000000, 0.247059, 0.247059, 0.247059, 1.000000, 0.300049, -0.500000,
|
||||||
|
-0.800000, -4.000000, 8.000000,
|
||||||
|
0.494118, 0.494118, 0.494118, 1.000000, 1.099976, 1.500000, 2.400003,
|
||||||
|
-4.000000, -0.000002, 0.639216, 0.639216, 0.639216, 1.000000, 0.699951,
|
||||||
|
1.500000, 0.800002, -4.000000, -0.000002, 0.568627, 0.568627, 0.568627,
|
||||||
|
1.000000, 1.099976, 1.100000, 2.400002, -4.000000, 1.599999, 0.858824,
|
||||||
|
0.858824, 0.858824, 1.000000, 0.699951, 1.100000, 0.800001, -4.000000,
|
||||||
|
1.599999, 0.498039, 0.498039, 0.498039, 1.000000, 1.099976, 0.700000,
|
||||||
|
2.400002, -4.000000, 3.200000, 0.686275, 0.686275, 0.686275, 1.000000,
|
||||||
|
0.699951, 0.700000, 0.800001, -4.000000, 3.200000, 0.352941, 0.352941,
|
||||||
|
0.352941, 1.000000, 1.099976, 0.300000, 2.400002, -4.000000, 4.800001,
|
||||||
|
0.419608, 0.419608, 0.419608, 1.000000, 0.699951, 0.300000, 0.800001,
|
||||||
|
-4.000000, 4.800001, 0.282353, 0.282353, 0.282353, 1.000000, 1.099976,
|
||||||
|
-0.100000, 2.400001, -4.000000, 6.400001, 0.298039, 0.298039, 0.298039,
|
||||||
|
1.000000, 0.699951, -0.100000, 0.800001, -4.000000, 6.400001, 0.239216,
|
||||||
|
0.239216, 0.239216, 1.000000, 1.099976, -0.500000, 2.400001, -4.000000,
|
||||||
|
8.000000, 0.247059, 0.247059, 0.247059, 1.000000, 0.699951, -0.500000,
|
||||||
|
0.800000, -4.000000, 8.000000
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* Object: skin_11 */
|
||||||
|
|
||||||
|
static const int striplength_skin_11[] = {
|
||||||
|
12, 12, 12, 12, 12, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
static const float stripdata_skin_11[] = {
|
||||||
|
0.145098, 0.145098, 0.145098, 1.000000, -0.099976, 1.500000, -2.400000,
|
||||||
|
4.000002, 0.000000, 0.141176, 0.141176, 0.141176, 1.000000, -0.500000,
|
||||||
|
1.500000, -4.000000, 4.000002, 0.000000, 0.176471, 0.176471, 0.176471,
|
||||||
|
1.000000, -0.099976, 1.100000, -2.400000, 2.400001, 0.000000, 0.145098,
|
||||||
|
0.145098, 0.145098, 1.000000, -0.500000, 1.100000, -4.000000, 2.400001,
|
||||||
|
0.000000, 0.341176, 0.341176, 0.341176, 1.000000, -0.099976, 0.700000,
|
||||||
|
-2.400000, 0.800000, 0.000000, 0.188235, 0.188235, 0.188235, 1.000000,
|
||||||
|
-0.500000, 0.700000, -4.000000, 0.800000, 0.000000, 0.450980, 0.450980,
|
||||||
|
0.450980, 1.000000, -0.099976, 0.300000, -2.400000, -0.800000, 0.000000,
|
||||||
|
0.247059, 0.247059, 0.247059, 1.000000, -0.500000, 0.300000, -4.000000,
|
||||||
|
-0.800000, 0.000000, 0.439216, 0.439216, 0.439216, 1.000000, -0.099976,
|
||||||
|
-0.100000, -2.400000, -2.400000, 0.000000, 0.270588, 0.270588, 0.270588,
|
||||||
|
1.000000, -0.500000, -0.100000, -4.000000, -2.400000, 0.000000,
|
||||||
|
0.364706, 0.364706, 0.364706, 1.000000, -0.099976, -0.500000, -2.400000,
|
||||||
|
-4.000000, 0.000000, 0.258824, 0.258824, 0.258824, 1.000000, -0.500000,
|
||||||
|
-0.500000, -4.000000, -4.000000, 0.000000,
|
||||||
|
0.364706, 0.364706, 0.364706, 1.000000, 1.099976, -0.500000, 2.400001,
|
||||||
|
-4.000000, 0.000000, 0.258824, 0.258824, 0.258824, 1.000000, 1.500000,
|
||||||
|
-0.500000, 4.000002, -4.000000, 0.000000, 0.439216, 0.439216, 0.439216,
|
||||||
|
1.000000, 1.099976, -0.100000, 2.400001, -2.400001, 0.000000, 0.270588,
|
||||||
|
0.270588, 0.270588, 1.000000, 1.500000, -0.100000, 4.000002, -2.400001,
|
||||||
|
0.000000, 0.454902, 0.454902, 0.454902, 1.000000, 1.099976, 0.300000,
|
||||||
|
2.400002, -0.800000, 0.000000, 0.247059, 0.247059, 0.247059, 1.000000,
|
||||||
|
1.500000, 0.300000, 4.000002, -0.800000, 0.000000, 0.341176, 0.341176,
|
||||||
|
0.341176, 1.000000, 1.099976, 0.700000, 2.400002, 0.800000, 0.000000,
|
||||||
|
0.184314, 0.184314, 0.184314, 1.000000, 1.500000, 0.700000, 4.000003,
|
||||||
|
0.800000, 0.000000, 0.176471, 0.176471, 0.176471, 1.000000, 1.099976,
|
||||||
|
1.100000, 2.400002, 2.400001, 0.000000, 0.145098, 0.145098, 0.145098,
|
||||||
|
1.000000, 1.500000, 1.100000, 4.000003, 2.400001, 0.000000, 0.145098,
|
||||||
|
0.145098, 0.145098, 1.000000, 1.099976, 1.500000, 2.400003, 4.000003,
|
||||||
|
0.000000, 0.141176, 0.141176, 0.141176, 1.000000, 1.500000, 1.500000,
|
||||||
|
4.000004, 4.000002, 0.000000,
|
||||||
|
0.145098, 0.145098, 0.145098, 1.000000, 0.300049, 1.500000, -0.799999,
|
||||||
|
4.000002, 0.000000, 0.145098, 0.145098, 0.145098, 1.000000, -0.099976,
|
||||||
|
1.500000, -2.400000, 4.000002, 0.000000, 0.262745, 0.262745, 0.262745,
|
||||||
|
1.000000, 0.300049, 1.100000, -0.799999, 2.400001, 0.000000, 0.176471,
|
||||||
|
0.176471, 0.176471, 1.000000, -0.099976, 1.100000, -2.400000, 2.400001,
|
||||||
|
0.000000, 0.580392, 0.580392, 0.580392, 1.000000, 0.300049, 0.700000,
|
||||||
|
-0.799999, 0.800000, 0.000000, 0.341176, 0.341176, 0.341176, 1.000000,
|
||||||
|
-0.099976, 0.700000, -2.400000, 0.800000, 0.000000, 0.709804, 0.709804,
|
||||||
|
0.709804, 1.000000, 0.300049, 0.300000, -0.800000, -0.800000, 0.000000,
|
||||||
|
0.450980, 0.450980, 0.450980, 1.000000, -0.099976, 0.300000, -2.400000,
|
||||||
|
-0.800000, 0.000000, 0.627451, 0.627451, 0.627451, 1.000000, 0.300049,
|
||||||
|
-0.100000, -0.800000, -2.400001, 0.000000, 0.439216, 0.439216, 0.439216,
|
||||||
|
1.000000, -0.099976, -0.100000, -2.400000, -2.400000, 0.000000,
|
||||||
|
0.458824, 0.458824, 0.458824, 1.000000, 0.300049, -0.500000, -0.800000,
|
||||||
|
-4.000000, 0.000000, 0.364706, 0.364706, 0.364706, 1.000000, -0.099976,
|
||||||
|
-0.500000, -2.400000, -4.000000, 0.000000,
|
||||||
|
0.145098, 0.145098, 0.145098, 1.000000, 0.699951, 1.500000, 0.800002,
|
||||||
|
4.000002, 0.000000, 0.145098, 0.145098, 0.145098, 1.000000, 0.300049,
|
||||||
|
1.500000, -0.799999, 4.000002, 0.000000, 0.262745, 0.262745, 0.262745,
|
||||||
|
1.000000, 0.699951, 1.100000, 0.800001, 2.400001, 0.000000, 0.262745,
|
||||||
|
0.262745, 0.262745, 1.000000, 0.300049, 1.100000, -0.799999, 2.400001,
|
||||||
|
0.000000, 0.580392, 0.580392, 0.580392, 1.000000, 0.699951, 0.700000,
|
||||||
|
0.800001, 0.800000, 0.000000, 0.580392, 0.580392, 0.580392, 1.000000,
|
||||||
|
0.300049, 0.700000, -0.799999, 0.800000, 0.000000, 0.713726, 0.713726,
|
||||||
|
0.713726, 1.000000, 0.699951, 0.300000, 0.800001, -0.800000, 0.000000,
|
||||||
|
0.709804, 0.709804, 0.709804, 1.000000, 0.300049, 0.300000, -0.800000,
|
||||||
|
-0.800000, 0.000000, 0.631373, 0.631373, 0.631373, 1.000000, 0.699951,
|
||||||
|
-0.100000, 0.800001, -2.400001, 0.000000, 0.627451, 0.627451, 0.627451,
|
||||||
|
1.000000, 0.300049, -0.100000, -0.800000, -2.400001, 0.000000, 0.458824,
|
||||||
|
0.458824, 0.458824, 1.000000, 0.699951, -0.500000, 0.800000, -4.000000,
|
||||||
|
0.000000, 0.458824, 0.458824, 0.458824, 1.000000, 0.300049, -0.500000,
|
||||||
|
-0.800000, -4.000000, 0.000000,
|
||||||
|
0.145098, 0.145098, 0.145098, 1.000000, 1.099976, 1.500000, 2.400003,
|
||||||
|
4.000003, 0.000000, 0.145098, 0.145098, 0.145098, 1.000000, 0.699951,
|
||||||
|
1.500000, 0.800002, 4.000002, 0.000000, 0.176471, 0.176471, 0.176471,
|
||||||
|
1.000000, 1.099976, 1.100000, 2.400002, 2.400001, 0.000000, 0.262745,
|
||||||
|
0.262745, 0.262745, 1.000000, 0.699951, 1.100000, 0.800001, 2.400001,
|
||||||
|
0.000000, 0.341176, 0.341176, 0.341176, 1.000000, 1.099976, 0.700000,
|
||||||
|
2.400002, 0.800000, 0.000000, 0.580392, 0.580392, 0.580392, 1.000000,
|
||||||
|
0.699951, 0.700000, 0.800001, 0.800000, 0.000000, 0.454902, 0.454902,
|
||||||
|
0.454902, 1.000000, 1.099976, 0.300000, 2.400002, -0.800000, 0.000000,
|
||||||
|
0.713726, 0.713726, 0.713726, 1.000000, 0.699951, 0.300000, 0.800001,
|
||||||
|
-0.800000, 0.000000, 0.439216, 0.439216, 0.439216, 1.000000, 1.099976,
|
||||||
|
-0.100000, 2.400001, -2.400001, 0.000000, 0.631373, 0.631373, 0.631373,
|
||||||
|
1.000000, 0.699951, -0.100000, 0.800001, -2.400001, 0.000000, 0.364706,
|
||||||
|
0.364706, 0.364706, 1.000000, 1.099976, -0.500000, 2.400001, -4.000000,
|
||||||
|
0.000000, 0.458824, 0.458824, 0.458824, 1.000000, 0.699951, -0.500000,
|
||||||
|
0.800000, -4.000000, 0.000000
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* Object: skin_9 */
|
||||||
|
|
||||||
|
static const int striplength_skin_9[] = {
|
||||||
|
18, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
static const float stripdata_skin_9[] = {
|
||||||
|
0.384314, 0.384314, 0.384314, 1.000000, -0.500000, 1.500000, -4.000000,
|
||||||
|
4.000000, 8.000000, 0.384314, 0.384314, 0.384314, 1.000000, 1.500000,
|
||||||
|
1.500000, 4.000000, 4.000000, 8.000000, 0.376471, 0.376471, 0.376471,
|
||||||
|
1.000000, -0.500000, 1.250000, -4.000000, 3.695518, 9.530733, 0.403922,
|
||||||
|
0.403922, 0.403922, 1.000000, 1.500000, 1.250000, 4.000000, 3.695518,
|
||||||
|
9.530733, 0.415686, 0.415686, 0.415686, 1.000000, -0.500000, 1.000000,
|
||||||
|
-4.000000, 2.828427, 10.828427, 0.431373, 0.431373, 0.431373, 1.000000,
|
||||||
|
1.500000, 1.000000, 4.000000, 2.828427, 10.828427, 0.435294, 0.435294,
|
||||||
|
0.435294, 1.000000, -0.500000, 0.750000, -4.000000, 1.530734, 11.695518,
|
||||||
|
0.443137, 0.443137, 0.443137, 1.000000, 1.500000, 0.750000, 4.000000,
|
||||||
|
1.530734, 11.695518, 0.439216, 0.439216, 0.439216, 1.000000, -0.500000,
|
||||||
|
0.500000, -4.000000, 0.000000, 12.000000, 0.435294, 0.435294, 0.435294,
|
||||||
|
1.000000, 1.500000, 0.500000, 4.000000, 0.000000, 12.000000, 0.427451,
|
||||||
|
0.427451, 0.427451, 1.000000, -0.500000, 0.250000, -4.000000, -1.530734,
|
||||||
|
11.695518, 0.411765, 0.411765, 0.411765, 1.000000, 1.500000, 0.250000,
|
||||||
|
4.000000, -1.530734, 11.695518, 0.396078, 0.396078, 0.396078, 1.000000,
|
||||||
|
-0.500000, 0.000000, -4.000000, -2.828427, 10.828427, 0.368627,
|
||||||
|
0.368627, 0.368627, 1.000000, 1.500000, 0.000000, 4.000000, -2.828427,
|
||||||
|
10.828427, 0.341176, 0.341176, 0.341176, 1.000000, -0.500000, -0.250000,
|
||||||
|
-4.000000, -3.695518, 9.530733, 0.301961, 0.301961, 0.301961, 1.000000,
|
||||||
|
1.500000, -0.250000, 4.000000, -3.695518, 9.530733, 0.294118, 0.294118,
|
||||||
|
0.294118, 1.000000, -0.500000, -0.500000, -4.000000, -4.000000,
|
||||||
|
8.000000, 0.294118, 0.294118, 0.294118, 1.000000, 1.500000, -0.500000,
|
||||||
|
4.000000, -4.000000, 8.000000
|
||||||
|
};
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: winpos.c,v 1.2 2000/06/27 17:04:43 brianp Exp $ */
|
/* $Id: winpos.c,v 1.3 2000/12/24 22:53:54 pesco Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Example of how to use the GL_MESA_window_pos extension.
|
* Example of how to use the GL_MESA_window_pos extension.
|
||||||
@@ -8,6 +8,32 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: winpos.c,v $
|
* $Log: winpos.c,v $
|
||||||
|
* Revision 1.3 2000/12/24 22:53:54 pesco
|
||||||
|
* * demos/Makefile.am (INCLUDES): Added -I$(top_srcdir)/util.
|
||||||
|
* * demos/Makefile.X11, demos/Makefile.BeOS-R4, demos/Makefile.cygnus:
|
||||||
|
* Essentially the same.
|
||||||
|
* Program files updated to include "readtex.c", not "../util/readtex.c".
|
||||||
|
* * demos/reflect.c: Likewise for "showbuffer.c".
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* * Makefile.am (EXTRA_DIST): Added top-level regular files.
|
||||||
|
*
|
||||||
|
* * include/GL/Makefile.am (INC_X11): Added glxext.h.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* * src/GGI/include/ggi/mesa/Makefile.am (EXTRA_HEADERS): Include
|
||||||
|
* Mesa GGI headers in dist even if HAVE_GGI is not given.
|
||||||
|
*
|
||||||
|
* * configure.in: Look for GLUT and demo source dirs in $srcdir.
|
||||||
|
*
|
||||||
|
* * src/swrast/Makefile.am (libMesaSwrast_la_SOURCES): Set to *.[ch].
|
||||||
|
* More source list updates in various Makefile.am's.
|
||||||
|
*
|
||||||
|
* * Makefile.am (dist-hook): Remove CVS directory from distribution.
|
||||||
|
* (DIST_SUBDIRS): List all possible subdirs here.
|
||||||
|
* (SUBDIRS): Only list subdirs selected for build again.
|
||||||
|
* The above two applied to all subdir Makefile.am's also.
|
||||||
|
*
|
||||||
* Revision 1.2 2000/06/27 17:04:43 brianp
|
* Revision 1.2 2000/06/27 17:04:43 brianp
|
||||||
* fixed compiler warnings
|
* fixed compiler warnings
|
||||||
*
|
*
|
||||||
@@ -36,7 +62,7 @@
|
|||||||
#define GL_GLEXT_LEGACY
|
#define GL_GLEXT_LEGACY
|
||||||
#include "GL/glut.h"
|
#include "GL/glut.h"
|
||||||
|
|
||||||
#include "../util/readtex.c" /* a hack, I know */
|
#include "readtex.c" /* a hack, I know */
|
||||||
|
|
||||||
#define IMAGE_FILE "../images/girl.rgb"
|
#define IMAGE_FILE "../images/girl.rgb"
|
||||||
|
|
||||||
|
|||||||
BIN
progs/images/wrs_logo.rgb
Normal file
BIN
progs/images/wrs_logo.rgb
Normal file
Binary file not shown.
@@ -42,6 +42,7 @@
|
|||||||
* two rectangles. This program clamps the texture, if
|
* two rectangles. This program clamps the texture, if
|
||||||
* the texture coordinates fall outside 0.0 and 1.0.
|
* the texture coordinates fall outside 0.0 and 1.0.
|
||||||
*/
|
*/
|
||||||
|
#include <stdlib.h>
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
|
|
||||||
/* Create checkerboard texture */
|
/* Create checkerboard texture */
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ selectFog(int mode)
|
|||||||
/* falls through */
|
/* falls through */
|
||||||
case GL_EXP2:
|
case GL_EXP2:
|
||||||
case GL_EXP:
|
case GL_EXP:
|
||||||
glFogi(GL_FOG_MODE, mode);
|
glFogiv(GL_FOG_MODE, (int *) &mode);
|
||||||
glutPostRedisplay();
|
glutPostRedisplay();
|
||||||
break;
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
@@ -190,7 +190,7 @@ main(int argc, char **argv)
|
|||||||
glutDisplayFunc(display);
|
glutDisplayFunc(display);
|
||||||
glutCreateMenu(selectFog);
|
glutCreateMenu(selectFog);
|
||||||
glutAddMenuEntry("Fog EXP", GL_EXP);
|
glutAddMenuEntry("Fog EXP", GL_EXP);
|
||||||
glutAddMenuEntry("Fog EXP2", GL_EXP2);
|
glutAddMenuEntry("Fog EXP2", /*GL_EXP2*/ 0xffff);
|
||||||
glutAddMenuEntry("Fog LINEAR", GL_LINEAR);
|
glutAddMenuEntry("Fog LINEAR", GL_LINEAR);
|
||||||
glutAddMenuEntry("Quit", 0);
|
glutAddMenuEntry("Quit", 0);
|
||||||
glutAttachMenu(GLUT_RIGHT_BUTTON);
|
glutAttachMenu(GLUT_RIGHT_BUTTON);
|
||||||
|
|||||||
@@ -39,6 +39,7 @@
|
|||||||
* hello.c
|
* hello.c
|
||||||
* This is a simple, introductory OpenGL program.
|
* This is a simple, introductory OpenGL program.
|
||||||
*/
|
*/
|
||||||
|
#include <stdlib.h>
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
|
|
||||||
void display(void)
|
void display(void)
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ void drawSquares(GLenum mode)
|
|||||||
void processHits (GLint hits, GLuint buffer[])
|
void processHits (GLint hits, GLuint buffer[])
|
||||||
{
|
{
|
||||||
unsigned int i, j;
|
unsigned int i, j;
|
||||||
GLuint ii, jj, names, *ptr;
|
GLuint ii = 0, jj = 0, names, *ptr;
|
||||||
|
|
||||||
printf ("hits = %d\n", hits);
|
printf ("hits = %d\n", hits);
|
||||||
ptr = (GLuint *) buffer;
|
ptr = (GLuint *) buffer;
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#ifdef GL_VERSION_1_1
|
#ifdef GL_VERSION_1_1
|
||||||
GLuint list;
|
GLuint list;
|
||||||
@@ -149,7 +150,7 @@ static void Benchmark( float xdiff, float ydiff )
|
|||||||
{
|
{
|
||||||
int startTime, endTime;
|
int startTime, endTime;
|
||||||
int draws;
|
int draws;
|
||||||
double seconds, fps, triPerSecond;
|
double seconds, fps;
|
||||||
|
|
||||||
printf("Benchmarking...\n");
|
printf("Benchmarking...\n");
|
||||||
|
|
||||||
|
|||||||
@@ -43,6 +43,21 @@
|
|||||||
* of the scene. Within this mask, a different model
|
* of the scene. Within this mask, a different model
|
||||||
* (a sphere) is drawn in a different color.
|
* (a sphere) is drawn in a different color.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* !!! NOTE !!!
|
||||||
|
*
|
||||||
|
* This demo is poorly written. The stencil buffer should be
|
||||||
|
* redrawn in display(), not in the myReshape() function.
|
||||||
|
* The reason is if the window gets "damaged" then the stencil buffer
|
||||||
|
* contents will be in an undefined state (myReshape is not called when
|
||||||
|
* a window is damaged and needs to be redrawn). If the stencil buffer
|
||||||
|
* contents are undefined, the results of display() are unpredictable.
|
||||||
|
*
|
||||||
|
* -Brian
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
|
|
||||||
@@ -90,6 +105,8 @@ void display(void)
|
|||||||
{
|
{
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
|
glStencilOp (GL_KEEP, GL_KEEP, GL_KEEP);
|
||||||
|
|
||||||
/* draw blue sphere where the stencil is 1 */
|
/* draw blue sphere where the stencil is 1 */
|
||||||
glStencilFunc (GL_EQUAL, 0x1, 0x1);
|
glStencilFunc (GL_EQUAL, 0x1, 0x1);
|
||||||
glCallList (BLUEMAT);
|
glCallList (BLUEMAT);
|
||||||
@@ -97,7 +114,6 @@ void display(void)
|
|||||||
|
|
||||||
/* draw the tori where the stencil is not 1 */
|
/* draw the tori where the stencil is not 1 */
|
||||||
glStencilFunc (GL_NOTEQUAL, 0x1, 0x1);
|
glStencilFunc (GL_NOTEQUAL, 0x1, 0x1);
|
||||||
glStencilOp (GL_KEEP, GL_KEEP, GL_KEEP);
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glRotatef (45.0, 0.0, 0.0, 1.0);
|
glRotatef (45.0, 0.0, 0.0, 1.0);
|
||||||
glRotatef (45.0, 0.0, 1.0, 0.0);
|
glRotatef (45.0, 0.0, 1.0, 0.0);
|
||||||
@@ -110,6 +126,7 @@ void display(void)
|
|||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
glFlush();
|
glFlush();
|
||||||
|
glutSwapBuffers();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Whenever the window is reshaped, redefine the
|
/* Whenever the window is reshaped, redefine the
|
||||||
@@ -164,7 +181,7 @@ key(unsigned char k, int x, int y)
|
|||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
glutInit(&argc, argv);
|
glutInit(&argc, argv);
|
||||||
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH | GLUT_STENCIL);
|
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH | GLUT_STENCIL);
|
||||||
glutInitWindowSize (400, 400);
|
glutInitWindowSize (400, 400);
|
||||||
glutCreateWindow (argv[0]);
|
glutCreateWindow (argv[0]);
|
||||||
myinit ();
|
myinit ();
|
||||||
|
|||||||
@@ -41,6 +41,7 @@
|
|||||||
* This program draws a NURBS surface in the shape of a
|
* This program draws a NURBS surface in the shape of a
|
||||||
* symmetrical hill.
|
* symmetrical hill.
|
||||||
*/
|
*/
|
||||||
|
#include <stdlib.h>
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
|
|
||||||
GLfloat ctlpoints[4][4][3];
|
GLfloat ctlpoints[4][4][3];
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ void makeCheckImage(void)
|
|||||||
|
|
||||||
for (i = 0; i < checkImageHeight; i++) {
|
for (i = 0; i < checkImageHeight; i++) {
|
||||||
for (j = 0; j < checkImageWidth; j++) {
|
for (j = 0; j < checkImageWidth; j++) {
|
||||||
c = ((((i&0x8)==0)^((j&0x8))==0))*255;
|
c = (((i&0x8)==0)^((j&0x8)==0))*255;
|
||||||
checkImage[i][j][0] = (GLubyte) c;
|
checkImage[i][j][0] = (GLubyte) c;
|
||||||
checkImage[i][j][1] = (GLubyte) c;
|
checkImage[i][j][1] = (GLubyte) c;
|
||||||
checkImage[i][j][2] = (GLubyte) c;
|
checkImage[i][j][2] = (GLubyte) c;
|
||||||
|
|||||||
@@ -258,7 +258,7 @@ static GLenum Args(int argc, char **argv)
|
|||||||
GLint i;
|
GLint i;
|
||||||
|
|
||||||
rgb = GL_TRUE;
|
rgb = GL_TRUE;
|
||||||
doubleBuffer = GL_FALSE;
|
doubleBuffer = GL_TRUE;
|
||||||
|
|
||||||
for (i = 1; i < argc; i++) {
|
for (i = 1; i < argc; i++) {
|
||||||
if (strcmp(argv[i], "-ci") == 0) {
|
if (strcmp(argv[i], "-ci") == 0) {
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ static GLenum Args(int argc, char **argv)
|
|||||||
GLint i;
|
GLint i;
|
||||||
|
|
||||||
rgb = GL_TRUE;
|
rgb = GL_TRUE;
|
||||||
doubleBuffer = GL_FALSE;
|
doubleBuffer = GL_TRUE;
|
||||||
|
|
||||||
for (i = 1; i < argc; i++) {
|
for (i = 1; i < argc; i++) {
|
||||||
if (strcmp(argv[i], "-ci") == 0) {
|
if (strcmp(argv[i], "-ci") == 0) {
|
||||||
|
|||||||
@@ -321,7 +321,7 @@ GLenum Args(int argc, char **argv)
|
|||||||
GLint i;
|
GLint i;
|
||||||
|
|
||||||
rgb = GL_TRUE;
|
rgb = GL_TRUE;
|
||||||
doubleBuffer = GL_FALSE;
|
doubleBuffer = GL_TRUE;
|
||||||
|
|
||||||
for (i = 1; i < argc; i++) {
|
for (i = 1; i < argc; i++) {
|
||||||
if (strcmp(argv[i], "-ci") == 0) {
|
if (strcmp(argv[i], "-ci") == 0) {
|
||||||
|
|||||||
@@ -326,7 +326,7 @@ static GLenum Args(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
GLint i;
|
GLint i;
|
||||||
|
|
||||||
doubleBuffer = GL_FALSE;
|
doubleBuffer = GL_TRUE;
|
||||||
|
|
||||||
for (i = 1; i < argc; i++) {
|
for (i = 1; i < argc; i++) {
|
||||||
if (strcmp(argv[i], "-sb") == 0) {
|
if (strcmp(argv[i], "-sb") == 0) {
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ static void DeleteTri(GLint h)
|
|||||||
static void GrowTri(GLint h)
|
static void GrowTri(GLint h)
|
||||||
{
|
{
|
||||||
float v[2];
|
float v[2];
|
||||||
float *oldV;
|
float *oldV = NULL;
|
||||||
GLint i;
|
GLint i;
|
||||||
|
|
||||||
v[0] = objects[h].v1[0] + objects[h].v2[0] + objects[h].v3[0];
|
v[0] = objects[h].v1[0] + objects[h].v2[0] + objects[h].v3[0];
|
||||||
|
|||||||
@@ -29,28 +29,18 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
|
#include "../util/readtex.c"
|
||||||
|
|
||||||
|
|
||||||
#define FALSE 0
|
|
||||||
#define TRUE 1
|
|
||||||
#ifndef PI
|
#ifndef PI
|
||||||
#define PI 3.14159265358979323846
|
#define PI 3.14159265358979323846
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include "loadppm.c"
|
|
||||||
|
|
||||||
int rgb; /* unused */
|
|
||||||
|
|
||||||
#include "tkmap.c"
|
|
||||||
|
|
||||||
GLenum doubleBuffer;
|
GLenum doubleBuffer;
|
||||||
int W = 400, H = 400;
|
int W = 400, H = 400;
|
||||||
|
|
||||||
char *imageFileName = 0;
|
char *imageFileName = "../images/reflect.rgb";
|
||||||
PPMImage *image;
|
|
||||||
|
|
||||||
int numComponents;
|
|
||||||
|
|
||||||
float *minFilter, *magFilter, *sWrapMode, *tWrapMode;
|
float *minFilter, *magFilter, *sWrapMode, *tWrapMode;
|
||||||
float decal[] = {GL_DECAL};
|
float decal[] = {GL_DECAL};
|
||||||
@@ -66,18 +56,13 @@ float linear_mipmap_linear[] = {GL_LINEAR_MIPMAP_LINEAR};
|
|||||||
GLint sphereMap[] = {GL_SPHERE_MAP};
|
GLint sphereMap[] = {GL_SPHERE_MAP};
|
||||||
|
|
||||||
float xRotation = 0.0, yRotation = 0.0;
|
float xRotation = 0.0, yRotation = 0.0;
|
||||||
float zTranslate = -4.0;
|
float zTranslate = -3.0;
|
||||||
GLenum autoRotate = TRUE;
|
GLenum autoRotate = GL_TRUE;
|
||||||
GLenum deepestColor = COLOR_GREEN;
|
GLboolean isLit = GL_TRUE;
|
||||||
GLenum isLit = TRUE;
|
GLboolean isFogged = GL_FALSE;
|
||||||
GLenum isFogged = FALSE;
|
GLboolean doTexture = GL_TRUE;
|
||||||
float *textureEnvironment = modulate;
|
float *textureEnvironment = modulate;
|
||||||
|
|
||||||
struct MipMap {
|
|
||||||
int width, height;
|
|
||||||
unsigned char *data;
|
|
||||||
};
|
|
||||||
|
|
||||||
int cube, cage, cylinder, torus, genericObject;
|
int cube, cage, cylinder, torus, genericObject;
|
||||||
|
|
||||||
float c[6][4][4][3] = {
|
float c[6][4][4][3] = {
|
||||||
@@ -661,18 +646,6 @@ void BuildLists(void)
|
|||||||
genericObject = torus;
|
genericObject = torus;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetDeepestColor(void)
|
|
||||||
{
|
|
||||||
GLint redBits, greenBits, blueBits;
|
|
||||||
|
|
||||||
glGetIntegerv(GL_RED_BITS, &redBits);
|
|
||||||
glGetIntegerv(GL_GREEN_BITS, &greenBits);
|
|
||||||
glGetIntegerv(GL_BLUE_BITS, &blueBits);
|
|
||||||
|
|
||||||
deepestColor = (redBits >= greenBits) ? COLOR_RED : COLOR_GREEN;
|
|
||||||
deepestColor = (deepestColor >= blueBits) ? deepestColor : COLOR_BLUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetDefaultSettings(void)
|
void SetDefaultSettings(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -681,7 +654,7 @@ void SetDefaultSettings(void)
|
|||||||
sWrapMode = repeat;
|
sWrapMode = repeat;
|
||||||
tWrapMode = repeat;
|
tWrapMode = repeat;
|
||||||
textureEnvironment = modulate;
|
textureEnvironment = modulate;
|
||||||
autoRotate = TRUE;
|
autoRotate = GL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char *AlphaPadImage(int bufSize, unsigned char *inData, int alpha)
|
unsigned char *AlphaPadImage(int bufSize, unsigned char *inData, int alpha)
|
||||||
@@ -707,46 +680,46 @@ unsigned char *AlphaPadImage(int bufSize, unsigned char *inData, int alpha)
|
|||||||
void Init(void)
|
void Init(void)
|
||||||
{
|
{
|
||||||
float ambient[] = {0.0, 0.0, 0.0, 1.0};
|
float ambient[] = {0.0, 0.0, 0.0, 1.0};
|
||||||
float diffuse[] = {0.0, 1.0, 0.0, 1.0};
|
float diffuse[] = {1.0, 1.0, 1.0, 1.0};
|
||||||
float specular[] = {1.0, 1.0, 1.0, 1.0};
|
float specular[] = {1.0, 1.0, 1.0, 1.0};
|
||||||
float position[] = {2.0, 2.0, 0.0, 1.0};
|
float position[] = {0.0, 0.0, 4.0, 0.0};
|
||||||
float fog_color[] = {0.0, 0.0, 0.0, 1.0};
|
float fog_color[] = {0.0, 0.0, 0.0, 1.0};
|
||||||
float mat_ambient[] = {0.0, 0.0, 0.0, 1.0};
|
float mat_ambient[] = {0.0, 0.0, 0.0, 1.0};
|
||||||
float mat_shininess[] = {90.0};
|
float mat_shininess[] = {90.0};
|
||||||
float mat_specular[] = {1.0, 1.0, 1.0, 1.0};
|
float mat_specular[] = {1.0, 1.0, 1.0, 1.0};
|
||||||
float mat_diffuse[] = {1.0, 1.0, 1.0, 1.0};
|
float mat_diffuse[] = {0.8, 0.8, 0.8, 1.0};
|
||||||
float lmodel_ambient[] = {0.0, 0.0, 0.0, 1.0};
|
float lmodel_ambient[] = {0.2, 0.2, 0.2, 1.0};
|
||||||
float lmodel_twoside[] = {GL_TRUE};
|
float lmodel_twoside[] = {GL_TRUE};
|
||||||
|
int w, h;
|
||||||
|
GLenum format;
|
||||||
|
GLubyte *image;
|
||||||
|
|
||||||
|
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
|
||||||
|
|
||||||
SetDeepestColor();
|
|
||||||
SetDefaultSettings();
|
SetDefaultSettings();
|
||||||
|
|
||||||
if (numComponents == 4) {
|
image = LoadRGBImage(imageFileName, &w, &h, &format);
|
||||||
image = LoadPPM(imageFileName);
|
if (!image) {
|
||||||
image->data = AlphaPadImage(image->sizeX*image->sizeY,
|
printf("Error: couldn't load %s\n", imageFileName);
|
||||||
image->data, 128);
|
exit(1);
|
||||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
|
||||||
gluBuild2DMipmaps(GL_TEXTURE_2D, numComponents,
|
|
||||||
image->sizeX, image->sizeY,
|
|
||||||
GL_RGBA, GL_UNSIGNED_BYTE, image->data);
|
|
||||||
} else {
|
|
||||||
image = LoadPPM(imageFileName);
|
|
||||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
|
||||||
gluBuild2DMipmaps(GL_TEXTURE_2D, numComponents,
|
|
||||||
image->sizeX, image->sizeY,
|
|
||||||
GL_RGB, GL_UNSIGNED_BYTE, image->data);
|
|
||||||
}
|
}
|
||||||
|
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||||
|
gluBuild2DMipmaps(GL_TEXTURE_2D, format, w, h,
|
||||||
|
GL_RGB, GL_UNSIGNED_BYTE, image);
|
||||||
|
|
||||||
|
free(image);
|
||||||
|
|
||||||
glFogf(GL_FOG_DENSITY, 0.125);
|
glFogf(GL_FOG_DENSITY, 0.125);
|
||||||
glFogi(GL_FOG_MODE, GL_LINEAR);
|
glFogi(GL_FOG_MODE, GL_LINEAR);
|
||||||
glFogf(GL_FOG_START, 4.0);
|
glFogf(GL_FOG_START, 4.0);
|
||||||
glFogf(GL_FOG_END, 9.0);
|
glFogf(GL_FOG_END, 8.5);
|
||||||
glFogfv(GL_FOG_COLOR, fog_color);
|
glFogfv(GL_FOG_COLOR, fog_color);
|
||||||
|
|
||||||
glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
|
glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
|
||||||
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
|
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
|
||||||
glLightfv(GL_LIGHT0, GL_SPECULAR, specular);
|
glLightfv(GL_LIGHT0, GL_SPECULAR, specular);
|
||||||
glLightfv(GL_LIGHT0, GL_POSITION, position);
|
glLightfv(GL_LIGHT0, GL_POSITION, position);
|
||||||
|
glEnable(GL_LIGHT0);
|
||||||
|
|
||||||
glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess);
|
glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess);
|
||||||
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular);
|
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular);
|
||||||
@@ -757,18 +730,14 @@ void Init(void)
|
|||||||
glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
|
glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
|
||||||
glShadeModel(GL_SMOOTH);
|
glShadeModel(GL_SMOOTH);
|
||||||
|
|
||||||
glEnable(GL_LIGHTING);
|
|
||||||
glEnable(GL_LIGHT0);
|
|
||||||
|
|
||||||
glClearColor(0.0, 0.0, 0.0, 0.0);
|
glClearColor(0.0, 0.0, 0.0, 0.0);
|
||||||
glViewport(0, 0, W, H);
|
|
||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
|
||||||
glFrontFace(GL_CW);
|
glFrontFace(GL_CW);
|
||||||
glEnable(GL_CULL_FACE);
|
glEnable(GL_CULL_FACE);
|
||||||
glCullFace(GL_BACK);
|
glCullFace(GL_BACK);
|
||||||
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
|
||||||
glTexGeniv(GL_S, GL_TEXTURE_GEN_MODE, sphereMap);
|
glTexGeniv(GL_S, GL_TEXTURE_GEN_MODE, sphereMap);
|
||||||
glTexGeniv(GL_T, GL_TEXTURE_GEN_MODE, sphereMap);
|
glTexGeniv(GL_T, GL_TEXTURE_GEN_MODE, sphereMap);
|
||||||
glEnable(GL_TEXTURE_GEN_S);
|
glEnable(GL_TEXTURE_GEN_S);
|
||||||
@@ -786,15 +755,18 @@ void Init(void)
|
|||||||
|
|
||||||
void ReInit(void)
|
void ReInit(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (genericObject == torus) {
|
if (genericObject == torus) {
|
||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
} else {
|
} else {
|
||||||
glDisable(GL_DEPTH_TEST);
|
glDisable(GL_DEPTH_TEST);
|
||||||
}
|
}
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
|
||||||
|
#if 0
|
||||||
if (isFogged) {
|
if (isFogged) {
|
||||||
textureEnvironment = modulate;
|
textureEnvironment = modulate;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, magFilter);
|
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, magFilter);
|
||||||
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, minFilter);
|
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, minFilter);
|
||||||
@@ -803,59 +775,54 @@ void ReInit(void)
|
|||||||
|
|
||||||
void Draw(void)
|
void Draw(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
glLoadIdentity();
|
|
||||||
glFrustum(-0.2, 0.2, -0.2, 0.2, 0.15, 9.0);
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
|
||||||
if (isFogged) {
|
|
||||||
|
/* draw cage */
|
||||||
|
if (isFogged)
|
||||||
glEnable(GL_FOG);
|
glEnable(GL_FOG);
|
||||||
glColor3fv(RGBMap[deepestColor]);
|
else
|
||||||
} else {
|
glDisable(GL_FOG);
|
||||||
glColor3fv(RGBMap[COLOR_WHITE]);
|
glColor3f(1, 1, 1);
|
||||||
}
|
|
||||||
glDisable(GL_LIGHTING);
|
glDisable(GL_LIGHTING);
|
||||||
glDisable(GL_LIGHT0);
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
glDisable(GL_TEXTURE_2D);
|
||||||
glCallList(cage);
|
glCallList(cage);
|
||||||
|
|
||||||
glPushMatrix();
|
/* draw object */
|
||||||
glTranslatef(0.0, 0.0, zTranslate);
|
if (isLit)
|
||||||
glRotatef(xRotation, 1, 0, 0);
|
|
||||||
glRotatef(yRotation, 0, 1, 0);
|
|
||||||
|
|
||||||
if (isLit == TRUE) {
|
|
||||||
glEnable(GL_LIGHTING);
|
glEnable(GL_LIGHTING);
|
||||||
glEnable(GL_LIGHT0);
|
else
|
||||||
}
|
glColor3f(1.0, 0.5, 0.2);
|
||||||
|
if (doTexture)
|
||||||
glEnable(GL_TEXTURE_2D);
|
glEnable(GL_TEXTURE_2D);
|
||||||
if (isFogged) {
|
|
||||||
glDisable(GL_FOG);
|
|
||||||
}
|
|
||||||
glPolygonMode(GL_FRONT, GL_FILL);
|
|
||||||
glColor3fv(RGBMap[deepestColor]);
|
|
||||||
glCallList(genericObject);
|
|
||||||
|
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(0.0, 0.0, zTranslate);
|
||||||
|
glRotatef(xRotation, 1, 0, 0);
|
||||||
|
glRotatef(yRotation, 0, 1, 0);
|
||||||
|
glCallList(genericObject);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
glFlush();
|
|
||||||
|
|
||||||
if (autoRotate) {
|
glFlush();
|
||||||
xRotation += .75;
|
|
||||||
yRotation += .375;
|
|
||||||
}
|
|
||||||
glutSwapBuffers();
|
glutSwapBuffers();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Reshape(int width, int height)
|
void Reshape(int width, int height)
|
||||||
{
|
{
|
||||||
|
|
||||||
W = width;
|
W = width;
|
||||||
H = height;
|
H = height;
|
||||||
ReInit();
|
ReInit();
|
||||||
glViewport( 0, 0, width, height ); /*new*/
|
glViewport( 0, 0, width, height ); /*new*/
|
||||||
|
glMatrixMode(GL_PROJECTION);
|
||||||
|
glLoadIdentity();
|
||||||
|
glFrustum(-0.2, 0.2, -0.2, 0.2, 0.15, 9.0);
|
||||||
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Idle(void)
|
||||||
|
{
|
||||||
|
xRotation += .75;
|
||||||
|
yRotation += .375;
|
||||||
|
glutPostRedisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Key2(int key, int x, int y)
|
void Key2(int key, int x, int y)
|
||||||
@@ -864,27 +831,28 @@ void Key2(int key, int x, int y)
|
|||||||
switch (key) {
|
switch (key) {
|
||||||
case GLUT_KEY_LEFT:
|
case GLUT_KEY_LEFT:
|
||||||
yRotation -= 0.5;
|
yRotation -= 0.5;
|
||||||
autoRotate = FALSE;
|
autoRotate = GL_FALSE;
|
||||||
ReInit();
|
ReInit();
|
||||||
break;
|
break;
|
||||||
case GLUT_KEY_RIGHT:
|
case GLUT_KEY_RIGHT:
|
||||||
yRotation += 0.5;
|
yRotation += 0.5;
|
||||||
autoRotate = FALSE;
|
autoRotate = GL_FALSE;
|
||||||
ReInit();
|
ReInit();
|
||||||
break;
|
break;
|
||||||
case GLUT_KEY_UP:
|
case GLUT_KEY_UP:
|
||||||
xRotation -= 0.5;
|
xRotation -= 0.5;
|
||||||
autoRotate = FALSE;
|
autoRotate = GL_FALSE;
|
||||||
ReInit();
|
ReInit();
|
||||||
break;
|
break;
|
||||||
case GLUT_KEY_DOWN:
|
case GLUT_KEY_DOWN:
|
||||||
xRotation += 0.5;
|
xRotation += 0.5;
|
||||||
autoRotate = FALSE;
|
autoRotate = GL_FALSE;
|
||||||
ReInit();
|
ReInit();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
glutPostRedisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Key(unsigned char key, int x, int y)
|
void Key(unsigned char key, int x, int y)
|
||||||
@@ -892,15 +860,28 @@ void Key(unsigned char key, int x, int y)
|
|||||||
|
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case 27:
|
case 27:
|
||||||
free(image->data);
|
/* free(image->data);*/
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
||||||
case 'a':
|
case 'a':
|
||||||
autoRotate = !autoRotate;
|
autoRotate = !autoRotate;
|
||||||
|
if (autoRotate)
|
||||||
|
glutIdleFunc(Idle);
|
||||||
|
else
|
||||||
|
glutIdleFunc(NULL);
|
||||||
|
|
||||||
ReInit();
|
ReInit();
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'o':
|
||||||
genericObject = (genericObject == cube) ? cylinder : cube;
|
if (genericObject == cube) {
|
||||||
|
genericObject = cylinder;
|
||||||
|
}
|
||||||
|
else if (genericObject == cylinder) {
|
||||||
|
genericObject = torus;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
genericObject = cube;
|
||||||
|
}
|
||||||
ReInit();
|
ReInit();
|
||||||
break;
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
@@ -920,7 +901,7 @@ void Key(unsigned char key, int x, int y)
|
|||||||
ReInit();
|
ReInit();
|
||||||
break;
|
break;
|
||||||
case 't':
|
case 't':
|
||||||
genericObject = torus;
|
doTexture = !doTexture;
|
||||||
ReInit();
|
ReInit();
|
||||||
break;
|
break;
|
||||||
case '0':
|
case '0':
|
||||||
@@ -958,14 +939,14 @@ void Key(unsigned char key, int x, int y)
|
|||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
glutPostRedisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
GLenum Args(int argc, char **argv)
|
GLenum Args(int argc, char **argv)
|
||||||
{
|
{
|
||||||
GLint i;
|
GLint i;
|
||||||
|
|
||||||
doubleBuffer = GL_FALSE;
|
doubleBuffer = GL_TRUE;
|
||||||
numComponents = 4;
|
|
||||||
|
|
||||||
for (i = 1; i < argc; i++) {
|
for (i = 1; i < argc; i++) {
|
||||||
if (strcmp(argv[i], "-sb") == 0) {
|
if (strcmp(argv[i], "-sb") == 0) {
|
||||||
@@ -979,10 +960,6 @@ GLenum Args(int argc, char **argv)
|
|||||||
} else {
|
} else {
|
||||||
imageFileName = argv[++i];
|
imageFileName = argv[++i];
|
||||||
}
|
}
|
||||||
} else if (strcmp(argv[i], "-4") == 0) {
|
|
||||||
numComponents = 4;
|
|
||||||
} else if (strcmp(argv[i], "-3") == 0) {
|
|
||||||
numComponents = 3;
|
|
||||||
} else {
|
} else {
|
||||||
printf("%s (Bad option).\n", argv[i]);
|
printf("%s (Bad option).\n", argv[i]);
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
@@ -991,11 +968,6 @@ GLenum Args(int argc, char **argv)
|
|||||||
return GL_TRUE;
|
return GL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLUTCALLBACK glut_post_redisplay_p(void)
|
|
||||||
{
|
|
||||||
glutPostRedisplay();
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
GLenum type;
|
GLenum type;
|
||||||
@@ -1027,7 +999,7 @@ int main(int argc, char **argv)
|
|||||||
glutKeyboardFunc(Key);
|
glutKeyboardFunc(Key);
|
||||||
glutSpecialFunc(Key2);
|
glutSpecialFunc(Key2);
|
||||||
glutDisplayFunc(Draw);
|
glutDisplayFunc(Draw);
|
||||||
glutIdleFunc(glut_post_redisplay_p);
|
glutIdleFunc(Idle);
|
||||||
|
|
||||||
glutMainLoop();
|
glutMainLoop();
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -129,6 +129,9 @@ void MoveStars(void)
|
|||||||
if (stars[n].rotation > MAXANGLES) {
|
if (stars[n].rotation > MAXANGLES) {
|
||||||
stars[n].rotation = 0.0;
|
stars[n].rotation = 0.0;
|
||||||
}
|
}
|
||||||
|
else if (stars[n].rotation < 0.0) {
|
||||||
|
stars[n].rotation += 360.0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -281,7 +284,7 @@ static GLenum Args(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
GLint i;
|
GLint i;
|
||||||
|
|
||||||
doubleBuffer = GL_FALSE;
|
doubleBuffer = GL_TRUE;
|
||||||
|
|
||||||
for (i = 1; i < argc; i++) {
|
for (i = 1; i < argc; i++) {
|
||||||
if (strcmp(argv[i], "-sb") == 0) {
|
if (strcmp(argv[i], "-sb") == 0) {
|
||||||
|
|||||||
@@ -285,7 +285,7 @@ static GLenum Args(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
GLint i;
|
GLint i;
|
||||||
|
|
||||||
doubleBuffer = GL_FALSE;
|
doubleBuffer = GL_TRUE;
|
||||||
|
|
||||||
for (i = 1; i < argc; i++) {
|
for (i = 1; i < argc; i++) {
|
||||||
if (strcmp(argv[i], "-sb") == 0) {
|
if (strcmp(argv[i], "-sb") == 0) {
|
||||||
|
|||||||
@@ -186,8 +186,8 @@ static void SetColorMap(void)
|
|||||||
{
|
{
|
||||||
static float green[3] = {0.2, 1.0, 0.2};
|
static float green[3] = {0.2, 1.0, 0.2};
|
||||||
static float red[3] = {1.0, 0.2, 0.2};
|
static float red[3] = {1.0, 0.2, 0.2};
|
||||||
float *color, percent;
|
float *color = 0, percent;
|
||||||
GLint *indexes, entries, i, j;
|
GLint *indexes = 0, entries, i, j;
|
||||||
|
|
||||||
entries = glutGet(GLUT_WINDOW_COLORMAP_SIZE);
|
entries = glutGet(GLUT_WINDOW_COLORMAP_SIZE);
|
||||||
|
|
||||||
@@ -515,7 +515,7 @@ static GLenum Args(int argc, char **argv)
|
|||||||
GLint i;
|
GLint i;
|
||||||
|
|
||||||
rgb = GL_TRUE;
|
rgb = GL_TRUE;
|
||||||
doubleBuffer = GL_FALSE;
|
doubleBuffer = GL_TRUE;
|
||||||
frames = 10;
|
frames = 10;
|
||||||
widthX = 10;
|
widthX = 10;
|
||||||
widthY = 10;
|
widthY = 10;
|
||||||
|
|||||||
38
progs/tests/Makefile
Normal file
38
progs/tests/Makefile
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
|
||||||
|
# Simple makefile for compiling test programs on Linux
|
||||||
|
# These programs aren't intended to be included with the normal
|
||||||
|
# distro as they're not too interesting but good for testing during
|
||||||
|
# development.
|
||||||
|
|
||||||
|
|
||||||
|
CC = gcc
|
||||||
|
CFLAGS = -g -I../include
|
||||||
|
LIBS = -L../lib -lglut -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXext -lm
|
||||||
|
|
||||||
|
PROGS = cva \
|
||||||
|
dinoshade \
|
||||||
|
fogcoord \
|
||||||
|
manytex \
|
||||||
|
multipal \
|
||||||
|
projtex \
|
||||||
|
seccolor \
|
||||||
|
sharedtex \
|
||||||
|
texline
|
||||||
|
|
||||||
|
|
||||||
|
##### RULES #####
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .c
|
||||||
|
|
||||||
|
.c:
|
||||||
|
$(CC) $(CFLAGS) $< $(LIBS) -o $@
|
||||||
|
|
||||||
|
|
||||||
|
##### TARGETS #####
|
||||||
|
|
||||||
|
default: $(PROGS)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(PROGS)
|
||||||
|
rm -f *.o
|
||||||
154
progs/tests/cva.c
Normal file
154
progs/tests/cva.c
Normal file
@@ -0,0 +1,154 @@
|
|||||||
|
/* $Id: cva.c,v 1.3 2000/11/30 03:06:56 gareth Exp $ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Trivial CVA test, good for testing driver fastpaths (especially
|
||||||
|
* indexed vertex buffers if they are supported).
|
||||||
|
*
|
||||||
|
* Gareth Hughes
|
||||||
|
* November 2000
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#define GL_GLEXT_LEGACY
|
||||||
|
#include <GL/glut.h>
|
||||||
|
|
||||||
|
|
||||||
|
GLfloat verts[][4] = {
|
||||||
|
{ -0.5, -0.5, -2.0, 0.0 },
|
||||||
|
{ 0.5, -0.5, -2.0, 0.0 },
|
||||||
|
{ -0.5, 0.5, -2.0, 0.0 },
|
||||||
|
{ 0.5, 0.5, -2.0, 0.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
GLubyte color[][4] = {
|
||||||
|
{ 0xff, 0x00, 0x00, 0x00 },
|
||||||
|
{ 0x00, 0xff, 0x00, 0x00 },
|
||||||
|
{ 0x00, 0x00, 0xff, 0x00 },
|
||||||
|
{ 0xff, 0xff, 0xff, 0x00 },
|
||||||
|
};
|
||||||
|
|
||||||
|
GLuint indices[] = { 0, 1, 2, 3 };
|
||||||
|
|
||||||
|
GLboolean compiled = GL_TRUE;
|
||||||
|
GLboolean doubleBuffer = GL_TRUE;
|
||||||
|
|
||||||
|
|
||||||
|
void init( void )
|
||||||
|
{
|
||||||
|
glClearColor( 0.0, 0.0, 0.0, 0.0 );
|
||||||
|
glShadeModel( GL_SMOOTH );
|
||||||
|
|
||||||
|
glFrontFace( GL_CCW );
|
||||||
|
glCullFace( GL_BACK );
|
||||||
|
glEnable( GL_CULL_FACE );
|
||||||
|
|
||||||
|
glEnable( GL_DEPTH_TEST );
|
||||||
|
|
||||||
|
glEnableClientState( GL_VERTEX_ARRAY );
|
||||||
|
glEnableClientState( GL_COLOR_ARRAY );
|
||||||
|
|
||||||
|
glMatrixMode( GL_PROJECTION );
|
||||||
|
glLoadIdentity();
|
||||||
|
glFrustum( -1.0, 1.0, -1.0, 1.0, 2.0, 10.0 );
|
||||||
|
glMatrixMode( GL_MODELVIEW );
|
||||||
|
glLoadIdentity();
|
||||||
|
|
||||||
|
glVertexPointer( 3, GL_FLOAT, sizeof(verts[0]), verts );
|
||||||
|
glColorPointer( 4, GL_UNSIGNED_BYTE, 0, color );
|
||||||
|
|
||||||
|
#ifdef GL_EXT_compiled_vertex_array
|
||||||
|
if ( compiled ) {
|
||||||
|
glLockArraysEXT( 0, 4 );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void display( void )
|
||||||
|
{
|
||||||
|
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
|
||||||
|
|
||||||
|
glDrawElements( GL_TRIANGLES, 3, GL_UNSIGNED_INT, indices );
|
||||||
|
|
||||||
|
glFlush();
|
||||||
|
if ( doubleBuffer ) {
|
||||||
|
glutSwapBuffers();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void keyboard( unsigned char key, int x, int y )
|
||||||
|
{
|
||||||
|
switch ( key ) {
|
||||||
|
case 27:
|
||||||
|
exit( 0 );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
glutPostRedisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
GLboolean args( int argc, char **argv )
|
||||||
|
{
|
||||||
|
GLint i;
|
||||||
|
|
||||||
|
doubleBuffer = GL_TRUE;
|
||||||
|
|
||||||
|
for ( i = 1 ; i < argc ; i++ ) {
|
||||||
|
if ( strcmp( argv[i], "-sb" ) == 0 ) {
|
||||||
|
doubleBuffer = GL_FALSE;
|
||||||
|
} else if ( strcmp( argv[i], "-db" ) == 0 ) {
|
||||||
|
doubleBuffer = GL_TRUE;
|
||||||
|
} else {
|
||||||
|
fprintf( stderr, "%s (Bad option).\n", argv[i] );
|
||||||
|
return GL_FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return GL_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main( int argc, char **argv )
|
||||||
|
{
|
||||||
|
GLenum type;
|
||||||
|
char *string;
|
||||||
|
|
||||||
|
glutInit( &argc, argv );
|
||||||
|
|
||||||
|
if ( args( argc, argv ) == GL_FALSE ) {
|
||||||
|
exit( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
type = GLUT_RGB | GLUT_DEPTH;
|
||||||
|
type |= ( doubleBuffer ) ? GLUT_DOUBLE : GLUT_SINGLE;
|
||||||
|
|
||||||
|
glutInitDisplayMode( type );
|
||||||
|
glutInitWindowSize( 250, 250 );
|
||||||
|
glutInitWindowPosition( 100, 100 );
|
||||||
|
glutCreateWindow( "CVA Test" );
|
||||||
|
|
||||||
|
/* Make sure the server supports GL 1.2 vertex arrays.
|
||||||
|
*/
|
||||||
|
string = (char *) glGetString( GL_VERSION );
|
||||||
|
|
||||||
|
if ( !strstr( string, "1.2" ) ) {
|
||||||
|
fprintf( stderr, "This program requires OpenGL 1.2 vertex arrays.\n" );
|
||||||
|
exit( -1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* See if the server supports compiled vertex arrays.
|
||||||
|
*/
|
||||||
|
string = (char *) glGetString( GL_EXTENSIONS );
|
||||||
|
|
||||||
|
if ( !strstr( string, "GL_EXT_compiled_vertex_array" ) ) {
|
||||||
|
fprintf( stderr, "Compiled vertex arrays not supported by this renderer.\n" );
|
||||||
|
compiled = GL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
init();
|
||||||
|
|
||||||
|
glutDisplayFunc( display );
|
||||||
|
glutKeyboardFunc( keyboard );
|
||||||
|
glutMainLoop();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
891
progs/tests/dinoshade.c
Normal file
891
progs/tests/dinoshade.c
Normal file
@@ -0,0 +1,891 @@
|
|||||||
|
|
||||||
|
/* Copyright (c) Mark J. Kilgard, 1994, 1997. */
|
||||||
|
|
||||||
|
/* 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. */
|
||||||
|
|
||||||
|
/* Example for PC game developers to show how to *combine* texturing,
|
||||||
|
reflections, and projected shadows all in real-time with OpenGL.
|
||||||
|
Robust reflections use stenciling. Robust projected shadows
|
||||||
|
use both stenciling and polygon offset. PC game programmers
|
||||||
|
should realize that neither stenciling nor polygon offset are
|
||||||
|
supported by Direct3D, so these real-time rendering algorithms
|
||||||
|
are only really viable with OpenGL.
|
||||||
|
|
||||||
|
The program has modes for disabling the stenciling and polygon
|
||||||
|
offset uses. It is worth running this example with these features
|
||||||
|
toggled off so you can see the sort of artifacts that result.
|
||||||
|
|
||||||
|
Notice that the floor texturing, reflections, and shadowing
|
||||||
|
all co-exist properly. */
|
||||||
|
|
||||||
|
/* When you run this program: Left mouse button controls the
|
||||||
|
view. Middle mouse button controls light position (left &
|
||||||
|
right rotates light around dino; up & down moves light
|
||||||
|
position up and down). Right mouse button pops up menu. */
|
||||||
|
|
||||||
|
/* Check out the comments in the "redraw" routine to see how the
|
||||||
|
reflection blending and surface stenciling is done. You can
|
||||||
|
also see in "redraw" how the projected shadows are rendered,
|
||||||
|
including the use of stenciling and polygon offset. */
|
||||||
|
|
||||||
|
/* This program is derived from glutdino.c */
|
||||||
|
|
||||||
|
/* Compile: cc -o dinoshade dinoshade.c -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <math.h> /* for cos(), sin(), and sqrt() */
|
||||||
|
#include <GL/glut.h> /* OpenGL Utility Toolkit header */
|
||||||
|
|
||||||
|
/* Some <math.h> files do not define M_PI... */
|
||||||
|
#ifndef M_PI
|
||||||
|
#define M_PI 3.14159265358979323846
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Variable controlling various rendering modes. */
|
||||||
|
static int stencilReflection = 1, stencilShadow = 1, offsetShadow = 1;
|
||||||
|
static int renderShadow = 1, renderDinosaur = 1, renderReflection = 1;
|
||||||
|
static int linearFiltering = 0, useMipmaps = 0, useTexture = 1;
|
||||||
|
static int reportSpeed = 0;
|
||||||
|
static int animation = 1;
|
||||||
|
static GLboolean lightSwitch = GL_TRUE;
|
||||||
|
static int directionalLight = 1;
|
||||||
|
static int forceExtension = 0;
|
||||||
|
|
||||||
|
/* Time varying or user-controled variables. */
|
||||||
|
static float jump = 0.0;
|
||||||
|
static float lightAngle = 0.0, lightHeight = 20;
|
||||||
|
GLfloat angle = -150; /* in degrees */
|
||||||
|
GLfloat angle2 = 30; /* in degrees */
|
||||||
|
|
||||||
|
int moving, startx, starty;
|
||||||
|
int lightMoving = 0, lightStartX, lightStartY;
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MISSING, EXTENSION, ONE_DOT_ONE
|
||||||
|
};
|
||||||
|
int polygonOffsetVersion;
|
||||||
|
|
||||||
|
static GLdouble bodyWidth = 3.0;
|
||||||
|
/* *INDENT-OFF* */
|
||||||
|
static GLfloat body[][2] = { {0, 3}, {1, 1}, {5, 1}, {8, 4}, {10, 4}, {11, 5},
|
||||||
|
{11, 11.5}, {13, 12}, {13, 13}, {10, 13.5}, {13, 14}, {13, 15}, {11, 16},
|
||||||
|
{8, 16}, {7, 15}, {7, 13}, {8, 12}, {7, 11}, {6, 6}, {4, 3}, {3, 2},
|
||||||
|
{1, 2} };
|
||||||
|
static GLfloat arm[][2] = { {8, 10}, {9, 9}, {10, 9}, {13, 8}, {14, 9}, {16, 9},
|
||||||
|
{15, 9.5}, {16, 10}, {15, 10}, {15.5, 11}, {14.5, 10}, {14, 11}, {14, 10},
|
||||||
|
{13, 9}, {11, 11}, {9, 11} };
|
||||||
|
static GLfloat leg[][2] = { {8, 6}, {8, 4}, {9, 3}, {9, 2}, {8, 1}, {8, 0.5}, {9, 0},
|
||||||
|
{12, 0}, {10, 1}, {10, 2}, {12, 4}, {11, 6}, {10, 7}, {9, 7} };
|
||||||
|
static GLfloat eye[][2] = { {8.75, 15}, {9, 14.7}, {9.6, 14.7}, {10.1, 15},
|
||||||
|
{9.6, 15.25}, {9, 15.25} };
|
||||||
|
static GLfloat lightPosition[4];
|
||||||
|
static GLfloat lightColor[] = {0.8, 1.0, 0.8, 1.0}; /* green-tinted */
|
||||||
|
static GLfloat skinColor[] = {0.1, 1.0, 0.1, 1.0}, eyeColor[] = {1.0, 0.2, 0.2, 1.0};
|
||||||
|
/* *INDENT-ON* */
|
||||||
|
|
||||||
|
/* Nice floor texture tiling pattern. */
|
||||||
|
static char *circles[] = {
|
||||||
|
"....xxxx........",
|
||||||
|
"..xxxxxxxx......",
|
||||||
|
".xxxxxxxxxx.....",
|
||||||
|
".xxx....xxx.....",
|
||||||
|
"xxx......xxx....",
|
||||||
|
"xxx......xxx....",
|
||||||
|
"xxx......xxx....",
|
||||||
|
"xxx......xxx....",
|
||||||
|
".xxx....xxx.....",
|
||||||
|
".xxxxxxxxxx.....",
|
||||||
|
"..xxxxxxxx......",
|
||||||
|
"....xxxx........",
|
||||||
|
"................",
|
||||||
|
"................",
|
||||||
|
"................",
|
||||||
|
"................",
|
||||||
|
};
|
||||||
|
|
||||||
|
static void
|
||||||
|
makeFloorTexture(void)
|
||||||
|
{
|
||||||
|
GLubyte floorTexture[16][16][3];
|
||||||
|
GLubyte *loc;
|
||||||
|
int s, t;
|
||||||
|
|
||||||
|
/* Setup RGB image for the texture. */
|
||||||
|
loc = (GLubyte*) floorTexture;
|
||||||
|
for (t = 0; t < 16; t++) {
|
||||||
|
for (s = 0; s < 16; s++) {
|
||||||
|
if (circles[t][s] == 'x') {
|
||||||
|
/* Nice green. */
|
||||||
|
loc[0] = 0x1f;
|
||||||
|
loc[1] = 0x8f;
|
||||||
|
loc[2] = 0x1f;
|
||||||
|
} else {
|
||||||
|
/* Light gray. */
|
||||||
|
loc[0] = 0xaa;
|
||||||
|
loc[1] = 0xaa;
|
||||||
|
loc[2] = 0xaa;
|
||||||
|
}
|
||||||
|
loc += 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||||
|
|
||||||
|
if (useMipmaps) {
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
|
||||||
|
GL_LINEAR_MIPMAP_LINEAR);
|
||||||
|
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 16, 16,
|
||||||
|
GL_RGB, GL_UNSIGNED_BYTE, floorTexture);
|
||||||
|
} else {
|
||||||
|
if (linearFiltering) {
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
|
} else {
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
}
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, 3, 16, 16, 0,
|
||||||
|
GL_RGB, GL_UNSIGNED_BYTE, floorTexture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enum {
|
||||||
|
X, Y, Z, W
|
||||||
|
};
|
||||||
|
enum {
|
||||||
|
A, B, C, D
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Create a matrix that will project the desired shadow. */
|
||||||
|
void
|
||||||
|
shadowMatrix(GLfloat shadowMat[4][4],
|
||||||
|
GLfloat groundplane[4],
|
||||||
|
GLfloat lightpos[4])
|
||||||
|
{
|
||||||
|
GLfloat dot;
|
||||||
|
|
||||||
|
/* Find dot product between light position vector and ground plane normal. */
|
||||||
|
dot = groundplane[X] * lightpos[X] +
|
||||||
|
groundplane[Y] * lightpos[Y] +
|
||||||
|
groundplane[Z] * lightpos[Z] +
|
||||||
|
groundplane[W] * lightpos[W];
|
||||||
|
|
||||||
|
shadowMat[0][0] = dot - lightpos[X] * groundplane[X];
|
||||||
|
shadowMat[1][0] = 0.f - lightpos[X] * groundplane[Y];
|
||||||
|
shadowMat[2][0] = 0.f - lightpos[X] * groundplane[Z];
|
||||||
|
shadowMat[3][0] = 0.f - lightpos[X] * groundplane[W];
|
||||||
|
|
||||||
|
shadowMat[X][1] = 0.f - lightpos[Y] * groundplane[X];
|
||||||
|
shadowMat[1][1] = dot - lightpos[Y] * groundplane[Y];
|
||||||
|
shadowMat[2][1] = 0.f - lightpos[Y] * groundplane[Z];
|
||||||
|
shadowMat[3][1] = 0.f - lightpos[Y] * groundplane[W];
|
||||||
|
|
||||||
|
shadowMat[X][2] = 0.f - lightpos[Z] * groundplane[X];
|
||||||
|
shadowMat[1][2] = 0.f - lightpos[Z] * groundplane[Y];
|
||||||
|
shadowMat[2][2] = dot - lightpos[Z] * groundplane[Z];
|
||||||
|
shadowMat[3][2] = 0.f - lightpos[Z] * groundplane[W];
|
||||||
|
|
||||||
|
shadowMat[X][3] = 0.f - lightpos[W] * groundplane[X];
|
||||||
|
shadowMat[1][3] = 0.f - lightpos[W] * groundplane[Y];
|
||||||
|
shadowMat[2][3] = 0.f - lightpos[W] * groundplane[Z];
|
||||||
|
shadowMat[3][3] = dot - lightpos[W] * groundplane[W];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Find the plane equation given 3 points. */
|
||||||
|
void
|
||||||
|
findPlane(GLfloat plane[4],
|
||||||
|
GLfloat v0[3], GLfloat v1[3], GLfloat v2[3])
|
||||||
|
{
|
||||||
|
GLfloat vec0[3], vec1[3];
|
||||||
|
|
||||||
|
/* Need 2 vectors to find cross product. */
|
||||||
|
vec0[X] = v1[X] - v0[X];
|
||||||
|
vec0[Y] = v1[Y] - v0[Y];
|
||||||
|
vec0[Z] = v1[Z] - v0[Z];
|
||||||
|
|
||||||
|
vec1[X] = v2[X] - v0[X];
|
||||||
|
vec1[Y] = v2[Y] - v0[Y];
|
||||||
|
vec1[Z] = v2[Z] - v0[Z];
|
||||||
|
|
||||||
|
/* find cross product to get A, B, and C of plane equation */
|
||||||
|
plane[A] = vec0[Y] * vec1[Z] - vec0[Z] * vec1[Y];
|
||||||
|
plane[B] = -(vec0[X] * vec1[Z] - vec0[Z] * vec1[X]);
|
||||||
|
plane[C] = vec0[X] * vec1[Y] - vec0[Y] * vec1[X];
|
||||||
|
|
||||||
|
plane[D] = -(plane[A] * v0[X] + plane[B] * v0[Y] + plane[C] * v0[Z]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
extrudeSolidFromPolygon(GLfloat data[][2], unsigned int dataSize,
|
||||||
|
GLdouble thickness, GLuint side, GLuint edge, GLuint whole)
|
||||||
|
{
|
||||||
|
static GLUtriangulatorObj *tobj = NULL;
|
||||||
|
GLdouble vertex[3], dx, dy, len;
|
||||||
|
int i;
|
||||||
|
int count = (int) (dataSize / (2 * sizeof(GLfloat)));
|
||||||
|
|
||||||
|
if (tobj == NULL) {
|
||||||
|
tobj = gluNewTess(); /* create and initialize a GLU
|
||||||
|
polygon tesselation object */
|
||||||
|
gluTessCallback(tobj, GLU_BEGIN, glBegin);
|
||||||
|
gluTessCallback(tobj, GLU_VERTEX, glVertex2fv); /* semi-tricky */
|
||||||
|
gluTessCallback(tobj, GLU_END, glEnd);
|
||||||
|
}
|
||||||
|
glNewList(side, GL_COMPILE);
|
||||||
|
glShadeModel(GL_SMOOTH); /* smooth minimizes seeing
|
||||||
|
tessellation */
|
||||||
|
gluBeginPolygon(tobj);
|
||||||
|
for (i = 0; i < count; i++) {
|
||||||
|
vertex[0] = data[i][0];
|
||||||
|
vertex[1] = data[i][1];
|
||||||
|
vertex[2] = 0;
|
||||||
|
gluTessVertex(tobj, vertex, data[i]);
|
||||||
|
}
|
||||||
|
gluEndPolygon(tobj);
|
||||||
|
glEndList();
|
||||||
|
glNewList(edge, GL_COMPILE);
|
||||||
|
glShadeModel(GL_FLAT); /* flat shade keeps angular hands
|
||||||
|
from being "smoothed" */
|
||||||
|
glBegin(GL_QUAD_STRIP);
|
||||||
|
for (i = 0; i <= count; i++) {
|
||||||
|
/* mod function handles closing the edge */
|
||||||
|
glVertex3f(data[i % count][0], data[i % count][1], 0.0);
|
||||||
|
glVertex3f(data[i % count][0], data[i % count][1], thickness);
|
||||||
|
/* Calculate a unit normal by dividing by Euclidean
|
||||||
|
distance. We * could be lazy and use
|
||||||
|
glEnable(GL_NORMALIZE) so we could pass in * arbitrary
|
||||||
|
normals for a very slight performance hit. */
|
||||||
|
dx = data[(i + 1) % count][1] - data[i % count][1];
|
||||||
|
dy = data[i % count][0] - data[(i + 1) % count][0];
|
||||||
|
len = sqrt(dx * dx + dy * dy);
|
||||||
|
glNormal3f(dx / len, dy / len, 0.0);
|
||||||
|
}
|
||||||
|
glEnd();
|
||||||
|
glEndList();
|
||||||
|
glNewList(whole, GL_COMPILE);
|
||||||
|
glFrontFace(GL_CW);
|
||||||
|
glCallList(edge);
|
||||||
|
glNormal3f(0.0, 0.0, -1.0); /* constant normal for side */
|
||||||
|
glCallList(side);
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(0.0, 0.0, thickness);
|
||||||
|
glFrontFace(GL_CCW);
|
||||||
|
glNormal3f(0.0, 0.0, 1.0); /* opposite normal for other side */
|
||||||
|
glCallList(side);
|
||||||
|
glPopMatrix();
|
||||||
|
glEndList();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enumerants for refering to display lists. */
|
||||||
|
typedef enum {
|
||||||
|
RESERVED, BODY_SIDE, BODY_EDGE, BODY_WHOLE, ARM_SIDE, ARM_EDGE, ARM_WHOLE,
|
||||||
|
LEG_SIDE, LEG_EDGE, LEG_WHOLE, EYE_SIDE, EYE_EDGE, EYE_WHOLE
|
||||||
|
} displayLists;
|
||||||
|
|
||||||
|
static void
|
||||||
|
makeDinosaur(void)
|
||||||
|
{
|
||||||
|
extrudeSolidFromPolygon(body, sizeof(body), bodyWidth,
|
||||||
|
BODY_SIDE, BODY_EDGE, BODY_WHOLE);
|
||||||
|
extrudeSolidFromPolygon(arm, sizeof(arm), bodyWidth / 4,
|
||||||
|
ARM_SIDE, ARM_EDGE, ARM_WHOLE);
|
||||||
|
extrudeSolidFromPolygon(leg, sizeof(leg), bodyWidth / 2,
|
||||||
|
LEG_SIDE, LEG_EDGE, LEG_WHOLE);
|
||||||
|
extrudeSolidFromPolygon(eye, sizeof(eye), bodyWidth + 0.2,
|
||||||
|
EYE_SIDE, EYE_EDGE, EYE_WHOLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
drawDinosaur(void)
|
||||||
|
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
/* Translate the dinosaur to be at (0,8,0). */
|
||||||
|
glTranslatef(-8, 0, -bodyWidth / 2);
|
||||||
|
glTranslatef(0.0, jump, 0.0);
|
||||||
|
glMaterialfv(GL_FRONT, GL_DIFFUSE, skinColor);
|
||||||
|
glCallList(BODY_WHOLE);
|
||||||
|
glTranslatef(0.0, 0.0, bodyWidth);
|
||||||
|
glCallList(ARM_WHOLE);
|
||||||
|
glCallList(LEG_WHOLE);
|
||||||
|
glTranslatef(0.0, 0.0, -bodyWidth - bodyWidth / 4);
|
||||||
|
glCallList(ARM_WHOLE);
|
||||||
|
glTranslatef(0.0, 0.0, -bodyWidth / 4);
|
||||||
|
glCallList(LEG_WHOLE);
|
||||||
|
glTranslatef(0.0, 0.0, bodyWidth / 2 - 0.1);
|
||||||
|
glMaterialfv(GL_FRONT, GL_DIFFUSE, eyeColor);
|
||||||
|
glCallList(EYE_WHOLE);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
static GLfloat floorVertices[4][3] = {
|
||||||
|
{ -20.0, 0.0, 20.0 },
|
||||||
|
{ 20.0, 0.0, 20.0 },
|
||||||
|
{ 20.0, 0.0, -20.0 },
|
||||||
|
{ -20.0, 0.0, -20.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Draw a floor (possibly textured). */
|
||||||
|
static void
|
||||||
|
drawFloor(void)
|
||||||
|
{
|
||||||
|
glDisable(GL_LIGHTING);
|
||||||
|
|
||||||
|
if (useTexture) {
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
}
|
||||||
|
|
||||||
|
glBegin(GL_QUADS);
|
||||||
|
glTexCoord2f(0.0, 0.0);
|
||||||
|
glVertex3fv(floorVertices[0]);
|
||||||
|
glTexCoord2f(0.0, 16.0);
|
||||||
|
glVertex3fv(floorVertices[1]);
|
||||||
|
glTexCoord2f(16.0, 16.0);
|
||||||
|
glVertex3fv(floorVertices[2]);
|
||||||
|
glTexCoord2f(16.0, 0.0);
|
||||||
|
glVertex3fv(floorVertices[3]);
|
||||||
|
glEnd();
|
||||||
|
|
||||||
|
if (useTexture) {
|
||||||
|
glDisable(GL_TEXTURE_2D);
|
||||||
|
}
|
||||||
|
|
||||||
|
glEnable(GL_LIGHTING);
|
||||||
|
}
|
||||||
|
|
||||||
|
static GLfloat floorPlane[4];
|
||||||
|
static GLfloat floorShadow[4][4];
|
||||||
|
|
||||||
|
static void
|
||||||
|
redraw(void)
|
||||||
|
{
|
||||||
|
int start, end;
|
||||||
|
|
||||||
|
if (reportSpeed) {
|
||||||
|
start = glutGet(GLUT_ELAPSED_TIME);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Clear; default stencil clears to zero. */
|
||||||
|
if ((stencilReflection && renderReflection) || (stencilShadow && renderShadow)) {
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
|
||||||
|
} else {
|
||||||
|
/* Avoid clearing stencil when not using it. */
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reposition the light source. */
|
||||||
|
lightPosition[0] = 12*cos(lightAngle);
|
||||||
|
lightPosition[1] = lightHeight;
|
||||||
|
lightPosition[2] = 12*sin(lightAngle);
|
||||||
|
if (directionalLight) {
|
||||||
|
lightPosition[3] = 0.0;
|
||||||
|
} else {
|
||||||
|
lightPosition[3] = 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
shadowMatrix(floorShadow, floorPlane, lightPosition);
|
||||||
|
|
||||||
|
glPushMatrix();
|
||||||
|
/* Perform scene rotations based on user mouse input. */
|
||||||
|
glRotatef(angle2, 1.0, 0.0, 0.0);
|
||||||
|
glRotatef(angle, 0.0, 1.0, 0.0);
|
||||||
|
|
||||||
|
/* Tell GL new light source position. */
|
||||||
|
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
|
||||||
|
|
||||||
|
if (renderReflection) {
|
||||||
|
if (stencilReflection) {
|
||||||
|
/* We can eliminate the visual "artifact" of seeing the "flipped"
|
||||||
|
dinosaur underneath the floor by using stencil. The idea is
|
||||||
|
draw the floor without color or depth update but so that
|
||||||
|
a stencil value of one is where the floor will be. Later when
|
||||||
|
rendering the dinosaur reflection, we will only update pixels
|
||||||
|
with a stencil value of 1 to make sure the reflection only
|
||||||
|
lives on the floor, not below the floor. */
|
||||||
|
|
||||||
|
/* Don't update color or depth. */
|
||||||
|
glDisable(GL_DEPTH_TEST);
|
||||||
|
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
|
||||||
|
|
||||||
|
/* Draw 1 into the stencil buffer. */
|
||||||
|
glEnable(GL_STENCIL_TEST);
|
||||||
|
glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
|
||||||
|
glStencilFunc(GL_ALWAYS, 1, 0xffffffff);
|
||||||
|
|
||||||
|
/* Now render floor; floor pixels just get their stencil set to 1. */
|
||||||
|
drawFloor();
|
||||||
|
|
||||||
|
/* Re-enable update of color and depth. */
|
||||||
|
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
|
||||||
|
/* Now, only render where stencil is set to 1. */
|
||||||
|
glStencilFunc(GL_EQUAL, 1, 0xffffffff); /* draw if ==1 */
|
||||||
|
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
|
||||||
|
}
|
||||||
|
|
||||||
|
glPushMatrix();
|
||||||
|
|
||||||
|
/* The critical reflection step: Reflect dinosaur through the floor
|
||||||
|
(the Y=0 plane) to make a relection. */
|
||||||
|
glScalef(1.0, -1.0, 1.0);
|
||||||
|
|
||||||
|
/* Reflect the light position. */
|
||||||
|
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
|
||||||
|
|
||||||
|
/* To avoid our normals getting reversed and hence botched lighting
|
||||||
|
on the reflection, turn on normalize. */
|
||||||
|
glEnable(GL_NORMALIZE);
|
||||||
|
glCullFace(GL_FRONT);
|
||||||
|
|
||||||
|
/* Draw the reflected dinosaur. */
|
||||||
|
drawDinosaur();
|
||||||
|
|
||||||
|
/* Disable noramlize again and re-enable back face culling. */
|
||||||
|
glDisable(GL_NORMALIZE);
|
||||||
|
glCullFace(GL_BACK);
|
||||||
|
|
||||||
|
glPopMatrix();
|
||||||
|
|
||||||
|
/* Switch back to the unreflected light position. */
|
||||||
|
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
|
||||||
|
|
||||||
|
if (stencilReflection) {
|
||||||
|
glDisable(GL_STENCIL_TEST);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Back face culling will get used to only draw either the top or the
|
||||||
|
bottom floor. This let's us get a floor with two distinct
|
||||||
|
appearances. The top floor surface is reflective and kind of red.
|
||||||
|
The bottom floor surface is not reflective and blue. */
|
||||||
|
|
||||||
|
/* Draw "bottom" of floor in blue. */
|
||||||
|
glFrontFace(GL_CW); /* Switch face orientation. */
|
||||||
|
glColor4f(0.1, 0.1, 0.7, 1.0);
|
||||||
|
drawFloor();
|
||||||
|
glFrontFace(GL_CCW);
|
||||||
|
|
||||||
|
if (renderShadow) {
|
||||||
|
if (stencilShadow) {
|
||||||
|
/* Draw the floor with stencil value 3. This helps us only
|
||||||
|
draw the shadow once per floor pixel (and only on the
|
||||||
|
floor pixels). */
|
||||||
|
glEnable(GL_STENCIL_TEST);
|
||||||
|
glStencilFunc(GL_ALWAYS, 3, 0xffffffff);
|
||||||
|
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Draw "top" of floor. Use blending to blend in reflection. */
|
||||||
|
glEnable(GL_BLEND);
|
||||||
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
glColor4f(0.7, 0.0, 0.0, 0.3);
|
||||||
|
glColor4f(1.0, 1.0, 1.0, 0.3);
|
||||||
|
drawFloor();
|
||||||
|
glDisable(GL_BLEND);
|
||||||
|
|
||||||
|
if (renderDinosaur) {
|
||||||
|
/* Draw "actual" dinosaur, not its reflection. */
|
||||||
|
drawDinosaur();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (renderShadow) {
|
||||||
|
|
||||||
|
/* Render the projected shadow. */
|
||||||
|
|
||||||
|
if (stencilShadow) {
|
||||||
|
|
||||||
|
/* Now, only render where stencil is set above 2 (ie, 3 where
|
||||||
|
the top floor is). Update stencil with 2 where the shadow
|
||||||
|
gets drawn so we don't redraw (and accidently reblend) the
|
||||||
|
shadow). */
|
||||||
|
glStencilFunc(GL_LESS, 2, 0xffffffff); /* draw if ==1 */
|
||||||
|
glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* To eliminate depth buffer artifacts, we use polygon offset
|
||||||
|
to raise the depth of the projected shadow slightly so
|
||||||
|
that it does not depth buffer alias with the floor. */
|
||||||
|
if (offsetShadow) {
|
||||||
|
switch (polygonOffsetVersion) {
|
||||||
|
case EXTENSION:
|
||||||
|
#ifdef GL_EXT_polygon_offset
|
||||||
|
glEnable(GL_POLYGON_OFFSET_EXT);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef GL_VERSION_1_1
|
||||||
|
case ONE_DOT_ONE:
|
||||||
|
glEnable(GL_POLYGON_OFFSET_FILL);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
case MISSING:
|
||||||
|
/* Oh well. */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Render 50% black shadow color on top of whatever the
|
||||||
|
floor appareance is. */
|
||||||
|
glEnable(GL_BLEND);
|
||||||
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
glDisable(GL_LIGHTING); /* Force the 50% black. */
|
||||||
|
glColor4f(0.0, 0.0, 0.0, 0.5);
|
||||||
|
|
||||||
|
glPushMatrix();
|
||||||
|
/* Project the shadow. */
|
||||||
|
glMultMatrixf((GLfloat *) floorShadow);
|
||||||
|
drawDinosaur();
|
||||||
|
glPopMatrix();
|
||||||
|
|
||||||
|
glDisable(GL_BLEND);
|
||||||
|
glEnable(GL_LIGHTING);
|
||||||
|
|
||||||
|
if (offsetShadow) {
|
||||||
|
switch (polygonOffsetVersion) {
|
||||||
|
#ifdef GL_EXT_polygon_offset
|
||||||
|
case EXTENSION:
|
||||||
|
glDisable(GL_POLYGON_OFFSET_EXT);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef GL_VERSION_1_1
|
||||||
|
case ONE_DOT_ONE:
|
||||||
|
glDisable(GL_POLYGON_OFFSET_FILL);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
case MISSING:
|
||||||
|
/* Oh well. */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (stencilShadow) {
|
||||||
|
glDisable(GL_STENCIL_TEST);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
glPushMatrix();
|
||||||
|
glDisable(GL_LIGHTING);
|
||||||
|
glColor3f(1.0, 1.0, 0.0);
|
||||||
|
if (directionalLight) {
|
||||||
|
/* Draw an arrowhead. */
|
||||||
|
glDisable(GL_CULL_FACE);
|
||||||
|
glTranslatef(lightPosition[0], lightPosition[1], lightPosition[2]);
|
||||||
|
glRotatef(lightAngle * -180.0 / M_PI, 0, 1, 0);
|
||||||
|
glRotatef(atan(lightHeight/12) * 180.0 / M_PI, 0, 0, 1);
|
||||||
|
glBegin(GL_TRIANGLE_FAN);
|
||||||
|
glVertex3f(0, 0, 0);
|
||||||
|
glVertex3f(2, 1, 1);
|
||||||
|
glVertex3f(2, -1, 1);
|
||||||
|
glVertex3f(2, -1, -1);
|
||||||
|
glVertex3f(2, 1, -1);
|
||||||
|
glVertex3f(2, 1, 1);
|
||||||
|
glEnd();
|
||||||
|
/* Draw a white line from light direction. */
|
||||||
|
glColor3f(1.0, 1.0, 1.0);
|
||||||
|
glBegin(GL_LINES);
|
||||||
|
glVertex3f(0, 0, 0);
|
||||||
|
glVertex3f(5, 0, 0);
|
||||||
|
glEnd();
|
||||||
|
glEnable(GL_CULL_FACE);
|
||||||
|
} else {
|
||||||
|
/* Draw a yellow ball at the light source. */
|
||||||
|
glTranslatef(lightPosition[0], lightPosition[1], lightPosition[2]);
|
||||||
|
glutSolidSphere(1.0, 5, 5);
|
||||||
|
}
|
||||||
|
glEnable(GL_LIGHTING);
|
||||||
|
glPopMatrix();
|
||||||
|
|
||||||
|
glPopMatrix();
|
||||||
|
|
||||||
|
if (reportSpeed) {
|
||||||
|
glFinish();
|
||||||
|
end = glutGet(GLUT_ELAPSED_TIME);
|
||||||
|
printf("Speed %.3g frames/sec (%d ms)\n", 1000.0/(end-start), end-start);
|
||||||
|
}
|
||||||
|
|
||||||
|
glutSwapBuffers();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ARGSUSED2 */
|
||||||
|
static void
|
||||||
|
mouse(int button, int state, int x, int y)
|
||||||
|
{
|
||||||
|
if (button == GLUT_LEFT_BUTTON) {
|
||||||
|
if (state == GLUT_DOWN) {
|
||||||
|
moving = 1;
|
||||||
|
startx = x;
|
||||||
|
starty = y;
|
||||||
|
}
|
||||||
|
if (state == GLUT_UP) {
|
||||||
|
moving = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (button == GLUT_MIDDLE_BUTTON) {
|
||||||
|
if (state == GLUT_DOWN) {
|
||||||
|
lightMoving = 1;
|
||||||
|
lightStartX = x;
|
||||||
|
lightStartY = y;
|
||||||
|
}
|
||||||
|
if (state == GLUT_UP) {
|
||||||
|
lightMoving = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ARGSUSED1 */
|
||||||
|
static void
|
||||||
|
motion(int x, int y)
|
||||||
|
{
|
||||||
|
if (moving) {
|
||||||
|
angle = angle + (x - startx);
|
||||||
|
angle2 = angle2 + (y - starty);
|
||||||
|
startx = x;
|
||||||
|
starty = y;
|
||||||
|
glutPostRedisplay();
|
||||||
|
}
|
||||||
|
if (lightMoving) {
|
||||||
|
lightAngle += (x - lightStartX)/40.0;
|
||||||
|
lightHeight += (lightStartY - y)/20.0;
|
||||||
|
lightStartX = x;
|
||||||
|
lightStartY = y;
|
||||||
|
glutPostRedisplay();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Advance time varying state when idle callback registered. */
|
||||||
|
static void
|
||||||
|
idle(void)
|
||||||
|
{
|
||||||
|
static float time = 0.0;
|
||||||
|
|
||||||
|
time = glutGet(GLUT_ELAPSED_TIME) / 500.0;
|
||||||
|
|
||||||
|
jump = 4.0 * fabs(sin(time)*0.5);
|
||||||
|
if (!lightMoving) {
|
||||||
|
lightAngle += 0.03;
|
||||||
|
}
|
||||||
|
glutPostRedisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
enum {
|
||||||
|
M_NONE, M_MOTION, M_LIGHT, M_TEXTURE, M_SHADOWS, M_REFLECTION, M_DINOSAUR,
|
||||||
|
M_STENCIL_REFLECTION, M_STENCIL_SHADOW, M_OFFSET_SHADOW,
|
||||||
|
M_POSITIONAL, M_DIRECTIONAL, M_PERFORMANCE
|
||||||
|
};
|
||||||
|
|
||||||
|
static void
|
||||||
|
controlLights(int value)
|
||||||
|
{
|
||||||
|
switch (value) {
|
||||||
|
case M_NONE:
|
||||||
|
return;
|
||||||
|
case M_MOTION:
|
||||||
|
animation = 1 - animation;
|
||||||
|
if (animation) {
|
||||||
|
glutIdleFunc(idle);
|
||||||
|
} else {
|
||||||
|
glutIdleFunc(NULL);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_LIGHT:
|
||||||
|
lightSwitch = !lightSwitch;
|
||||||
|
if (lightSwitch) {
|
||||||
|
glEnable(GL_LIGHT0);
|
||||||
|
} else {
|
||||||
|
glDisable(GL_LIGHT0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_TEXTURE:
|
||||||
|
useTexture = !useTexture;
|
||||||
|
break;
|
||||||
|
case M_SHADOWS:
|
||||||
|
renderShadow = 1 - renderShadow;
|
||||||
|
break;
|
||||||
|
case M_REFLECTION:
|
||||||
|
renderReflection = 1 - renderReflection;
|
||||||
|
break;
|
||||||
|
case M_DINOSAUR:
|
||||||
|
renderDinosaur = 1 - renderDinosaur;
|
||||||
|
break;
|
||||||
|
case M_STENCIL_REFLECTION:
|
||||||
|
stencilReflection = 1 - stencilReflection;
|
||||||
|
break;
|
||||||
|
case M_STENCIL_SHADOW:
|
||||||
|
stencilShadow = 1 - stencilShadow;
|
||||||
|
break;
|
||||||
|
case M_OFFSET_SHADOW:
|
||||||
|
offsetShadow = 1 - offsetShadow;
|
||||||
|
break;
|
||||||
|
case M_POSITIONAL:
|
||||||
|
directionalLight = 0;
|
||||||
|
break;
|
||||||
|
case M_DIRECTIONAL:
|
||||||
|
directionalLight = 1;
|
||||||
|
break;
|
||||||
|
case M_PERFORMANCE:
|
||||||
|
reportSpeed = 1 - reportSpeed;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
glutPostRedisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* When not visible, stop animating. Restart when visible again. */
|
||||||
|
static void
|
||||||
|
visible(int vis)
|
||||||
|
{
|
||||||
|
if (vis == GLUT_VISIBLE) {
|
||||||
|
if (animation)
|
||||||
|
glutIdleFunc(idle);
|
||||||
|
} else {
|
||||||
|
if (!animation)
|
||||||
|
glutIdleFunc(NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Press any key to redraw; good when motion stopped and
|
||||||
|
performance reporting on. */
|
||||||
|
/* ARGSUSED */
|
||||||
|
static void
|
||||||
|
key(unsigned char c, int x, int y)
|
||||||
|
{
|
||||||
|
if (c == 27) {
|
||||||
|
exit(0); /* IRIS GLism, Escape quits. */
|
||||||
|
}
|
||||||
|
glutPostRedisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Press any key to redraw; good when motion stopped and
|
||||||
|
performance reporting on. */
|
||||||
|
/* ARGSUSED */
|
||||||
|
static void
|
||||||
|
special(int k, int x, int y)
|
||||||
|
{
|
||||||
|
glutPostRedisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
supportsOneDotOne(void)
|
||||||
|
{
|
||||||
|
const char *version;
|
||||||
|
int major, minor;
|
||||||
|
|
||||||
|
version = (char *) glGetString(GL_VERSION);
|
||||||
|
if (sscanf(version, "%d.%d", &major, &minor) == 2)
|
||||||
|
return major >= 1 && minor >= 1;
|
||||||
|
return 0; /* OpenGL version string malformed! */
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
glutInit(&argc, argv);
|
||||||
|
|
||||||
|
for (i=1; i<argc; i++) {
|
||||||
|
if (!strcmp("-linear", argv[i])) {
|
||||||
|
linearFiltering = 1;
|
||||||
|
} else if (!strcmp("-mipmap", argv[i])) {
|
||||||
|
useMipmaps = 1;
|
||||||
|
} else if (!strcmp("-ext", argv[i])) {
|
||||||
|
forceExtension = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_STENCIL);
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/* In GLUT 4.0, you'll be able to do this an be sure to
|
||||||
|
get 2 bits of stencil if the machine has it for you. */
|
||||||
|
glutInitDisplayString("samples stencil>=2 rgb double depth");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
glutCreateWindow("Shadowy Leapin' Lizards");
|
||||||
|
|
||||||
|
if (glutGet(GLUT_WINDOW_STENCIL_SIZE) <= 1) {
|
||||||
|
printf("dinoshade: Sorry, I need at least 2 bits of stencil.\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Register GLUT callbacks. */
|
||||||
|
glutDisplayFunc(redraw);
|
||||||
|
glutMouseFunc(mouse);
|
||||||
|
glutMotionFunc(motion);
|
||||||
|
glutVisibilityFunc(visible);
|
||||||
|
glutKeyboardFunc(key);
|
||||||
|
glutSpecialFunc(special);
|
||||||
|
|
||||||
|
glutCreateMenu(controlLights);
|
||||||
|
|
||||||
|
glutAddMenuEntry("Toggle motion", M_MOTION);
|
||||||
|
glutAddMenuEntry("-----------------------", M_NONE);
|
||||||
|
glutAddMenuEntry("Toggle light", M_LIGHT);
|
||||||
|
glutAddMenuEntry("Toggle texture", M_TEXTURE);
|
||||||
|
glutAddMenuEntry("Toggle shadows", M_SHADOWS);
|
||||||
|
glutAddMenuEntry("Toggle reflection", M_REFLECTION);
|
||||||
|
glutAddMenuEntry("Toggle dinosaur", M_DINOSAUR);
|
||||||
|
glutAddMenuEntry("-----------------------", M_NONE);
|
||||||
|
glutAddMenuEntry("Toggle reflection stenciling", M_STENCIL_REFLECTION);
|
||||||
|
glutAddMenuEntry("Toggle shadow stenciling", M_STENCIL_SHADOW);
|
||||||
|
glutAddMenuEntry("Toggle shadow offset", M_OFFSET_SHADOW);
|
||||||
|
glutAddMenuEntry("----------------------", M_NONE);
|
||||||
|
glutAddMenuEntry("Positional light", M_POSITIONAL);
|
||||||
|
glutAddMenuEntry("Directional light", M_DIRECTIONAL);
|
||||||
|
glutAddMenuEntry("-----------------------", M_NONE);
|
||||||
|
glutAddMenuEntry("Toggle performance", M_PERFORMANCE);
|
||||||
|
glutAttachMenu(GLUT_RIGHT_BUTTON);
|
||||||
|
makeDinosaur();
|
||||||
|
|
||||||
|
#ifdef GL_VERSION_1_1
|
||||||
|
if (supportsOneDotOne() && !forceExtension) {
|
||||||
|
polygonOffsetVersion = ONE_DOT_ONE;
|
||||||
|
glPolygonOffset(-2.0, -9.0);
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
#ifdef GL_EXT_polygon_offset
|
||||||
|
/* check for the polygon offset extension */
|
||||||
|
if (glutExtensionSupported("GL_EXT_polygon_offset")) {
|
||||||
|
polygonOffsetVersion = EXTENSION;
|
||||||
|
glPolygonOffsetEXT(-2.0, -0.002);
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
polygonOffsetVersion = MISSING;
|
||||||
|
printf("\ndinoshine: Missing polygon offset.\n");
|
||||||
|
printf(" Expect shadow depth aliasing artifacts.\n\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
glEnable(GL_CULL_FACE);
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
glLineWidth(3.0);
|
||||||
|
|
||||||
|
glMatrixMode(GL_PROJECTION);
|
||||||
|
gluPerspective( /* field of view in degree */ 40.0,
|
||||||
|
/* aspect ratio */ 1.0,
|
||||||
|
/* Z near */ 20.0, /* Z far */ 100.0);
|
||||||
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
gluLookAt(0.0, 8.0, 60.0, /* eye is at (0,8,60) */
|
||||||
|
0.0, 8.0, 0.0, /* center is at (0,8,0) */
|
||||||
|
0.0, 1.0, 0.); /* up is in postivie Y direction */
|
||||||
|
|
||||||
|
glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1);
|
||||||
|
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor);
|
||||||
|
glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.1);
|
||||||
|
glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.05);
|
||||||
|
glEnable(GL_LIGHT0);
|
||||||
|
glEnable(GL_LIGHTING);
|
||||||
|
|
||||||
|
makeFloorTexture();
|
||||||
|
|
||||||
|
/* Setup floor plane for projected shadow calculations. */
|
||||||
|
findPlane(floorPlane, floorVertices[1], floorVertices[2], floorVertices[3]);
|
||||||
|
|
||||||
|
glutMainLoop();
|
||||||
|
return 0; /* ANSI C requires main to return int. */
|
||||||
|
}
|
||||||
99
progs/tests/fogcoord.c
Normal file
99
progs/tests/fogcoord.c
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
/*
|
||||||
|
* Exercise GL_EXT_fog_coord
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define GL_GLEXT_PROTOTYPES
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <GL/glut.h>
|
||||||
|
|
||||||
|
static int Width = 600;
|
||||||
|
static int Height = 200;
|
||||||
|
static GLfloat Near = 5.0, Far = 25.0;
|
||||||
|
|
||||||
|
|
||||||
|
static void Display( void )
|
||||||
|
{
|
||||||
|
GLfloat t;
|
||||||
|
|
||||||
|
glClearColor(0.2, 0.2, 0.8, 0);
|
||||||
|
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
|
||||||
|
|
||||||
|
for (t = 0.0; t <= 1.0; t += 0.25) {
|
||||||
|
GLfloat f = -(Near + t * (Far - Near));
|
||||||
|
glFogCoordfEXT(f);
|
||||||
|
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(t * 10.0 - 5.0, 0, 0);
|
||||||
|
glBegin(GL_POLYGON);
|
||||||
|
glVertex2f(-1, -1);
|
||||||
|
glVertex2f( 1, -1);
|
||||||
|
glVertex2f( 1, 1);
|
||||||
|
glVertex2f(-1, 1);
|
||||||
|
glEnd();
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
glutSwapBuffers();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void Reshape( int width, int height )
|
||||||
|
{
|
||||||
|
GLfloat ar = (float) width / (float) height;
|
||||||
|
Width = width;
|
||||||
|
Height = height;
|
||||||
|
glViewport( 0, 0, width, height );
|
||||||
|
glMatrixMode( GL_PROJECTION );
|
||||||
|
glLoadIdentity();
|
||||||
|
glFrustum( -ar, ar, -1.0, 1.0, Near, Far );
|
||||||
|
glMatrixMode( GL_MODELVIEW );
|
||||||
|
glLoadIdentity();
|
||||||
|
glTranslatef( 0.0, 0.0, -15.0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void Key( unsigned char key, int x, int y )
|
||||||
|
{
|
||||||
|
(void) x;
|
||||||
|
(void) y;
|
||||||
|
switch (key) {
|
||||||
|
case 27:
|
||||||
|
exit(0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
glutPostRedisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void Init( void )
|
||||||
|
{
|
||||||
|
/* setup lighting, etc */
|
||||||
|
if (!glutExtensionSupported("GL_EXT_fog_coord")) {
|
||||||
|
printf("Sorry, this program requires GL_EXT_fog_coord\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FOG_COORDINATE_EXT);
|
||||||
|
glFogi(GL_FOG_MODE, GL_LINEAR);
|
||||||
|
glFogf(GL_FOG_START, Near);
|
||||||
|
glFogf(GL_FOG_END, Far);
|
||||||
|
glEnable(GL_FOG);
|
||||||
|
printf("Squares should be colored from white -> gray -> black.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main( int argc, char *argv[] )
|
||||||
|
{
|
||||||
|
glutInit( &argc, argv );
|
||||||
|
glutInitWindowPosition( 0, 0 );
|
||||||
|
glutInitWindowSize( Width, Height );
|
||||||
|
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
|
||||||
|
glutCreateWindow(argv[0]);
|
||||||
|
glutReshapeFunc( Reshape );
|
||||||
|
glutKeyboardFunc( Key );
|
||||||
|
glutDisplayFunc( Display );
|
||||||
|
Init();
|
||||||
|
glutMainLoop();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
381
progs/tests/manytex.c
Normal file
381
progs/tests/manytex.c
Normal file
@@ -0,0 +1,381 @@
|
|||||||
|
/* $Id: manytex.c,v 1.3 2000/11/09 16:53:26 brianp Exp $ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* test handling of many texture maps
|
||||||
|
* Also tests texture priority and residency.
|
||||||
|
*
|
||||||
|
* Brian Paul
|
||||||
|
* August 2, 2000
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <GL/glut.h>
|
||||||
|
|
||||||
|
|
||||||
|
static GLint NumTextures = 20;
|
||||||
|
static GLuint *TextureID = NULL;
|
||||||
|
static GLint *TextureWidth = NULL, *TextureHeight = NULL;
|
||||||
|
static GLboolean *TextureResidency = NULL;
|
||||||
|
static GLint TexWidth = 128, TexHeight = 128;
|
||||||
|
static GLfloat Zrot = 0;
|
||||||
|
static GLboolean Anim = GL_TRUE;
|
||||||
|
static GLint WinWidth = 500, WinHeight = 400;
|
||||||
|
static GLboolean MipMap = GL_FALSE;
|
||||||
|
static GLboolean LinearFilter = GL_FALSE;
|
||||||
|
static GLboolean RandomSize = GL_FALSE;
|
||||||
|
static GLint Rows, Columns;
|
||||||
|
static GLuint LowPriorityCount = 0;
|
||||||
|
|
||||||
|
|
||||||
|
static void Idle( void )
|
||||||
|
{
|
||||||
|
Zrot += 1.0;
|
||||||
|
glutPostRedisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void Display( void )
|
||||||
|
{
|
||||||
|
GLfloat spacing = WinWidth / Columns;
|
||||||
|
GLfloat size = spacing * 0.4;
|
||||||
|
GLint i;
|
||||||
|
|
||||||
|
/* test residency */
|
||||||
|
if (0)
|
||||||
|
{
|
||||||
|
GLboolean b;
|
||||||
|
GLint i, resident;
|
||||||
|
b = glAreTexturesResident(NumTextures, TextureID, TextureResidency);
|
||||||
|
if (b) {
|
||||||
|
printf("all resident\n");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
resident = 0;
|
||||||
|
for (i = 0; i < NumTextures; i++) {
|
||||||
|
if (TextureResidency[i]) {
|
||||||
|
resident++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("%d of %d texture resident\n", resident, NumTextures);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* render the textured quads */
|
||||||
|
glClear( GL_COLOR_BUFFER_BIT );
|
||||||
|
for (i = 0; i < NumTextures; i++) {
|
||||||
|
GLint row = i / Columns;
|
||||||
|
GLint col = i % Columns;
|
||||||
|
GLfloat x = col * spacing + spacing * 0.5;
|
||||||
|
GLfloat y = row * spacing + spacing * 0.5;
|
||||||
|
|
||||||
|
GLfloat maxDim = (TextureWidth[i] > TextureHeight[i])
|
||||||
|
? TextureWidth[i] : TextureHeight[i];
|
||||||
|
GLfloat w = TextureWidth[i] / maxDim;
|
||||||
|
GLfloat h = TextureHeight[i] / maxDim;
|
||||||
|
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(x, y, 0.0);
|
||||||
|
glRotatef(Zrot, 0, 0, 1);
|
||||||
|
glScalef(size, size, 1);
|
||||||
|
|
||||||
|
glBindTexture(GL_TEXTURE_2D, TextureID[i]);
|
||||||
|
glBegin(GL_POLYGON);
|
||||||
|
#if 0
|
||||||
|
glTexCoord2f(0, 0); glVertex2f(-1, -1);
|
||||||
|
glTexCoord2f(1, 0); glVertex2f( 1, -1);
|
||||||
|
glTexCoord2f(1, 1); glVertex2f( 1, 1);
|
||||||
|
glTexCoord2f(0, 1); glVertex2f(-1, 1);
|
||||||
|
#else
|
||||||
|
glTexCoord2f(0, 0); glVertex2f(-w, -h);
|
||||||
|
glTexCoord2f(1, 0); glVertex2f( w, -h);
|
||||||
|
glTexCoord2f(1, 1); glVertex2f( w, h);
|
||||||
|
glTexCoord2f(0, 1); glVertex2f(-w, h);
|
||||||
|
#endif
|
||||||
|
glEnd();
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
glutSwapBuffers();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void Reshape( int width, int height )
|
||||||
|
{
|
||||||
|
WinWidth = width;
|
||||||
|
WinHeight = height;
|
||||||
|
glViewport( 0, 0, width, height );
|
||||||
|
glMatrixMode( GL_PROJECTION );
|
||||||
|
glLoadIdentity();
|
||||||
|
glOrtho(0, width, 0, height, -1, 1);
|
||||||
|
glMatrixMode( GL_MODELVIEW );
|
||||||
|
glLoadIdentity();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return a random int in [min, max].
|
||||||
|
*/
|
||||||
|
static int RandomInt(int min, int max)
|
||||||
|
{
|
||||||
|
int i = rand();
|
||||||
|
int j = i % (max - min + 1);
|
||||||
|
return min + j;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void Init( void )
|
||||||
|
{
|
||||||
|
GLint i;
|
||||||
|
|
||||||
|
if (RandomSize) {
|
||||||
|
printf("Creating %d %s random-size textures, ", NumTextures,
|
||||||
|
MipMap ? "Mipmapped" : "non-Mipmapped");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf("Creating %d %s %d x %d textures, ", NumTextures,
|
||||||
|
MipMap ? "Mipmapped" : "non-Mipmapped",
|
||||||
|
TexWidth, TexHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (LinearFilter) {
|
||||||
|
printf("bilinear filtering\n");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf("nearest filtering\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* compute number of rows and columns of rects */
|
||||||
|
{
|
||||||
|
GLfloat area = (GLfloat) (WinWidth * WinHeight) / (GLfloat) NumTextures;
|
||||||
|
GLfloat edgeLen = sqrt(area);
|
||||||
|
|
||||||
|
Columns = WinWidth / edgeLen;
|
||||||
|
Rows = (NumTextures + Columns - 1) / Columns;
|
||||||
|
printf("Rows: %d Cols: %d\n", Rows, Columns);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!TextureID) {
|
||||||
|
TextureID = (GLuint *) malloc(sizeof(GLuint) * NumTextures);
|
||||||
|
assert(TextureID);
|
||||||
|
glGenTextures(NumTextures, TextureID);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!TextureResidency) {
|
||||||
|
TextureResidency = (GLboolean *) malloc(sizeof(GLboolean) * NumTextures);
|
||||||
|
assert(TextureResidency);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!TextureWidth) {
|
||||||
|
TextureWidth = (GLint *) malloc(sizeof(GLint) * NumTextures);
|
||||||
|
assert(TextureWidth);
|
||||||
|
}
|
||||||
|
if (!TextureHeight) {
|
||||||
|
TextureHeight = (GLint *) malloc(sizeof(GLint) * NumTextures);
|
||||||
|
assert(TextureHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < NumTextures; i++) {
|
||||||
|
GLubyte color[4];
|
||||||
|
GLubyte *texImage;
|
||||||
|
GLint j, row, col;
|
||||||
|
|
||||||
|
row = i / Columns;
|
||||||
|
col = i % Columns;
|
||||||
|
|
||||||
|
glBindTexture(GL_TEXTURE_2D, TextureID[i]);
|
||||||
|
|
||||||
|
if (i < LowPriorityCount)
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 0.5F);
|
||||||
|
|
||||||
|
if (RandomSize) {
|
||||||
|
#if 0
|
||||||
|
int k = (glutGet(GLUT_ELAPSED_TIME) % 7) + 2;
|
||||||
|
TexWidth = 1 << k;
|
||||||
|
TexHeight = 1 << k;
|
||||||
|
#else
|
||||||
|
TexWidth = 1 << RandomInt(2, 7);
|
||||||
|
TexHeight = 1 << RandomInt(2, 7);
|
||||||
|
printf("Random size of %3d: %d x %d\n", i, TexWidth, TexHeight);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
TextureWidth[i] = TexWidth;
|
||||||
|
TextureHeight[i] = TexHeight;
|
||||||
|
|
||||||
|
texImage = (GLubyte*) malloc(4 * TexWidth * TexHeight * sizeof(GLubyte));
|
||||||
|
assert(texImage);
|
||||||
|
|
||||||
|
/* determine texture color */
|
||||||
|
color[0] = (GLint) (255.0 * ((float) col / (Columns - 1)));
|
||||||
|
color[1] = 127;
|
||||||
|
color[2] = (GLint) (255.0 * ((float) row / (Rows - 1)));
|
||||||
|
color[3] = 255;
|
||||||
|
|
||||||
|
/* fill in solid-colored teximage */
|
||||||
|
for (j = 0; j < TexWidth * TexHeight; j++) {
|
||||||
|
texImage[j*4+0] = color[0];
|
||||||
|
texImage[j*4+1] = color[1];
|
||||||
|
texImage[j*4+2] = color[2];
|
||||||
|
texImage[j*4+3] = color[3];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (MipMap) {
|
||||||
|
GLint level = 0;
|
||||||
|
GLint w = TexWidth, h = TexHeight;
|
||||||
|
while (1) {
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA, w, h, 0,
|
||||||
|
GL_RGBA, GL_UNSIGNED_BYTE, texImage);
|
||||||
|
if (w == 1 && h == 1)
|
||||||
|
break;
|
||||||
|
if (w > 1)
|
||||||
|
w /= 2;
|
||||||
|
if (h > 1)
|
||||||
|
h /= 2;
|
||||||
|
level++;
|
||||||
|
/*printf("%d: %d x %d\n", level, w, h);*/
|
||||||
|
}
|
||||||
|
if (LinearFilter) {
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
|
||||||
|
GL_LINEAR_MIPMAP_LINEAR);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
|
||||||
|
GL_NEAREST_MIPMAP_NEAREST);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/* Set corners to white */
|
||||||
|
int k = 0;
|
||||||
|
texImage[k+0] = texImage[k+1] = texImage[k+2] = texImage[k+3] = 255;
|
||||||
|
k = (TexWidth - 1) * 4;
|
||||||
|
texImage[k+0] = texImage[k+1] = texImage[k+2] = texImage[k+3] = 255;
|
||||||
|
k = (TexWidth * TexHeight - TexWidth) * 4;
|
||||||
|
texImage[k+0] = texImage[k+1] = texImage[k+2] = texImage[k+3] = 255;
|
||||||
|
k = (TexWidth * TexHeight - 1) * 4;
|
||||||
|
texImage[k+0] = texImage[k+1] = texImage[k+2] = texImage[k+3] = 255;
|
||||||
|
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, TexWidth, TexHeight, 0,
|
||||||
|
GL_RGBA, GL_UNSIGNED_BYTE, texImage);
|
||||||
|
if (LinearFilter) {
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
free(texImage);
|
||||||
|
}
|
||||||
|
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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 's':
|
||||||
|
Idle();
|
||||||
|
break;
|
||||||
|
case 'z':
|
||||||
|
Zrot -= step;
|
||||||
|
break;
|
||||||
|
case 'Z':
|
||||||
|
Zrot += step;
|
||||||
|
break;
|
||||||
|
case ' ':
|
||||||
|
Init();
|
||||||
|
break;
|
||||||
|
case 27:
|
||||||
|
exit(0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
glutPostRedisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main( int argc, char *argv[] )
|
||||||
|
{
|
||||||
|
GLint i;
|
||||||
|
|
||||||
|
glutInit( &argc, argv );
|
||||||
|
glutInitWindowPosition( 0, 0 );
|
||||||
|
glutInitWindowSize( WinWidth, WinHeight );
|
||||||
|
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
|
||||||
|
glutCreateWindow(argv[0]);
|
||||||
|
glutReshapeFunc( Reshape );
|
||||||
|
glutKeyboardFunc( Key );
|
||||||
|
glutDisplayFunc( Display );
|
||||||
|
if (Anim)
|
||||||
|
glutIdleFunc(Idle);
|
||||||
|
|
||||||
|
for (i = 1; i < argc; i++) {
|
||||||
|
if (strcmp(argv[i], "-n") == 0) {
|
||||||
|
NumTextures = atoi(argv[i+1]);
|
||||||
|
if (NumTextures <= 0) {
|
||||||
|
printf("Error, bad number of textures\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
else if (strcmp(argv[i], "-mipmap") == 0) {
|
||||||
|
MipMap = GL_TRUE;
|
||||||
|
}
|
||||||
|
else if (strcmp(argv[i], "-linear") == 0) {
|
||||||
|
LinearFilter = GL_TRUE;
|
||||||
|
}
|
||||||
|
else if (strcmp(argv[i], "-size") == 0) {
|
||||||
|
TexWidth = atoi(argv[i+1]);
|
||||||
|
TexHeight = atoi(argv[i+2]);
|
||||||
|
assert(TexWidth >= 1);
|
||||||
|
assert(TexHeight >= 1);
|
||||||
|
i += 2;
|
||||||
|
}
|
||||||
|
else if (strcmp(argv[i], "-randomsize") == 0) {
|
||||||
|
RandomSize = GL_TRUE;
|
||||||
|
}
|
||||||
|
else if (strcmp(argv[i], "-lowpri") == 0) {
|
||||||
|
LowPriorityCount = atoi(argv[i+1]);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf("Usage:\n");
|
||||||
|
printf(" manytex [options]\n");
|
||||||
|
printf("Options:\n");
|
||||||
|
printf(" -n <number of texture objects>\n");
|
||||||
|
printf(" -size <width> <height> - specify texture size\n");
|
||||||
|
printf(" -randomsize - use random size textures\n");
|
||||||
|
printf(" -mipmap - generate mipmaps\n");
|
||||||
|
printf(" -linear - use linear filtering instead of nearest\n");
|
||||||
|
printf(" -lowpri <n> - Set lower priority on <n> textures\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Init();
|
||||||
|
|
||||||
|
glutMainLoop();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user