From 6d53186f0c86e6277bda1c3bf3166bb52fba2553 Mon Sep 17 00:00:00 2001 From: Piotr Date: Tue, 25 Aug 2020 23:42:15 +0200 Subject: [PATCH] Building example --- Cargo.lock | 772 +++++++++++++++++++++++++++++++++++++++++++++++--- Cargo.toml | 3 +- src/engine.rs | 4 - src/main.rs | 289 ++++++++++--------- 4 files changed, 895 insertions(+), 173 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index da2e81c..a8a203f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -30,6 +30,32 @@ dependencies = [ "memchr", ] +[[package]] +name = "andrew" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b7f09f89872c2b6b29e319377b1fbe91c6f5947df19a25596e121cf19a7b35e" +dependencies = [ + "bitflags", + "line_drawing", + "rusttype 0.7.9", + "walkdir", + "xdg", + "xml-rs", +] + +[[package]] +name = "android_glue" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000444226fcff248f2bc4c7625be32c63caccfecc2723a2b9f78a7487a49c407" + +[[package]] +name = "android_log-sys" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8052e2d8aabbb8d556d6abbcce2a22b9590996c5f849b9c7ce4544a2e3b984e" + [[package]] name = "approx" version = "0.3.2" @@ -71,6 +97,12 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + [[package]] name = "byteorder" version = "1.3.4" @@ -78,10 +110,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" [[package]] -name = "cc" -version = "1.0.58" +name = "calloop" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a06fb2e53271d7c279ec1efea6ab691c35a2ae67ec0d91d7acec0caf13b518" +checksum = "7aa2097be53a00de9e8fc349fea6d76221f398f5c4fa550d420669906962d160" +dependencies = [ + "mio", + "mio-extras", + "nix", +] + +[[package]] +name = "cc" +version = "1.0.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66120af515773fb005778dc07c261bd201ec8ce50bd6e7144c927753fe013381" [[package]] name = "cfg-if" @@ -89,6 +132,15 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +[[package]] +name = "cgl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +dependencies = [ + "libc", +] + [[package]] name = "cgmath" version = "0.17.0" @@ -110,12 +162,18 @@ dependencies = [ ] [[package]] -name = "cmake" -version = "0.1.44" +name = "cocoa" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e56268c17a6248366d66d4a47a3381369d068cce8409bb1716ed77ea32163bb" +checksum = "0c49e86fc36d5704151f5996b7b3795385f50ce09e3be0f47a0cfde869681cf8" dependencies = [ - "cc", + "bitflags", + "block", + "core-foundation", + "core-graphics", + "foreign-types", + "libc", + "objc", ] [[package]] @@ -124,6 +182,47 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dbbb57365263e881e805dc77d94697c9118fd94d8da011240555aa7b23445bd" +[[package]] +name = "core-foundation" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" + +[[package]] +name = "core-graphics" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" +dependencies = [ + "bitflags", + "core-foundation", + "foreign-types", + "libc", +] + +[[package]] +name = "core-video-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34ecad23610ad9757664d644e369246edde1803fcb43ed72876565098a5d3828" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "core-graphics", + "libc", + "objc", +] + [[package]] name = "crc32fast" version = "1.2.0" @@ -191,13 +290,39 @@ dependencies = [ "byteorder", ] +[[package]] +name = "derivative" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb582b60359da160a9477ee80f15c8d784c477e69c217ef2cdd4169c24ea380f" +dependencies = [ + "proc-macro2 1.0.19", + "quote 1.0.7", + "syn 1.0.38", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dlib" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b11f15d1e3268f140f68d390637d5e76d849782d971ae7063e0da69fe9709a76" +dependencies = [ + "libloading 0.6.3", +] + [[package]] name = "doppler" version = "0.1.0" dependencies = [ "cgmath", "gl", - "glfw", + "glutin", "human-panic", "image", "num", @@ -205,18 +330,55 @@ dependencies = [ "tobj", ] +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + [[package]] name = "either" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd56b59865bce947ac5958779cfa508f6c3b9497cc762b7e24a12d11ccde2c4f" +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "fuchsia-cprng" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +dependencies = [ + "bitflags", + "fuchsia-zircon-sys", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" + [[package]] name = "getrandom" version = "0.1.14" @@ -265,28 +427,75 @@ dependencies = [ ] [[package]] -name = "glfw" -version = "0.39.1" +name = "glutin" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26b0c94d75430f0e8f0359c3f669c89b79df6c291f999596fb07e536b41c050" +checksum = "9a9666c8fd9afd008f6559e2468c35e11aad1d110d525bb3b354e4138ec0e20f" dependencies = [ - "bitflags", - "glfw-sys", - "libc", + "android_glue", + "cgl", + "cocoa", + "core-foundation", + "core-graphics", + "glutin_egl_sys", + "glutin_emscripten_sys", + "glutin_gles2_sys", + "glutin_glx_sys", + "glutin_wgl_sys", + "lazy_static", + "libloading 0.5.2", "log", "objc", - "raw-window-handle", - "semver", - "winapi", + "osmesa-sys", + "parking_lot", + "wayland-client", + "winapi 0.3.9", + "winit", ] [[package]] -name = "glfw-sys" -version = "3.3.2" +name = "glutin_egl_sys" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b567b13b593ec58ea912b2658ee6230ffe20a069fa5b771800acc69bb3a157e" +checksum = "2abb6aa55523480c4adc5a56bbaa249992e2dddb2fc63dc96e04a3355364c211" dependencies = [ - "cmake", + "gl_generator", + "winapi 0.3.9", +] + +[[package]] +name = "glutin_emscripten_sys" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80de4146df76e8a6c32b03007bc764ff3249dcaeb4f675d68a06caf1bac363f1" + +[[package]] +name = "glutin_gles2_sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8094e708b730a7c8a1954f4f8a31880af00eb8a1c5b5bf85d28a0a3c6d69103" +dependencies = [ + "gl_generator", + "objc", +] + +[[package]] +name = "glutin_glx_sys" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e393c8fc02b807459410429150e9c4faffdb312d59b8c038566173c81991351" +dependencies = [ + "gl_generator", + "x11-dl", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3da5951a1569dbab865c6f2a863efafff193a93caf05538d193e9e3816d21696" +dependencies = [ + "gl_generator", ] [[package]] @@ -339,6 +548,27 @@ dependencies = [ "adler32", ] +[[package]] +name = "instant" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b141fdc7836c525d4d594027d318c84161ca17aaf8113ab1f81ab93ae897485" + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + [[package]] name = "jpeg-decoder" version = "0.1.20" @@ -349,6 +579,16 @@ dependencies = [ "rayon", ] +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + [[package]] name = "khronos_api" version = "3.1.0" @@ -361,12 +601,56 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + [[package]] name = "libc" version = "0.2.74" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2f02823cf78b754822df5f7f268fb59822e7296276d3e069d8e8cb26a14bd10" +[[package]] +name = "libloading" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" +dependencies = [ + "cc", + "winapi 0.3.9", +] + +[[package]] +name = "libloading" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2443d8f0478b16759158b2f66d525991a05491138bc05814ef52a250148ef4f9" +dependencies = [ + "cfg-if", + "winapi 0.3.9", +] + +[[package]] +name = "line_drawing" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc7ad3d82c845bdb5dde34ffdcc7a5fb4d2996e1e1ee0f19c33bc80e15196b9" +dependencies = [ + "num-traits", +] + +[[package]] +name = "lock_api" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" +dependencies = [ + "scopeguard", +] + [[package]] name = "log" version = "0.4.11" @@ -403,6 +687,16 @@ version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" +[[package]] +name = "memmap" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" +dependencies = [ + "libc", + "winapi 0.3.9", +] + [[package]] name = "memoffset" version = "0.5.5" @@ -421,6 +715,104 @@ dependencies = [ "adler", ] +[[package]] +name = "mio" +version = "0.6.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" +dependencies = [ + "cfg-if", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log", + "miow", + "net2", + "slab", + "winapi 0.2.8", +] + +[[package]] +name = "mio-extras" +version = "2.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" +dependencies = [ + "lazycell", + "log", + "mio", + "slab", +] + +[[package]] +name = "miow" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +dependencies = [ + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", +] + +[[package]] +name = "ndk" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a356cafe20aee088789830bfea3a61336e84ded9e545e00d3869ce95dcb80c" +dependencies = [ + "jni-sys", + "ndk-sys", + "num_enum", +] + +[[package]] +name = "ndk-glue" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1730ee2e3de41c3321160a6da815f008c4006d71b095880ea50e17cf52332b8" +dependencies = [ + "android_log-sys", + "lazy_static", + "libc", + "log", + "ndk", + "ndk-sys", +] + +[[package]] +name = "ndk-sys" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2820aca934aba5ed91c79acc72b6a44048ceacc5d36c035ed4e051f12d887d" + +[[package]] +name = "net2" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7" +dependencies = [ + "cfg-if", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "nix" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c722bee1037d430d0f8e687bbdbf222f27cc6e4e68d5caf630857bb2b6dbdce" +dependencies = [ + "bitflags", + "cc", + "cfg-if", + "libc", + "void", +] + [[package]] name = "num" version = "0.3.0" @@ -529,6 +921,28 @@ dependencies = [ "libc", ] +[[package]] +name = "num_enum" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca565a7df06f3d4b485494f25ba05da1435950f4dc263440eda7a6fa9b8e36e4" +dependencies = [ + "derivative", + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffa5a33ddddfee04c0283a7653987d634e880347e96b5b2ed64de07efb59db9d" +dependencies = [ + "proc-macro-crate", + "proc-macro2 1.0.19", + "quote 1.0.7", + "syn 1.0.38", +] + [[package]] name = "objc" version = "0.2.7" @@ -544,6 +958,15 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ab52be62400ca80aa00285d25253d7f7c437b7375c4de678f5405d3afe82ca5" +[[package]] +name = "ordered-float" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3741934be594d77de1c8461ebcbbe866f585ea616a9753aa78f2bdc69f0e4579" +dependencies = [ + "num-traits", +] + [[package]] name = "os_type" version = "2.2.0" @@ -553,6 +976,51 @@ dependencies = [ "regex", ] +[[package]] +name = "osmesa-sys" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88cfece6e95d2e717e0872a7f53a8684712ad13822a7979bc760b9c77ec0013b" +dependencies = [ + "shared_library", +] + +[[package]] +name = "parking_lot" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3" +dependencies = [ + "cfg-if", + "cloudabi", + "libc", + "redox_syscall", + "smallvec", + "winapi 0.3.9", +] + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "pkg-config" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33" + [[package]] name = "png" version = "0.15.3" @@ -571,6 +1039,15 @@ version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea" +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + [[package]] name = "proc-macro2" version = "0.4.30" @@ -623,7 +1100,7 @@ dependencies = [ "rand_os", "rand_pcg", "rand_xorshift", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -718,7 +1195,7 @@ checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" dependencies = [ "libc", "rand_core 0.4.2", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -732,7 +1209,7 @@ dependencies = [ "libc", "rand_core 0.4.2", "rdrand", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -797,6 +1274,12 @@ dependencies = [ "rand_core 0.3.1", ] +[[package]] +name = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + [[package]] name = "regex" version = "1.3.9" @@ -821,6 +1304,35 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" +[[package]] +name = "rusttype" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "310942406a39981bed7e12b09182a221a29e0990f3e7e0c971f131922ed135d5" +dependencies = [ + "rusttype 0.8.3", +] + +[[package]] +name = "rusttype" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f61411055101f7b60ecf1041d87fb74205fb20b0c7a723f07ef39174cf6b4c0" +dependencies = [ + "approx", + "ordered-float", + "stb_truetype", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + [[package]] name = "scoped_threadpool" version = "0.1.9" @@ -833,21 +1345,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - [[package]] name = "serde" version = "1.0.115" @@ -865,6 +1362,53 @@ dependencies = [ "syn 1.0.38", ] +[[package]] +name = "shared_library" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a9e7e0f2bfae24d8a5b5a66c5b257a83c7412304311512a0c054cd5e619da11" +dependencies = [ + "lazy_static", + "libc", +] + +[[package]] +name = "slab" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" + +[[package]] +name = "smallvec" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252" + +[[package]] +name = "smithay-client-toolkit" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "421c8dc7acf5cb205b88160f8b4cc2c5cfabe210e43b2f80f009f4c1ef910f1d" +dependencies = [ + "andrew", + "bitflags", + "dlib", + "lazy_static", + "memmap", + "nix", + "wayland-client", + "wayland-protocols", +] + +[[package]] +name = "stb_truetype" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f77b6b07e862c66a9f3e62a07588fee67cd90a9135a2b942409f195507b4fb51" +dependencies = [ + "byteorder", +] + [[package]] name = "syn" version = "0.15.44" @@ -953,12 +1497,95 @@ dependencies = [ "rand 0.7.3", ] +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "walkdir" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" +dependencies = [ + "same-file", + "winapi 0.3.9", + "winapi-util", +] + [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +[[package]] +name = "wayland-client" +version = "0.23.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1080ebe0efabcf12aef2132152f616038f2d7dcbbccf7b2d8c5270fe14bcda" +dependencies = [ + "bitflags", + "calloop", + "downcast-rs", + "libc", + "mio", + "nix", + "wayland-commons", + "wayland-scanner", + "wayland-sys", +] + +[[package]] +name = "wayland-commons" +version = "0.23.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb66b0d1a27c39bbce712b6372131c6e25149f03ffb0cd017cf8f7de8d66dbdb" +dependencies = [ + "nix", + "wayland-sys", +] + +[[package]] +name = "wayland-protocols" +version = "0.23.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cc286643656742777d55dc8e70d144fa4699e426ca8e9d4ef454f4bf15ffcf9" +dependencies = [ + "bitflags", + "wayland-client", + "wayland-commons", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.23.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93b02247366f395b9258054f964fe293ddd019c3237afba9be2ccbe9e1651c3d" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "xml-rs", +] + +[[package]] +name = "wayland-sys" +version = "0.23.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d94e89a86e6d6d7c7c9b19ebf48a03afaac4af6bc22ae570e9a24124b75358f4" +dependencies = [ + "dlib", + "lazy_static", +] + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + [[package]] name = "winapi" version = "0.3.9" @@ -969,6 +1596,12 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu", ] +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -981,7 +1614,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] @@ -990,6 +1623,65 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "winit" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e4ccbf7ddb6627828eace16cacde80fc6bf4dbb3469f88487262a02cf8e7862" +dependencies = [ + "bitflags", + "cocoa", + "core-foundation", + "core-graphics", + "core-video-sys", + "dispatch", + "instant", + "lazy_static", + "libc", + "log", + "mio", + "mio-extras", + "ndk", + "ndk-glue", + "ndk-sys", + "objc", + "parking_lot", + "percent-encoding", + "raw-window-handle", + "smithay-client-toolkit", + "wayland-client", + "winapi 0.3.9", + "x11-dl", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "x11-dl" +version = "2.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf981e3a5b3301209754218f962052d4d9ee97e478f4d26d4a6eced34c1fef8" +dependencies = [ + "lazy_static", + "libc", + "maybe-uninit", + "pkg-config", +] + +[[package]] +name = "xdg" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" + [[package]] name = "xml-rs" version = "0.8.3" diff --git a/Cargo.toml b/Cargo.toml index 7594633..a82ec54 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,8 @@ lto = true [dependencies] cgmath = "0.17.0" gl = "0.14.0" -glfw = "0.39.1" +# glfw = "0.39.1" +glutin = "0.24.1" image = "0.22.5" # only needed from chapter 3 on tobj = "2.0.2" diff --git a/src/engine.rs b/src/engine.rs index e2e948b..91dd713 100644 --- a/src/engine.rs +++ b/src/engine.rs @@ -1,11 +1,7 @@ use std::os::raw::c_void; use std::path::Path; use std::sync::mpsc::Receiver; - use gl; -extern crate glfw; -use self::glfw::{Action, Key}; - use image; use image::DynamicImage::*; use image::GenericImage; diff --git a/src/main.rs b/src/main.rs index dd50c29..6c7c4d9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,10 +1,15 @@ extern crate gl; -extern crate glfw; +extern crate glutin; extern crate image; use self::camera::*; use self::gl::types::*; -use self::glfw::{Action, Context, Key}; +// use self::glfw::{Action, Context, Key}; + +use glutin::event::{Event, WindowEvent}; +use glutin::event_loop::{ControlFlow, EventLoop}; +use glutin::window::WindowBuilder; +use glutin::ContextBuilder; use cgmath::prelude::*; use cgmath::{perspective, vec3, Deg, Matrix4, Point3, Rad, Vector3}; use human_panic::setup_panic; @@ -51,36 +56,27 @@ pub fn main() { let mut last_frame: f32 = 0.0; // glfw: initialize and configure // ------------------------------ - let mut glfw = glfw::init(glfw::FAIL_ON_ERRORS).unwrap(); - glfw.window_hint(glfw::WindowHint::ContextVersion(3, 3)); - glfw.window_hint(glfw::WindowHint::OpenGlProfile( - glfw::OpenGlProfileHint::Core, - )); - #[cfg(target_os = "macos")] - glfw.window_hint(glfw::WindowHint::OpenGlForwardCompat(true)); + let mut events_loop = EventLoop::new(); + let window = WindowBuilder::new().with_title("Doppler"); + let gl_window = glutin::ContextBuilder::new() + .build_windowed(window, &events_loop) + .unwrap(); - // glfw window creation - // -------------------- - let (mut window, events) = glfw - .create_window( - consts::SCR_WIDTH, - consts::SCR_HEIGHT, - "chRustedGL", - glfw::WindowMode::Windowed, - ) - .expect("Failed to create GLFW window"); - - window.make_current(); - window.set_framebuffer_size_polling(true); - window.set_cursor_pos_polling(true); - window.set_scroll_polling(true); - - // tell GLFW to capture our mouse - window.set_cursor_mode(glfw::CursorMode::Disabled); + // window.make_current(); + // window.set_framebuffer_size_polling(true); + // window.set_cursor_pos_polling(true); + // window.set_scroll_polling(true); + // window.set_cursor_mode(glfw::CursorMode::Disabled); // gl: load all OpenGL function pointers // --------------------------------------- - gl::load_with(|symbol| window.get_proc_address(symbol) as *const _); + + // It is essential to make the context current before calling `gl::load_with`. + let gl_window = unsafe { gl_window.make_current().unwrap() }; + + // Load the OpenGL function pointers + // TODO: `as *const _` will not be needed once glutin is updated to the latest gl version + gl::load_with(|symbol| gl_window.get_proc_address(symbol) as *const _); let (ourShader, ourModel) = unsafe { @@ -109,111 +105,148 @@ pub fn main() { // render loop // ----------- let (r, g, b) = (0.188, 0.22, 0.235); - while !window.should_close() { - // per-frame time logic - // -------------------- - let cur_frame = glfw.get_time() as f32; - delta_time = cur_frame - last_frame; - last_frame = cur_frame; + events_loop.run(move |event, _, control_flow| { + println!("{:?}", event); + *control_flow = ControlFlow::Wait; - // events - // ----- - process_events( - &events, - &mut first_mouse, - &mut last_x, - &mut last_y, - &mut camera, - ); - - // input - // ----- - process_input(&mut window, delta_time, &mut camera); - - // render - // ------ - unsafe { - gl::ClearColor(0.1, 0.1, 0.1, 1.0); - gl::Clear(gl::COLOR_BUFFER_BIT | gl::DEPTH_BUFFER_BIT); - - // don't forget to enable shader before setting uniforms - ourShader.useProgram(); - - // view/projection transformations - let projection: Matrix4 = perspective(Deg(camera.Zoom), consts::SCR_WIDTH as f32 / consts::SCR_HEIGHT as f32, 0.1, 100.0); - let view = camera.get_view_matrix(); - ourShader.setMat4(c_str!("projection"), &projection); - ourShader.setMat4(c_str!("view"), &view); - - // render the loaded model - let mut model = Matrix4::::from_translation(vec3(0.0, -1.75, 0.0)); // translate it down so it's at the center of the scene - model = model * Matrix4::from_scale(0.2); // it's a bit too big for our scene, so scale it down - ourShader.setMat4(c_str!("model"), &model); - ourModel.Draw(&ourShader); - } - - // glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.) - // ------------------------------------------------------------------------------- - window.swap_buffers(); - glfw.poll_events(); - } -} - -pub fn process_events( - events: &Receiver<(f64, glfw::WindowEvent)>, - first_mouse: &mut bool, - last_x: &mut f32, - last_y: &mut f32, - camera: &mut Camera, -) { - for (_, event) in glfw::flush_messages(events) { match event { - glfw::WindowEvent::FramebufferSize(width, height) => { - // make sure the viewport matches the new window dimensions; note that width and - // height will be significantly larger than specified on retina displays. - unsafe { gl::Viewport(0, 0, width, height) } - } - glfw::WindowEvent::CursorPos(xpos, ypos) => { - let (xpos, ypos) = (xpos as f32, ypos as f32); - if *first_mouse { - *last_x = xpos; - *last_y = ypos; - *first_mouse = false; + Event::LoopDestroyed => return, + Event::WindowEvent { event, .. } => match event { + WindowEvent::Resized(physical_size) => { + gl_window.resize(physical_size) } - - let xoffset = xpos - *last_x; - let yoffset = *last_y - ypos; // reversed since y-coordinates go from bottom to top - - *last_x = xpos; - *last_y = ypos; - - camera.process_mouse_movement(xoffset, yoffset, true); + WindowEvent::CloseRequested => { + *control_flow = ControlFlow::Exit + } + _ => (), + }, + Event::RedrawRequested(_) => { + unsafe{gl::ClearColor(r, g, b, 1.0); + gl::Clear(gl::COLOR_BUFFER_BIT | gl::DEPTH_BUFFER_BIT);} + gl_window.swap_buffers().unwrap(); } - glfw::WindowEvent::Scroll(_xoffset, yoffset) => { - camera.process_mouse_scroll(yoffset as f32); - } - _ => {} + _ => (), } - } + }); + // events_loop.run_forever(|event| { + + // if let Event::WindowEvent { event, .. } = event { + // if let WindowEvent::CloseRequested = event { + // return ControlFlow::Exit; + // } + // } + + // unsafe { + // gl::ClearColor(0.1, 0.1, 0.1, 1.0); + // gl::Clear(gl::COLOR_BUFFER_BIT | gl::DEPTH_BUFFER_BIT); + + // // don't forget to enable shader before setting uniforms + // ourShader.useProgram(); + + // // view/projection transformations + // let projection: Matrix4 = perspective(Deg(camera.Zoom), consts::SCR_WIDTH as f32 / consts::SCR_HEIGHT as f32, 0.1, 100.0); + // let view = camera.get_view_matrix(); + // ourShader.setMat4(c_str!("projection"), &projection); + // ourShader.setMat4(c_str!("view"), &view); + + // // render the loaded model + // let mut model = Matrix4::::from_translation(vec3(0.0, -1.75, 0.0)); // translate it down so it's at the center of the scene + // model = model * Matrix4::from_scale(0.2); // it's a bit too big for our scene, so scale it down + // ourShader.setMat4(c_str!("model"), &model); + // ourModel.Draw(&ourShader); + // } + + // gl_window.swap_buffers().unwrap(); + + // ControlFlow::Continue + // }); + // while !window.should_close() { + // // per-frame time logic + // // -------------------- + // let cur_frame = glfw.get_time() as f32; + // delta_time = cur_frame - last_frame; + // last_frame = cur_frame; + + // // events + // // ----- + // process_events( + // &events, + // &mut first_mouse, + // &mut last_x, + // &mut last_y, + // &mut camera, + // ); + + // // input + // // ----- + // process_input(&mut window, delta_time, &mut camera); + + // // render + // // ------ + + + // // glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.) + // // ------------------------------------------------------------------------------- + // window.swap_buffers(); + // glfw.poll_events(); + // } } -/// Input processing function as introduced in 1.7.4 (Camera Class) and used in -/// most later tutorials -pub fn process_input(window: &mut glfw::Window, delta_time: f32, camera: &mut Camera) { - if window.get_key(Key::Escape) == Action::Press { - window.set_should_close(true) - } +// pub fn process_events( +// events: &Receiver<(f64, glfw::WindowEvent)>, +// first_mouse: &mut bool, +// last_x: &mut f32, +// last_y: &mut f32, +// camera: &mut Camera, +// ) { +// for (_, event) in glfw::flush_messages(events) { +// match event { +// glfw::WindowEvent::FramebufferSize(width, height) => { +// // make sure the viewport matches the new window dimensions; note that width and +// // height will be significantly larger than specified on retina displays. +// unsafe { gl::Viewport(0, 0, width, height) } +// } +// glfw::WindowEvent::CursorPos(xpos, ypos) => { +// let (xpos, ypos) = (xpos as f32, ypos as f32); +// if *first_mouse { +// *last_x = xpos; +// *last_y = ypos; +// *first_mouse = false; +// } - if window.get_key(Key::W) == Action::Press { - camera.process_keyboard(Camera_Movement::FORWARD, delta_time); - } - if window.get_key(Key::S) == Action::Press { - camera.process_keyboard(Camera_Movement::BACKWARD, delta_time); - } - if window.get_key(Key::A) == Action::Press { - camera.process_keyboard(Camera_Movement::LEFT, delta_time); - } - if window.get_key(Key::D) == Action::Press { - camera.process_keyboard(Camera_Movement::RIGHT, delta_time); - } -} +// let xoffset = xpos - *last_x; +// let yoffset = *last_y - ypos; // reversed since y-coordinates go from bottom to top + +// *last_x = xpos; +// *last_y = ypos; + +// camera.process_mouse_movement(xoffset, yoffset, true); +// } +// glfw::WindowEvent::Scroll(_xoffset, yoffset) => { +// camera.process_mouse_scroll(yoffset as f32); +// } +// _ => {} +// } +// } +// } + +// /// Input processing function as introduced in 1.7.4 (Camera Class) and used in +// /// most later tutorials +// pub fn process_input(window: &mut glfw::Window, delta_time: f32, camera: &mut Camera) { +// if window.get_key(Key::Escape) == Action::Press { +// window.set_should_close(true) +// } + +// if window.get_key(Key::W) == Action::Press { +// camera.process_keyboard(Camera_Movement::FORWARD, delta_time); +// } +// if window.get_key(Key::S) == Action::Press { +// camera.process_keyboard(Camera_Movement::BACKWARD, delta_time); +// } +// if window.get_key(Key::A) == Action::Press { +// camera.process_keyboard(Camera_Movement::LEFT, delta_time); +// } +// if window.get_key(Key::D) == Action::Press { +// camera.process_keyboard(Camera_Movement::RIGHT, delta_time); +// } +// }