Two more demos - converted from exmaples in OpenGL redbook
Kang Zhao <[email protected]> Sat, 25 May 2013 10:08:32 +0800
| Newsgroups | gmane.comp.python.opengl.devel |
|---|---|
| Message-ID | <CAKChtJ0hxgXt3NK7jtZ1o3paTNO0t9sv6STMTXe9R53g-ZN+yA@mail.gmail.com> |
--089e01294a8076d9ec04dd816498 Content-Type: multipart/alternative; boundary=089e01294a8076d9e704dd816496 --089e01294a8076d9e704dd816496 Content-Type: text/plain; charset=ISO-8859-1 Hello developers, During my study of pyOpenGL, I converted two more examples in OpenGL redbook with pyOpenGL, which I didn't find under "PyOpenGLDemo\redbook" with PyOpenGLDemo package. The files are attached. Please feel free to include them into the PyOpenGLDemo package if you don't see any issue. PS, I am not sure what is the right practice to contribute such files, thus I simply email them to this list. You may find the codes are not perfectly Pythonic. I did it by intention to keep the codes look the same as the original C code as possible. And please feel free to polish them as needed - I am still on my way in learning Python. :) Regards, Kang --089e01294a8076d9e704dd816496 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div><div><div><div>Hello developers,<br><br></div>During = my study of pyOpenGL, I converted two more examples in OpenGL redbook=A0 wi= th pyOpenGL, which I didn't find under "PyOpenGLDemo\redbook"= with PyOpenGLDemo package. The files are attached. <br> <br></div>Please feel free to include them into the PyOpenGLDemo package if= you don't see any issue.=A0 PS, I am not sure what is the right practi= ce to contribute such files, thus I simply email them to this list.<br><br> </div>You may find the codes are not perfectly Pythonic. I did it by intent= ion to keep the codes look the same as the original C code as possible. And= please feel free to polish them as needed - I am still on my way in learni= ng Python. :)<br> <br></div><div>Regards,<br></div>Kang<br><br></div> --089e01294a8076d9e704dd816496-- --089e01294a8076d9ec04dd816498 Content-Type: application/octet-stream; name="select.py" Content-Disposition: attachment; filename="select.py" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hh459c050 IyEvdXNyL2Jpbi9weXRob24NCg0KIyBUaGlzIGlzIHN0YXRlbWVudCBpcyByZXF1aXJlZCBieSB0 aGUgYnVpbGQgc3lzdGVtIHRvIHF1ZXJ5IGJ1aWxkIGluZm8NCmlmIF9fbmFtZV9fID09ICdfX2J1 aWxkX18nOg0KICAgIHJhaXNlIEV4Y2VwdGlvbg0KDQonJycNCnNlbGVjdC5jIGZyb20gdGhlIFJl ZGJvb2sgZXhhbXBsZXMuICANCkNvbnZlcnRlZCB0byBQeXRob24gYnkgS2FuZyBaaGFvICh6aGFv a2FuZy5jbkBnbWFpbC5jb20pIE1heSwyMDEzLg0KVGVzdGVkIHdpdGggUHlPcGVuR0wgMy4wLjIN Cg0KLyoNCiAqIENvcHlyaWdodCAoYykgMTk5My0xOTk5LCBTaWxpY29uIEdyYXBoaWNzLCBJbmMu DQogKiBBTEwgUklHSFRTIFJFU0VSVkVEIA0KICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1v ZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgDQogKiBhbnkgcHVycG9zZSBh bmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3Zl DQogKiBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGgg dGhlIGNvcHlyaWdodCBub3RpY2UNCiAqIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVh ciBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IA0KICogdGhlIG5hbWUgb2Yg U2lsaWNvbiBHcmFwaGljcywgSW5jLiBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZw0KICogb3Ig cHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRo b3V0IHNwZWNpZmljLA0KICogd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiANCiAqDQogKiBUSEUg TUFURVJJQUwgRU1CT0RJRUQgT04gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBUTyBZT1UgIkFT LUlTIg0KICogQU5EIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MsIElNUExJ RUQgT1IgT1RIRVJXSVNFLA0KICogSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiwgQU5ZIFdB UlJBTlRZIE9GIE1FUkNIQU5UQUJJTElUWSBPUg0KICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBJTiBOTyBFVkVOVCBTSEFMTCBTSUxJQ09ODQogKiBHUkFQSElDUywgSU5DLiAg QkUgTElBQkxFIFRPIFlPVSBPUiBBTllPTkUgRUxTRSBGT1IgQU5ZIERJUkVDVCwNCiAqIFNQRUNJ QUwsIElOQ0lERU5UQUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPRiBBTlkN CiAqIEtJTkQsIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIsIElOQ0xVRElORyBXSVRIT1VUIExJ TUlUQVRJT04sDQogKiBMT1NTIE9GIFBST0ZJVCwgTE9TUyBPRiBVU0UsIFNBVklOR1MgT1IgUkVW RU5VRSwgT1IgVEhFIENMQUlNUyBPRg0KICogVEhJUkQgUEFSVElFUywgV0hFVEhFUiBPUiBOT1Qg U0lMSUNPTiBHUkFQSElDUywgSU5DLiAgSEFTIEJFRU4NCiAqIEFEVklTRUQgT0YgVEhFIFBPU1NJ QklMSVRZIE9GIFNVQ0ggTE9TUywgSE9XRVZFUiBDQVVTRUQgQU5EIE9ODQogKiBBTlkgVEhFT1JZ IE9GIExJQUJJTElUWSwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQ0K ICogUE9TU0VTU0lPTiwgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuDQogKiAN CiAqIFVTIEdvdmVybm1lbnQgVXNlcnMgUmVzdHJpY3RlZCBSaWdodHMgDQogKiBVc2UsIGR1cGxp Y2F0aW9uLCBvciBkaXNjbG9zdXJlIGJ5IHRoZSBHb3Zlcm5tZW50IGlzIHN1YmplY3QgdG8NCiAq IHJlc3RyaWN0aW9ucyBzZXQgZm9ydGggaW4gRkFSIDUyLjIyNy4xOShjKSgyKSBvciBzdWJwYXJh Z3JhcGgNCiAqIChjKSgxKShpaSkgb2YgdGhlIFJpZ2h0cyBpbiBUZWNobmljYWwgRGF0YSBhbmQg Q29tcHV0ZXIgU29mdHdhcmUNCiAqIGNsYXVzZSBhdCBERkFSUyAyNTIuMjI3LTcwMTMgYW5kL29y IGluIHNpbWlsYXIgb3Igc3VjY2Vzc29yDQogKiBjbGF1c2VzIGluIHRoZSBGQVIgb3IgdGhlIERP RCBvciBOQVNBIEZBUiBTdXBwbGVtZW50Lg0KICogVW5wdWJsaXNoZWQtLSByaWdodHMgcmVzZXJ2 ZWQgdW5kZXIgdGhlIGNvcHlyaWdodCBsYXdzIG9mIHRoZQ0KICogVW5pdGVkIFN0YXRlcy4gIENv bnRyYWN0b3IvbWFudWZhY3R1cmVyIGlzIFNpbGljb24gR3JhcGhpY3MsDQogKiBJbmMuLCAyMDEx IE4uICBTaG9yZWxpbmUgQmx2ZC4sIE1vdW50YWluIFZpZXcsIENBIDk0MDM5LTczMTEuDQogKg0K ICogT3BlbkdMKFIpIGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsgb2YgU2lsaWNvbiBHcmFwaGlj cywgSW5jLg0KICovDQoNCi8qDQogKiBzZWxlY3QuYw0KICogVGhpcyBpcyBhbiBpbGx1c3RyYXRp b24gb2YgdGhlIHNlbGVjdGlvbiBtb2RlIGFuZCANCiAqIG5hbWUgc3RhY2ssIHdoaWNoIGRldGVj dHMgd2hldGhlciBvYmplY3RzIHdoaWNoIGNvbGxpZGUgDQogKiB3aXRoIGEgdmlld2luZyB2b2x1 bWUuICBGaXJzdCwgZm91ciB0cmlhbmdsZXMgYW5kIGEgDQogKiByZWN0YW5ndWxhciBib3ggcmVw cmVzZW50aW5nIGEgdmlld2luZyB2b2x1bWUgYXJlIGRyYXduIA0KICogKGRyYXdTY2VuZSByb3V0 aW5lKS4gIFRoZSBncmVlbiB0cmlhbmdsZSBhbmQgeWVsbG93IA0KICogdHJpYW5nbGVzIGFwcGVh ciB0byBsaWUgd2l0aGluIHRoZSB2aWV3aW5nIHZvbHVtZSwgYnV0IA0KICogdGhlIHJlZCB0cmlh bmdsZSBhcHBlYXJzIHRvIGxpZSBvdXRzaWRlIGl0LiAgVGhlbiB0aGUgDQogKiBzZWxlY3Rpb24g bW9kZSBpcyBlbnRlcmVkIChzZWxlY3RPYmplY3RzIHJvdXRpbmUpLiAgDQogKiBEcmF3aW5nIHRv IHRoZSBzY3JlZW4gY2Vhc2VzLiAgVG8gc2VlIGlmIGFueSBjb2xsaXNpb25zIA0KICogb2NjdXIs IHRoZSBmb3VyIHRyaWFuZ2xlcyBhcmUgY2FsbGVkLiAgSW4gdGhpcyBleGFtcGxlLCANCiAqIHRo ZSBncmVlbiB0cmlhbmdsZSBjYXVzZXMgb25lIGhpdCB3aXRoIHRoZSBuYW1lIDEsIGFuZCANCiAq IHRoZSB5ZWxsb3cgdHJpYW5nbGVzIGNhdXNlIG9uZSBoaXQgd2l0aCB0aGUgbmFtZSAzLg0KICov DQoNCicnJw0KDQppbXBvcnQgc3lzICANCnRyeTogIA0KICAgIGZyb20gT3BlbkdMLkdMVVQgaW1w b3J0ICogIA0KICAgIGZyb20gT3BlbkdMLkdMIGltcG9ydCAqICANCiAgICBmcm9tIE9wZW5HTC5H TFUgaW1wb3J0ICogIA0KZXhjZXB0OiAgDQogICAgcHJpbnQgIkVSUk9SOiBQeU9wZW5HTCBub3Qg aW5zdGFsbGVkIHByb3Blcmx5LiIgIA0KICAgIHN5cy5leGl0KCkNCg0KZGVmIGRyYXdUcmlhbmds ZSAoIHgxLCAgeTEsICB4MiwgeTIsICB4MywgIHkzLCAgeik6DQogICAgZ2xCZWdpbiAoR0xfVFJJ QU5HTEVTKTsNCiAgICBnbFZlcnRleDNmICh4MSwgeTEsIHopOw0KICAgIGdsVmVydGV4M2YgKHgy LCB5Miwgeik7DQogICAgZ2xWZXJ0ZXgzZiAoeDMsIHkzLCB6KTsNCiAgICBnbEVuZCAoKTsNCg0K ZGVmIGRyYXdWaWV3Vm9sdW1lICh4MSwgeDIsICB5MSwgeTIsIHoxLCAgejIpOg0KICAgIGdsQ29s b3IzZiAoMS4wLCAxLjAsIDEuMCk7DQogICAgZ2xCZWdpbiAoR0xfTElORV9MT09QKTsNCiAgICBn bFZlcnRleDNmICh4MSwgeTEsIC16MSk7DQogICAgZ2xWZXJ0ZXgzZiAoeDIsIHkxLCAtejEpOw0K ICAgIGdsVmVydGV4M2YgKHgyLCB5MiwgLXoxKTsNCiAgICBnbFZlcnRleDNmICh4MSwgeTIsIC16 MSk7DQogICAgZ2xFbmQgKCk7DQogICAgDQogICAgZ2xCZWdpbiAoR0xfTElORV9MT09QKTsNCiAg ICBnbFZlcnRleDNmICh4MSwgeTEsIC16Mik7DQogICAgZ2xWZXJ0ZXgzZiAoeDIsIHkxLCAtejIp Ow0KICAgIGdsVmVydGV4M2YgKHgyLCB5MiwgLXoyKTsNCiAgICBnbFZlcnRleDNmICh4MSwgeTIs IC16Mik7DQogICAgZ2xFbmQgKCk7DQogICAgICAgIA0KICAgIGdsQmVnaW4gKEdMX0xJTkVTKTsg ICMgIDQgbGluZXMNCiAgICBnbFZlcnRleDNmICh4MSwgeTEsIC16MSk7DQogICAgZ2xWZXJ0ZXgz ZiAoeDEsIHkxLCAtejIpOw0KICAgIGdsVmVydGV4M2YgKHgxLCB5MiwgLXoxKTsNCiAgICBnbFZl cnRleDNmICh4MSwgeTIsIC16Mik7DQogICAgZ2xWZXJ0ZXgzZiAoeDIsIHkxLCAtejEpOw0KICAg IGdsVmVydGV4M2YgKHgyLCB5MSwgLXoyKTsNCiAgICBnbFZlcnRleDNmICh4MiwgeTIsIC16MSk7 DQogICAgZ2xWZXJ0ZXgzZiAoeDIsIHkyLCAtejIpOw0KICAgIGdsRW5kICgpOw0KDQoNCmRlZiBk cmF3U2NlbmUgKCk6DQogICAgZ2xNYXRyaXhNb2RlIChHTF9QUk9KRUNUSU9OKTsNCiAgICBnbExv YWRJZGVudGl0eSAoKTsNCiAgICBnbHVQZXJzcGVjdGl2ZSAoNDAuMCwgNC4wLzMuMCwgMS4wLCAx MDAuMCk7DQogICAgDQogICAgZ2xNYXRyaXhNb2RlIChHTF9NT0RFTFZJRVcpOw0KICAgIGdsTG9h ZElkZW50aXR5ICgpOw0KICAgIGdsdUxvb2tBdCAoNy41LCA3LjUsIDEyLjUsIDIuNSwgMi41LCAt NS4wLCAwLjAsIDEuMCwgMC4wKTsNCiAgICBnbENvbG9yM2YgKDAuMCwgMS4wLCAwLjApOyAgICMg IGdyZWVuIHRyaWFuZ2xlDQogICAgZHJhd1RyaWFuZ2xlICgyLjAsIDIuMCwgMy4wLCAyLjAsIDIu NSwgMy4wLCAtNS4wKTsNCiAgICBnbENvbG9yM2YgKDEuMCwgMC4wLCAwLjApOyAgICMgIHJlZCB0 cmlhbmdsZQ0KICAgIGRyYXdUcmlhbmdsZSAoMi4wLCA3LjAsIDMuMCwgNy4wLCAyLjUsIDguMCwg LTUuMCk7DQogICAgZ2xDb2xvcjNmICgxLjAsIDEuMCwgMC4wKTsgICAjIHllbGxvdyB0cmlhbmds ZXMNCiAgICBkcmF3VHJpYW5nbGUgKDIuMCwgMi4wLCAzLjAsIDIuMCwgMi41LCAzLjAsIDAuMCk7 DQogICAgZHJhd1RyaWFuZ2xlICgyLjAsIDIuMCwgMy4wLCAyLjAsIDIuNSwgMy4wLCAtMTAuMCk7 DQogICAgZHJhd1ZpZXdWb2x1bWUgKDAuMCwgNS4wLCAwLjAsIDUuMCwgMC4wLCAxMC4wKTsNCg0K ZGVmIHByb2Nlc3NIaXRzIChoaXRfYnVmZmVyKToNCiAgICBwcmludCAiaGl0cyA9ICVkIiUobGVu KGhpdF9idWZmZXIpKTsgDQogICAgZm9yIGhpdF9yZWNvcmQgaW4gaGl0X2J1ZmZlcjoNCiAgICAg ICAgejEsIHoyLCBuYW1lcyA9IGhpdF9yZWNvcmQNCiAgICAgICAgcHJpbnQgIiBudW1iZXIgb2Yg bmFtZXMgZm9yIGhpdCA9ICVkIiUobGVuKG5hbWVzKSkNCiAgICAgICAgcHJpbnQgIiB6MSBpcyAl ZywiJXoxICsgIiAgejIgaXMgJWciJXoyDQogICAgICAgIHByaW50ICIgdGhlIG5hbWUgaXMgIjsN CiAgICAgICAgcHJpbnQgbmFtZXMNCg0KZGVmIHNlbGVjdE9iamVjdHMoKToNCiAgICBTSVpFID0g NTEyOw0KICAgIGdsU2VsZWN0QnVmZmVyKFNJWkUpOw0KICAgIGdsUmVuZGVyTW9kZSAoR0xfU0VM RUNUKTsNCiAgICANCiAgICBnbEluaXROYW1lcygpOw0KICAgIGdsUHVzaE5hbWUoMCk7DQogICAg DQogICAgZ2xQdXNoTWF0cml4ICgpOw0KICAgIGdsTWF0cml4TW9kZSAoR0xfUFJPSkVDVElPTik7 DQogICAgZ2xMb2FkSWRlbnRpdHkgKCk7DQogICAgZ2xPcnRobyAoMC4wLCA1LjAsIDAuMCwgNS4w LCAwLjAsIDEwLjApOw0KICAgIGdsTWF0cml4TW9kZSAoR0xfTU9ERUxWSUVXKTsNCiAgICBnbExv YWRJZGVudGl0eSAoKTsNCiAgICBnbExvYWROYW1lKDEpOw0KICAgIGRyYXdUcmlhbmdsZSAoMi4w LCAyLjAsIDMuMCwgMi4wLCAyLjUsIDMuMCwgLTUuMCk7DQogICAgZ2xMb2FkTmFtZSgyKTsNCiAg ICBkcmF3VHJpYW5nbGUgKDIuMCwgNy4wLCAzLjAsIDcuMCwgMi41LCA4LjAsIC01LjApOw0KICAg IGdsTG9hZE5hbWUoMyk7DQogICAgZHJhd1RyaWFuZ2xlICgyLjAsIDIuMCwgMy4wLCAyLjAsIDIu NSwgMy4wLCAwLjApOw0KICAgIGRyYXdUcmlhbmdsZSAoMi4wLCAyLjAsIDMuMCwgMi4wLCAyLjUs IDMuMCwgLTEwLjApOw0KICAgIGdsUG9wTWF0cml4ICgpOw0KICAgIGdsRmx1c2ggKCk7DQogICAg DQogICAgaGl0X2J1ZmZlciA9IGdsUmVuZGVyTW9kZSAoR0xfUkVOREVSKTsNCiAgICBwcm9jZXNz SGl0cyAoaGl0X2J1ZmZlcik7IA0KDQpkZWYgaW5pdCAoKToNCiAgICBnbEVuYWJsZShHTF9ERVBU SF9URVNUKTsNCiAgICBnbFNoYWRlTW9kZWwoR0xfRkxBVCk7DQoNCmRlZiBkaXNwbGF5KCk6DQog ICAgZ2xDbGVhckNvbG9yICgwLjAsIDAuMCwgMC4wLCAwLjApOw0KICAgIGdsQ2xlYXIoR0xfQ09M T1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQpOw0KICAgIGRyYXdTY2VuZSAoKTsN CiAgICBzZWxlY3RPYmplY3RzICgpOw0KICAgIGdsRmx1c2goKTsNCg0KaWYgX19uYW1lX18gPT0g Il9fbWFpbl9fIjoNCiAgICBnbHV0SW5pdChzeXMuYXJndik7DQogICAgZ2x1dEluaXREaXNwbGF5 TW9kZSAoR0xVVF9TSU5HTEUgfCBHTFVUX1JHQiB8IEdMVVRfREVQVEgpOw0KICAgIGdsdXRJbml0 V2luZG93U2l6ZSAoMjAwLCAyMDApOw0KICAgIGdsdXRJbml0V2luZG93UG9zaXRpb24gKDEwMCwg MTAwKTsNCiAgICBnbHV0Q3JlYXRlV2luZG93IChzeXMuYXJndlswXSk7DQogICAgaW5pdCgpOw0K ICAgIGdsdXREaXNwbGF5RnVuYyhkaXNwbGF5KTsNCiAgICBnbHV0TWFpbkxvb3AoKTsNCg0K --089e01294a8076d9ec04dd816498 Content-Type: application/octet-stream; name="picksquare.py" Content-Disposition: attachment; filename="picksquare.py" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hh459vsu1 IyEvdXNyL2Jpbi9weXRob24NCg0KIyBUaGlzIGlzIHN0YXRlbWVudCBpcyByZXF1aXJlZCBieSB0 aGUgYnVpbGQgc3lzdGVtIHRvIHF1ZXJ5IGJ1aWxkIGluZm8NCmlmIF9fbmFtZV9fID09ICdfX2J1 aWxkX18nOg0KICAgIHJhaXNlIEV4Y2VwdGlvbg0KDQonJycNCg0KcGlja3NxdWFyZS5jIGZyb20g dGhlIFJlZGJvb2sgZXhhbXBsZXMuICANCkNvbnZlcnRlZCB0byBQeXRob24gYnkgS2FuZyBaaGFv ICh6aGFva2FuZy5jbkBnbWFpbC5jb20pIE1heSwyMDEzLg0KVGVzdGVkIHdpdGggUHlPcGVuR0wg My4wLjINCg0KLyoNCiAqIENvcHlyaWdodCAoYykgMTk5My0xOTk5LCBTaWxpY29uIEdyYXBoaWNz LCBJbmMuDQogKiBBTEwgUklHSFRTIFJFU0VSVkVEIA0KICogUGVybWlzc2lvbiB0byB1c2UsIGNv cHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgDQogKiBhbnkgcHVy cG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhl IGFib3ZlDQogKiBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0 IGJvdGggdGhlIGNvcHlyaWdodCBub3RpY2UNCiAqIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IGFwcGVhciBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IA0KICogdGhlIG5h bWUgb2YgU2lsaWNvbiBHcmFwaGljcywgSW5jLiBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZw0K ICogb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2Fy ZSB3aXRob3V0IHNwZWNpZmljLA0KICogd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiANCiAqDQog KiBUSEUgTUFURVJJQUwgRU1CT0RJRUQgT04gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBUTyBZ T1UgIkFTLUlTIg0KICogQU5EIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ms IElNUExJRUQgT1IgT1RIRVJXSVNFLA0KICogSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiwg QU5ZIFdBUlJBTlRZIE9GIE1FUkNIQU5UQUJJTElUWSBPUg0KICogRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBJTiBOTyBFVkVOVCBTSEFMTCBTSUxJQ09ODQogKiBHUkFQSElDUywg SU5DLiAgQkUgTElBQkxFIFRPIFlPVSBPUiBBTllPTkUgRUxTRSBGT1IgQU5ZIERJUkVDVCwNCiAq IFNQRUNJQUwsIElOQ0lERU5UQUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBP RiBBTlkNCiAqIEtJTkQsIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIsIElOQ0xVRElORyBXSVRI T1VUIExJTUlUQVRJT04sDQogKiBMT1NTIE9GIFBST0ZJVCwgTE9TUyBPRiBVU0UsIFNBVklOR1Mg T1IgUkVWRU5VRSwgT1IgVEhFIENMQUlNUyBPRg0KICogVEhJUkQgUEFSVElFUywgV0hFVEhFUiBP UiBOT1QgU0lMSUNPTiBHUkFQSElDUywgSU5DLiAgSEFTIEJFRU4NCiAqIEFEVklTRUQgT0YgVEhF IFBPU1NJQklMSVRZIE9GIFNVQ0ggTE9TUywgSE9XRVZFUiBDQVVTRUQgQU5EIE9ODQogKiBBTlkg VEhFT1JZIE9GIExJQUJJTElUWSwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRQ0KICogUE9TU0VTU0lPTiwgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUu DQogKiANCiAqIFVTIEdvdmVybm1lbnQgVXNlcnMgUmVzdHJpY3RlZCBSaWdodHMgDQogKiBVc2Us IGR1cGxpY2F0aW9uLCBvciBkaXNjbG9zdXJlIGJ5IHRoZSBHb3Zlcm5tZW50IGlzIHN1YmplY3Qg dG8NCiAqIHJlc3RyaWN0aW9ucyBzZXQgZm9ydGggaW4gRkFSIDUyLjIyNy4xOShjKSgyKSBvciBz dWJwYXJhZ3JhcGgNCiAqIChjKSgxKShpaSkgb2YgdGhlIFJpZ2h0cyBpbiBUZWNobmljYWwgRGF0 YSBhbmQgQ29tcHV0ZXIgU29mdHdhcmUNCiAqIGNsYXVzZSBhdCBERkFSUyAyNTIuMjI3LTcwMTMg YW5kL29yIGluIHNpbWlsYXIgb3Igc3VjY2Vzc29yDQogKiBjbGF1c2VzIGluIHRoZSBGQVIgb3Ig dGhlIERPRCBvciBOQVNBIEZBUiBTdXBwbGVtZW50Lg0KICogVW5wdWJsaXNoZWQtLSByaWdodHMg cmVzZXJ2ZWQgdW5kZXIgdGhlIGNvcHlyaWdodCBsYXdzIG9mIHRoZQ0KICogVW5pdGVkIFN0YXRl cy4gIENvbnRyYWN0b3IvbWFudWZhY3R1cmVyIGlzIFNpbGljb24gR3JhcGhpY3MsDQogKiBJbmMu LCAyMDExIE4uICBTaG9yZWxpbmUgQmx2ZC4sIE1vdW50YWluIFZpZXcsIENBIDk0MDM5LTczMTEu DQogKg0KICogT3BlbkdMKFIpIGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsgb2YgU2lsaWNvbiBH cmFwaGljcywgSW5jLg0KICovDQoNCi8qDQogKiBwaWNrc3F1YXJlLmMNCiAqIFVzZSBvZiBtdWx0 aXBsZSBuYW1lcyBhbmQgcGlja2luZyBhcmUgZGVtb25zdHJhdGVkLiAgDQogKiBBIDN4MyBncmlk IG9mIHNxdWFyZXMgaXMgZHJhd24uICBXaGVuIHRoZSBsZWZ0IG1vdXNlIA0KICogYnV0dG9uIGlz IHByZXNzZWQsIGFsbCBzcXVhcmVzIHVuZGVyIHRoZSBjdXJzb3IgcG9zaXRpb24gDQogKiBoYXZl IHRoZWlyIGNvbG9yIGNoYW5nZWQuDQogKi8NCiANCiAnJycNCg0KaW1wb3J0IHN5cyAgDQp0cnk6 ICANCiAgICBmcm9tIE9wZW5HTC5HTFVUIGltcG9ydCAqICANCiAgICBmcm9tIE9wZW5HTC5HTCBp bXBvcnQgKiAgDQogICAgZnJvbSBPcGVuR0wuR0xVIGltcG9ydCAqICANCmV4Y2VwdDogIA0KICAg IHByaW50ICJFUlJPUjogUHlPcGVuR0wgbm90IGluc3RhbGxlZCBwcm9wZXJseS4iICANCiAgICBz eXMuZXhpdCgpDQoNCicnJyAgYW1vdW50IG9mIGNvbG9yIGZvciBlYWNoIHNxdWFyZSAgICAnJycN CmJvYXJkID0gW1swIGZvciBpIGluIHJhbmdlKDMpXSBmb3IgaiBpbiByYW5nZSgzKV0NCg0KJycn IENsZWFyIGNvbG9yIHZhbHVlIGZvciBldmVyeSBzcXVhcmUgb24gdGhlIGJvYXJkICAgJycnDQpk ZWYgaW5pdCgpOg0KICAgIGZvciBpIGluIHJhbmdlKDMpOg0KICAgICAgICBmb3IgaiBpbiByYW5n ZSgzKToNCiAgICAgICAgICAgIGJvYXJkW2ldW2pdID0gMDsNCiAgICBnbENsZWFyQ29sb3IgKDAu MCwgMC4wLCAwLjAsIDAuMCk7DQoNCicnJw0KLyogIFRoZSBuaW5lIHNxdWFyZXMgYXJlIGRyYXdu LiAgSW4gc2VsZWN0aW9uIG1vZGUsIGVhY2ggDQogKiAgc3F1YXJlIGlzIGdpdmVuIHR3byBuYW1l czogIG9uZSBmb3IgdGhlIHJvdyBhbmQgdGhlIA0KICogIG90aGVyIGZvciB0aGUgY29sdW1uIG9u IHRoZSBncmlkLiAgVGhlIGNvbG9yIG9mIGVhY2ggDQogKiAgc3F1YXJlIGlzIGRldGVybWluZWQg YnkgaXRzIHBvc2l0aW9uIG9uIHRoZSBncmlkLCBhbmQgDQogKiAgdGhlIHZhbHVlIGluIHRoZSBi b2FyZFtdW10gYXJyYXkuDQogKi8NCiAnJycNCmRlZiBkcmF3U3F1YXJlcyhtb2RlKToNCiAgICBm b3IgaSBpbiByYW5nZSgzKToNCiAgICAgICAgaWYgbW9kZSA9PSBHTF9TRUxFQ1Q6DQogICAgICAg ICAgICBnbExvYWROYW1lIChpKTsNCiAgICAgICAgZm9yIGogaW4gcmFuZ2UoMyk6DQogICAgICAg ICAgICBpZiAobW9kZSA9PSBHTF9TRUxFQ1QpOg0KICAgICAgICAgICAgICAgIGdsUHVzaE5hbWUg KGopOyAgICAgICAgICAgICAgDQogICAgICAgICAgICBnbENvbG9yM2YgKGZsb2F0KGkvMy4wKSwg ZmxvYXQgKGovMy4wKSwgZmxvYXQoYm9hcmRbaV1bal0vMy4wKSApOw0KICAgICAgICAgICAgZ2xS ZWN0aSAoaSwgaiwgaSsxLCBqKzEpOw0KICAgICAgICAgICAgaWYgbW9kZSA9PSBHTF9TRUxFQ1Q6 DQogICAgICAgICAgICAgICAgZ2xQb3BOYW1lICgpOw0KDQonJycNCi8qICBwcm9jZXNzSGl0cyBw cmludHMgb3V0IHRoZSBjb250ZW50cyBvZiB0aGUgDQogKiAgc2VsZWN0aW9uIGFycmF5Lg0KICov DQonJycNCmRlZiBwcm9jZXNzSGl0cyAoaGl0X2J1ZmZlcik6ICAgIA0KICAgIHByaW50ICJoaXRz ID0gJWQiJShsZW4oaGl0X2J1ZmZlcikpOyANCiAgICBmb3IgaGl0X3JlY29yZCBpbiBoaXRfYnVm ZmVyOg0KICAgICAgICB6MSwgejIsIG5hbWVzID0gaGl0X3JlY29yZA0KICAgICAgICBwcmludCAi IG51bWJlciBvZiBuYW1lcyBmb3IgaGl0ID0gJWQiJShsZW4obmFtZXMpKQ0KICAgICAgICBwcmlu dCAiIHoxIGlzICVnLCIlejEgKyAiICB6MiBpcyAlZyIlejINCiAgICAgICAgcHJpbnQgIiB0aGUg bmFtZXMgYXJlICI7DQogICAgICAgIHByaW50IG5hbWVzICAgDQogICAgICAgIGlpID0gaW50KG5h bWVzWzBdKQ0KICAgICAgICBqaiA9IGludChuYW1lc1sxXSkNCiAgICAgICAgYm9hcmRbaWldW2pq XSA9IChib2FyZFtpaV1bampdICsgMSkgJSAzOyAgICANCg0KDQonJycNCi8qICBwaWNrU3F1YXJl cygpIHNldHMgdXAgc2VsZWN0aW9uIG1vZGUsIG5hbWUgc3RhY2ssIA0KICogIGFuZCBwcm9qZWN0 aW9uIG1hdHJpeCBmb3IgcGlja2luZy4gIFRoZW4gdGhlIA0KICogIG9iamVjdHMgYXJlIGRyYXdu Lg0KICovDQogJycnDQoNCkJVRlNJWkU9NTEyDQpkZWYgcGlja1NxdWFyZXMoYnV0dG9uLCBzdGF0 ZSwgeCwgIHkpOg0KICAgIGlmIGJ1dHRvbiAhPSBHTFVUX0xFRlRfQlVUVE9OIG9yIHN0YXRlICE9 IEdMVVRfRE9XTiA6DQogICAgICAgIHJldHVybjsNCiAgICANCiAgICB2aWV3cG9ydCA9IGdsR2V0 SW50ZWdlcnYgKEdMX1ZJRVdQT1JUKTsNCg0KICAgIGdsU2VsZWN0QnVmZmVyIChCVUZTSVpFKTsN CiAgICBnbFJlbmRlck1vZGUgKEdMX1NFTEVDVCk7DQogICAgDQogICAgZ2xJbml0TmFtZXMoKTsN CiAgICBnbFB1c2hOYW1lKDApOw0KICAgIA0KICAgIGdsTWF0cml4TW9kZSAoR0xfUFJPSkVDVElP Tik7DQogICAgZ2xQdXNoTWF0cml4ICgpOw0KICAgIGdsTG9hZElkZW50aXR5ICgpOw0KICAgDQog ICAgIyAgY3JlYXRlIDV4NSBwaXhlbCBwaWNraW5nIHJlZ2lvbiBuZWFyIGN1cnNvciBsb2NhdGlv bg0KICAgIGdsdVBpY2tNYXRyaXggKGZsb2F0KHgpLCBmbG9hdCh2aWV3cG9ydFszXSAtIHkpLCA1 LjAsIDUuMCwgdmlld3BvcnQpOw0KICAgIGdsdU9ydGhvMkQgKDAuMCwgMy4wLCAwLjAsIDMuMCk7 DQogICAgZHJhd1NxdWFyZXMgKEdMX1NFTEVDVCk7DQoNCiAgICBnbE1hdHJpeE1vZGUgKEdMX1BS T0pFQ1RJT04pOw0KICAgIGdsUG9wTWF0cml4ICgpOw0KICAgIGdsRmx1c2ggKCk7DQogICAgDQog ICAgaGl0X2J1ZmZlciA9IGdsUmVuZGVyTW9kZSAoR0xfUkVOREVSKTsNCiAgICBwcm9jZXNzSGl0 cyAoaGl0X2J1ZmZlcik7DQogICAgZ2x1dFBvc3RSZWRpc3BsYXkoKTsNCg0KZGVmIGRpc3BsYXko KToNCiAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOw0KICAgIGRyYXdTcXVhcmVzIChH TF9SRU5ERVIpOw0KICAgIGdsRmx1c2goKTsNCg0KZGVmIHJlc2hhcGUodywgaCk6DQogICAgZ2xW aWV3cG9ydCgwLCAwLCB3LCBoKTsNCiAgICBnbE1hdHJpeE1vZGUoR0xfUFJPSkVDVElPTik7DQog ICAgZ2xMb2FkSWRlbnRpdHkoKTsNCiAgICBnbHVPcnRobzJEICgwLjAsIDMuMCwgMC4wLCAzLjAp Ow0KICAgIGdsTWF0cml4TW9kZShHTF9NT0RFTFZJRVcpOw0KICAgIGdsTG9hZElkZW50aXR5KCk7 DQoNCmRlZiBrZXlib2FyZChrZXksIHgsIHkpOg0KICAgIGlmIGtleSA9PSAyNzoNCiAgICAgICAg ZXhpdCgwKTsNCg0KIyBNYWluIExvb3ANCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6DQogICAg Z2x1dEluaXQoc3lzLmFyZ3YpOw0KICAgIGdsdXRJbml0RGlzcGxheU1vZGUgKEdMVVRfU0lOR0xF IHwgR0xVVF9SR0IgfCBHTFVUX0RFUFRIKTsNCiAgICBnbHV0SW5pdFdpbmRvd1NpemUgKDEwMCwg MTAwKTsNCiAgICBnbHV0SW5pdFdpbmRvd1Bvc2l0aW9uICgxMDAsIDEwMCk7DQogICAgZ2x1dENy ZWF0ZVdpbmRvdyAoc3lzLmFyZ3ZbMF0pOw0KICAgIGluaXQgKCk7DQogICAgZ2x1dFJlc2hhcGVG dW5jIChyZXNoYXBlKTsNCiAgICBnbHV0RGlzcGxheUZ1bmMoZGlzcGxheSk7IA0KICAgIGdsdXRN b3VzZUZ1bmMgKHBpY2tTcXVhcmVzKTsNCiAgICBnbHV0S2V5Ym9hcmRGdW5jIChrZXlib2FyZCk7 DQogICAgZ2x1dE1haW5Mb29wKCk7DQogICAgDQogICAgR0xfSU5ERVhfQklUUw0KDQoNCg0K --089e01294a8076d9ec04dd816498 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------------ Try New Relic Now & We'll Send You this Cool Shirt New Relic is the only SaaS-based application performance monitoring service that delivers powerful full stack analytics. Optimize and monitor your browser, app, & servers with just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may --089e01294a8076d9ec04dd816498 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ PyOpenGL Homepage http://pyopengl.sourceforge.net _______________________________________________ PyOpenGL-Devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/pyopengl-devel --089e01294a8076d9ec04dd816498--