diff --git a/ball.h b/ball.h new file mode 100644 index 0000000..e69de29 diff --git a/blend/ball.blend b/blend/ball.blend new file mode 100644 index 0000000..c35bd50 Binary files /dev/null and b/blend/ball.blend differ diff --git a/include/model/ball.h b/include/model/ball.h new file mode 100644 index 0000000..44ec1e3 --- /dev/null +++ b/include/model/ball.h @@ -0,0 +1,332 @@ +#pragma once + +const int ball_Icosphere_triangles[] = { + 0, 1, 2, + 3, 4, 5, + 6, 7, 8, + 9, 10, 11, + 12, 13, 14, + 15, 16, 17, + 18, 19, 20, + 21, 22, 23, + 24, 25, 26, + 27, 28, 29, + 30, 31, 32, + 33, 34, 35, + 36, 37, 38, + 39, 40, 41, + 42, 43, 44, + 45, 46, 47, + 48, 49, 50, + 51, 52, 53, + 54, 55, 56, + 57, 58, 59, + 60, 61, 62, + 63, 64, 65, + 66, 67, 68, + 69, 70, 71, + 72, 73, 74, + 75, 76, 77, + 78, 79, 80, + 81, 82, 83, + 84, 85, 86, + 87, 88, 89, + 90, 91, 92, + 93, 94, 95, + 96, 97, 98, + 99, 100, 101, + 102, 103, 104, + 105, 106, 107, + 108, 109, 110, + 111, 112, 113, + 114, 115, 116, + 117, 118, 119, + 120, 121, 122, + 123, 124, 125, + 126, 127, 128, + 129, 130, 131, + 132, 133, 134, + 135, 136, 137, + 138, 139, 140, + 141, 142, 143, + 144, 145, 146, + 147, 148, 149, + 150, 151, 152, + 153, 154, 155, + 156, 157, 158, + 159, 160, 161, + 162, 163, 164, + 165, 166, 167, + 168, 169, 170, + 171, 172, 173, + 174, 175, 176, + 177, 178, 179, + 180, 181, 182, + 183, 184, 185, + 186, 187, 188, + 189, 190, 191, + 192, 193, 194, + 195, 196, 197, + 198, 199, 200, + 201, 202, 203, + 204, 205, 206, + 207, 208, 209, + 210, 211, 212, + 213, 214, 215, + 216, 217, 218, + 219, 220, 221, + 222, 223, 224, + 225, 226, 227, + 228, 229, 230, + 231, 232, 233, + 234, 235, 236, + 237, 238, 239, +}; + +const int ball_Icosphere_triangles_length = (sizeof (ball_Icosphere_triangles)) / (sizeof (ball_Icosphere_triangles[0])); + +const float ball_vertices[] = { + 0.000000f, -1.000000f, 0.000000f, 0.181819f, 0.000000f, 0.1024f, -0.9435f, 0.3151f, + 0.425323f, -0.850654f, 0.309011f, 0.227273f, 0.078731f, 0.1024f, -0.9435f, 0.3151f, + -0.162456f, -0.850654f, 0.499995f, 0.136365f, 0.078731f, 0.1024f, -0.9435f, 0.3151f, + 0.723607f, -0.447220f, 0.525725f, 0.272728f, 0.157461f, 0.7002f, -0.6617f, 0.2680f, + 0.425323f, -0.850654f, 0.309011f, 0.318182f, 0.078731f, 0.7002f, -0.6617f, 0.2680f, + 0.850648f, -0.525736f, 0.000000f, 0.363637f, 0.157461f, 0.7002f, -0.6617f, 0.2680f, + 0.000000f, -1.000000f, 0.000000f, 0.909091f, 0.000000f, -0.2680f, -0.9435f, 0.1947f, + -0.162456f, -0.850654f, 0.499995f, 0.954545f, 0.078731f, -0.2680f, -0.9435f, 0.1947f, + -0.525730f, -0.850652f, 0.000000f, 0.863636f, 0.078731f, -0.2680f, -0.9435f, 0.1947f, + 0.000000f, -1.000000f, 0.000000f, 0.727273f, 0.000000f, -0.2680f, -0.9435f, -0.1947f, + -0.525730f, -0.850652f, 0.000000f, 0.772727f, 0.078731f, -0.2680f, -0.9435f, -0.1947f, + -0.162456f, -0.850654f, -0.499995f, 0.681818f, 0.078731f, -0.2680f, -0.9435f, -0.1947f, + 0.000000f, -1.000000f, 0.000000f, 0.545455f, 0.000000f, 0.1024f, -0.9435f, -0.3151f, + -0.162456f, -0.850654f, -0.499995f, 0.590909f, 0.078731f, 0.1024f, -0.9435f, -0.3151f, + 0.425323f, -0.850654f, -0.309011f, 0.500000f, 0.078731f, 0.1024f, -0.9435f, -0.3151f, + 0.723607f, -0.447220f, 0.525725f, 0.272728f, 0.157461f, 0.9050f, -0.3304f, 0.2680f, + 0.850648f, -0.525736f, 0.000000f, 0.363637f, 0.157461f, 0.9050f, -0.3304f, 0.2680f, + 0.951058f, 0.000000f, 0.309013f, 0.318182f, 0.236191f, 0.9050f, -0.3304f, 0.2680f, + -0.276388f, -0.447220f, 0.850649f, 0.090910f, 0.157461f, 0.0247f, -0.3304f, 0.9435f, + 0.262869f, -0.525738f, 0.809012f, 0.181819f, 0.157461f, 0.0247f, -0.3304f, 0.9435f, + 0.000000f, 0.000000f, 1.000000f, 0.136365f, 0.236191f, 0.0247f, -0.3304f, 0.9435f, + -0.894426f, -0.447216f, 0.000000f, 0.818182f, 0.157461f, -0.8897f, -0.3304f, 0.3151f, + -0.688189f, -0.525736f, 0.499997f, 0.909091f, 0.157461f, -0.8897f, -0.3304f, 0.3151f, + -0.951058f, 0.000000f, 0.309013f, 0.863636f, 0.236191f, -0.8897f, -0.3304f, 0.3151f, + -0.276388f, -0.447220f, -0.850649f, 0.636364f, 0.157461f, -0.5746f, -0.3304f, -0.7488f, + -0.688189f, -0.525736f, -0.499997f, 0.727273f, 0.157461f, -0.5746f, -0.3304f, -0.7488f, + -0.587786f, 0.000000f, -0.809017f, 0.681818f, 0.236191f, -0.5746f, -0.3304f, -0.7488f, + 0.723607f, -0.447220f, -0.525725f, 0.454546f, 0.157461f, 0.5346f, -0.3304f, -0.7779f, + 0.262869f, -0.525738f, -0.809012f, 0.545455f, 0.157461f, 0.5346f, -0.3304f, -0.7779f, + 0.587786f, 0.000000f, -0.809017f, 0.500000f, 0.236191f, 0.5346f, -0.3304f, -0.7779f, + 0.723607f, -0.447220f, 0.525725f, 0.272728f, 0.157461f, 0.8026f, -0.1256f, 0.5831f, + 0.951058f, 0.000000f, 0.309013f, 0.318182f, 0.236191f, 0.8026f, -0.1256f, 0.5831f, + 0.587786f, 0.000000f, 0.809017f, 0.227273f, 0.236191f, 0.8026f, -0.1256f, 0.5831f, + -0.276388f, -0.447220f, 0.850649f, 0.090910f, 0.157461f, -0.3066f, -0.1256f, 0.9435f, + 0.000000f, 0.000000f, 1.000000f, 0.136365f, 0.236191f, -0.3066f, -0.1256f, 0.9435f, + -0.587786f, 0.000000f, 0.809017f, 0.045455f, 0.236191f, -0.3066f, -0.1256f, 0.9435f, + -0.894426f, -0.447216f, 0.000000f, 0.818182f, 0.157461f, -0.9921f, -0.1256f, -0.0000f, + -0.951058f, 0.000000f, 0.309013f, 0.863636f, 0.236191f, -0.9921f, -0.1256f, -0.0000f, + -0.951058f, 0.000000f, -0.309013f, 0.772727f, 0.236191f, -0.9921f, -0.1256f, -0.0000f, + -0.276388f, -0.447220f, -0.850649f, 0.636364f, 0.157461f, -0.3066f, -0.1256f, -0.9435f, + -0.587786f, 0.000000f, -0.809017f, 0.681818f, 0.236191f, -0.3066f, -0.1256f, -0.9435f, + 0.000000f, 0.000000f, -1.000000f, 0.590909f, 0.236191f, -0.3066f, -0.1256f, -0.9435f, + 0.723607f, -0.447220f, -0.525725f, 0.454546f, 0.157461f, 0.8026f, -0.1256f, -0.5831f, + 0.587786f, 0.000000f, -0.809017f, 0.500000f, 0.236191f, 0.8026f, -0.1256f, -0.5831f, + 0.951058f, 0.000000f, -0.309013f, 0.409092f, 0.236191f, 0.8026f, -0.1256f, -0.5831f, + 0.276388f, 0.447220f, 0.850649f, 0.181819f, 0.314921f, 0.4089f, 0.6617f, 0.6284f, + 0.688189f, 0.525736f, 0.499997f, 0.272728f, 0.314921f, 0.4089f, 0.6617f, 0.6284f, + 0.162456f, 0.850654f, 0.499995f, 0.227273f, 0.393651f, 0.4089f, 0.6617f, 0.6284f, + -0.723607f, 0.447220f, 0.525725f, 0.000000f, 0.314921f, -0.4713f, 0.6617f, 0.5831f, + -0.262869f, 0.525738f, 0.809012f, 0.090910f, 0.314921f, -0.4713f, 0.6617f, 0.5831f, + -0.425323f, 0.850654f, 0.309011f, 0.045455f, 0.393651f, -0.4713f, 0.6617f, 0.5831f, + -0.723607f, 0.447220f, -0.525725f, 0.727273f, 0.314921f, -0.7002f, 0.6617f, -0.2680f, + -0.850648f, 0.525736f, 0.000000f, 0.818182f, 0.314921f, -0.7002f, 0.6617f, -0.2680f, + -0.425323f, 0.850654f, -0.309011f, 0.772727f, 0.393651f, -0.7002f, 0.6617f, -0.2680f, + 0.276388f, 0.447220f, -0.850649f, 0.545455f, 0.314921f, 0.0385f, 0.6617f, -0.7488f, + -0.262869f, 0.525738f, -0.809012f, 0.636364f, 0.314921f, 0.0385f, 0.6617f, -0.7488f, + 0.162456f, 0.850654f, -0.499995f, 0.590909f, 0.393651f, 0.0385f, 0.6617f, -0.7488f, + 0.894426f, 0.447216f, 0.000000f, 0.363637f, 0.314921f, 0.7240f, 0.6617f, -0.1947f, + 0.688189f, 0.525736f, -0.499997f, 0.454546f, 0.314921f, 0.7240f, 0.6617f, -0.1947f, + 0.525730f, 0.850652f, 0.000000f, 0.409092f, 0.393651f, 0.7240f, 0.6617f, -0.1947f, + 0.525730f, 0.850652f, 0.000000f, 0.409092f, 0.393651f, 0.2680f, 0.9435f, -0.1947f, + 0.162456f, 0.850654f, -0.499995f, 0.500000f, 0.393651f, 0.2680f, 0.9435f, -0.1947f, + 0.000000f, 1.000000f, 0.000000f, 0.454546f, 0.472382f, 0.2680f, 0.9435f, -0.1947f, + 0.525730f, 0.850652f, 0.000000f, 0.409092f, 0.393651f, 0.4911f, 0.7947f, -0.3568f, + 0.688189f, 0.525736f, -0.499997f, 0.454546f, 0.314921f, 0.4911f, 0.7947f, -0.3568f, + 0.162456f, 0.850654f, -0.499995f, 0.500000f, 0.393651f, 0.4911f, 0.7947f, -0.3568f, + 0.688189f, 0.525736f, -0.499997f, 0.454546f, 0.314921f, 0.4089f, 0.6617f, -0.6284f, + 0.276388f, 0.447220f, -0.850649f, 0.545455f, 0.314921f, 0.4089f, 0.6617f, -0.6284f, + 0.162456f, 0.850654f, -0.499995f, 0.500000f, 0.393651f, 0.4089f, 0.6617f, -0.6284f, + 0.162456f, 0.850654f, -0.499995f, 0.590909f, 0.393651f, -0.1024f, 0.9435f, -0.3151f, + -0.425323f, 0.850654f, -0.309011f, 0.681818f, 0.393651f, -0.1024f, 0.9435f, -0.3151f, + 0.000000f, 1.000000f, 0.000000f, 0.636364f, 0.472382f, -0.1024f, 0.9435f, -0.3151f, + 0.162456f, 0.850654f, -0.499995f, 0.590909f, 0.393651f, -0.1876f, 0.7947f, -0.5773f, + -0.262869f, 0.525738f, -0.809012f, 0.636364f, 0.314921f, -0.1876f, 0.7947f, -0.5773f, + -0.425323f, 0.850654f, -0.309011f, 0.681818f, 0.393651f, -0.1876f, 0.7947f, -0.5773f, + -0.262869f, 0.525738f, -0.809012f, 0.636364f, 0.314921f, -0.4713f, 0.6617f, -0.5831f, + -0.723607f, 0.447220f, -0.525725f, 0.727273f, 0.314921f, -0.4713f, 0.6617f, -0.5831f, + -0.425323f, 0.850654f, -0.309011f, 0.681818f, 0.393651f, -0.4713f, 0.6617f, -0.5831f, + -0.425323f, 0.850654f, -0.309011f, 0.772727f, 0.393651f, -0.3313f, 0.9435f, -0.0000f, + -0.425323f, 0.850654f, 0.309011f, 0.863636f, 0.393651f, -0.3313f, 0.9435f, -0.0000f, + 0.000000f, 1.000000f, 0.000000f, 0.818182f, 0.472382f, -0.3313f, 0.9435f, -0.0000f, + -0.425323f, 0.850654f, -0.309011f, 0.772727f, 0.393651f, -0.6071f, 0.7947f, -0.0000f, + -0.850648f, 0.525736f, 0.000000f, 0.818182f, 0.314921f, -0.6071f, 0.7947f, -0.0000f, + -0.425323f, 0.850654f, 0.309011f, 0.863636f, 0.393651f, -0.6071f, 0.7947f, -0.0000f, + -0.850648f, 0.525736f, 0.000000f, 0.818182f, 0.314921f, -0.7002f, 0.6617f, 0.2680f, + -0.723607f, 0.447220f, 0.525725f, 0.909091f, 0.314921f, -0.7002f, 0.6617f, 0.2680f, + -0.425323f, 0.850654f, 0.309011f, 0.863636f, 0.393651f, -0.7002f, 0.6617f, 0.2680f, + -0.425323f, 0.850654f, 0.309011f, 0.045455f, 0.393651f, -0.1024f, 0.9435f, 0.3151f, + 0.162456f, 0.850654f, 0.499995f, 0.136365f, 0.393651f, -0.1024f, 0.9435f, 0.3151f, + 0.000000f, 1.000000f, 0.000000f, 0.090910f, 0.472382f, -0.1024f, 0.9435f, 0.3151f, + -0.425323f, 0.850654f, 0.309011f, 0.045455f, 0.393651f, -0.1876f, 0.7947f, 0.5773f, + -0.262869f, 0.525738f, 0.809012f, 0.090910f, 0.314921f, -0.1876f, 0.7947f, 0.5773f, + 0.162456f, 0.850654f, 0.499995f, 0.136365f, 0.393651f, -0.1876f, 0.7947f, 0.5773f, + -0.262869f, 0.525738f, 0.809012f, 0.090910f, 0.314921f, 0.0385f, 0.6617f, 0.7488f, + 0.276388f, 0.447220f, 0.850649f, 0.181819f, 0.314921f, 0.0385f, 0.6617f, 0.7488f, + 0.162456f, 0.850654f, 0.499995f, 0.136365f, 0.393651f, 0.0385f, 0.6617f, 0.7488f, + 0.162456f, 0.850654f, 0.499995f, 0.227273f, 0.393651f, 0.2680f, 0.9435f, 0.1947f, + 0.525730f, 0.850652f, 0.000000f, 0.318182f, 0.393651f, 0.2680f, 0.9435f, 0.1947f, + 0.000000f, 1.000000f, 0.000000f, 0.272728f, 0.472382f, 0.2680f, 0.9435f, 0.1947f, + 0.162456f, 0.850654f, 0.499995f, 0.227273f, 0.393651f, 0.4911f, 0.7947f, 0.3568f, + 0.688189f, 0.525736f, 0.499997f, 0.272728f, 0.314921f, 0.4911f, 0.7947f, 0.3568f, + 0.525730f, 0.850652f, 0.000000f, 0.318182f, 0.393651f, 0.4911f, 0.7947f, 0.3568f, + 0.688189f, 0.525736f, 0.499997f, 0.272728f, 0.314921f, 0.7240f, 0.6617f, 0.1947f, + 0.894426f, 0.447216f, 0.000000f, 0.363637f, 0.314921f, 0.7240f, 0.6617f, 0.1947f, + 0.525730f, 0.850652f, 0.000000f, 0.318182f, 0.393651f, 0.7240f, 0.6617f, 0.1947f, + 0.951058f, 0.000000f, -0.309013f, 0.409092f, 0.236191f, 0.8897f, 0.3304f, -0.3151f, + 0.688189f, 0.525736f, -0.499997f, 0.454546f, 0.314921f, 0.8897f, 0.3304f, -0.3151f, + 0.894426f, 0.447216f, 0.000000f, 0.363637f, 0.314921f, 0.8897f, 0.3304f, -0.3151f, + 0.951058f, 0.000000f, -0.309013f, 0.409092f, 0.236191f, 0.7947f, 0.1876f, -0.5773f, + 0.587786f, 0.000000f, -0.809017f, 0.500000f, 0.236191f, 0.7947f, 0.1876f, -0.5773f, + 0.688189f, 0.525736f, -0.499997f, 0.454546f, 0.314921f, 0.7947f, 0.1876f, -0.5773f, + 0.587786f, 0.000000f, -0.809017f, 0.500000f, 0.236191f, 0.5746f, 0.3304f, -0.7488f, + 0.276388f, 0.447220f, -0.850649f, 0.545455f, 0.314921f, 0.5746f, 0.3304f, -0.7488f, + 0.688189f, 0.525736f, -0.499997f, 0.454546f, 0.314921f, 0.5746f, 0.3304f, -0.7488f, + 0.000000f, 0.000000f, -1.000000f, 0.590909f, 0.236191f, -0.0247f, 0.3304f, -0.9435f, + -0.262869f, 0.525738f, -0.809012f, 0.636364f, 0.314921f, -0.0247f, 0.3304f, -0.9435f, + 0.276388f, 0.447220f, -0.850649f, 0.545455f, 0.314921f, -0.0247f, 0.3304f, -0.9435f, + 0.000000f, 0.000000f, -1.000000f, 0.590909f, 0.236191f, -0.3035f, 0.1876f, -0.9342f, + -0.587786f, 0.000000f, -0.809017f, 0.681818f, 0.236191f, -0.3035f, 0.1876f, -0.9342f, + -0.262869f, 0.525738f, -0.809012f, 0.636364f, 0.314921f, -0.3035f, 0.1876f, -0.9342f, + -0.587786f, 0.000000f, -0.809017f, 0.681818f, 0.236191f, -0.5346f, 0.3304f, -0.7779f, + -0.723607f, 0.447220f, -0.525725f, 0.727273f, 0.314921f, -0.5346f, 0.3304f, -0.7779f, + -0.262869f, 0.525738f, -0.809012f, 0.636364f, 0.314921f, -0.5346f, 0.3304f, -0.7779f, + -0.951058f, 0.000000f, -0.309013f, 0.772727f, 0.236191f, -0.9050f, 0.3304f, -0.2680f, + -0.850648f, 0.525736f, 0.000000f, 0.818182f, 0.314921f, -0.9050f, 0.3304f, -0.2680f, + -0.723607f, 0.447220f, -0.525725f, 0.727273f, 0.314921f, -0.9050f, 0.3304f, -0.2680f, + -0.951058f, 0.000000f, -0.309013f, 0.772727f, 0.236191f, -0.9822f, 0.1876f, -0.0000f, + -0.951058f, 0.000000f, 0.309013f, 0.863636f, 0.236191f, -0.9822f, 0.1876f, -0.0000f, + -0.850648f, 0.525736f, 0.000000f, 0.818182f, 0.314921f, -0.9822f, 0.1876f, -0.0000f, + -0.951058f, 0.000000f, 0.309013f, 0.863636f, 0.236191f, -0.9050f, 0.3304f, 0.2680f, + -0.723607f, 0.447220f, 0.525725f, 0.909091f, 0.314921f, -0.9050f, 0.3304f, 0.2680f, + -0.850648f, 0.525736f, 0.000000f, 0.818182f, 0.314921f, -0.9050f, 0.3304f, 0.2680f, + -0.587786f, 0.000000f, 0.809017f, 0.045455f, 0.236191f, -0.5346f, 0.3304f, 0.7779f, + -0.262869f, 0.525738f, 0.809012f, 0.090910f, 0.314921f, -0.5346f, 0.3304f, 0.7779f, + -0.723607f, 0.447220f, 0.525725f, 0.000000f, 0.314921f, -0.5346f, 0.3304f, 0.7779f, + -0.587786f, 0.000000f, 0.809017f, 0.045455f, 0.236191f, -0.3035f, 0.1876f, 0.9342f, + 0.000000f, 0.000000f, 1.000000f, 0.136365f, 0.236191f, -0.3035f, 0.1876f, 0.9342f, + -0.262869f, 0.525738f, 0.809012f, 0.090910f, 0.314921f, -0.3035f, 0.1876f, 0.9342f, + 0.000000f, 0.000000f, 1.000000f, 0.136365f, 0.236191f, -0.0247f, 0.3304f, 0.9435f, + 0.276388f, 0.447220f, 0.850649f, 0.181819f, 0.314921f, -0.0247f, 0.3304f, 0.9435f, + -0.262869f, 0.525738f, 0.809012f, 0.090910f, 0.314921f, -0.0247f, 0.3304f, 0.9435f, + 0.587786f, 0.000000f, 0.809017f, 0.227273f, 0.236191f, 0.5746f, 0.3304f, 0.7488f, + 0.688189f, 0.525736f, 0.499997f, 0.272728f, 0.314921f, 0.5746f, 0.3304f, 0.7488f, + 0.276388f, 0.447220f, 0.850649f, 0.181819f, 0.314921f, 0.5746f, 0.3304f, 0.7488f, + 0.587786f, 0.000000f, 0.809017f, 0.227273f, 0.236191f, 0.7947f, 0.1876f, 0.5773f, + 0.951058f, 0.000000f, 0.309013f, 0.318182f, 0.236191f, 0.7947f, 0.1876f, 0.5773f, + 0.688189f, 0.525736f, 0.499997f, 0.272728f, 0.314921f, 0.7947f, 0.1876f, 0.5773f, + 0.951058f, 0.000000f, 0.309013f, 0.318182f, 0.236191f, 0.8897f, 0.3304f, 0.3151f, + 0.894426f, 0.447216f, 0.000000f, 0.363637f, 0.314921f, 0.8897f, 0.3304f, 0.3151f, + 0.688189f, 0.525736f, 0.499997f, 0.272728f, 0.314921f, 0.8897f, 0.3304f, 0.3151f, + 0.587786f, 0.000000f, -0.809017f, 0.500000f, 0.236191f, 0.3066f, 0.1256f, -0.9435f, + 0.000000f, 0.000000f, -1.000000f, 0.590909f, 0.236191f, 0.3066f, 0.1256f, -0.9435f, + 0.276388f, 0.447220f, -0.850649f, 0.545455f, 0.314921f, 0.3066f, 0.1256f, -0.9435f, + 0.587786f, 0.000000f, -0.809017f, 0.500000f, 0.236191f, 0.3035f, -0.1876f, -0.9342f, + 0.262869f, -0.525738f, -0.809012f, 0.545455f, 0.157461f, 0.3035f, -0.1876f, -0.9342f, + 0.000000f, 0.000000f, -1.000000f, 0.590909f, 0.236191f, 0.3035f, -0.1876f, -0.9342f, + 0.262869f, -0.525738f, -0.809012f, 0.545455f, 0.157461f, 0.0247f, -0.3304f, -0.9435f, + -0.276388f, -0.447220f, -0.850649f, 0.636364f, 0.157461f, 0.0247f, -0.3304f, -0.9435f, + 0.000000f, 0.000000f, -1.000000f, 0.590909f, 0.236191f, 0.0247f, -0.3304f, -0.9435f, + -0.587786f, 0.000000f, -0.809017f, 0.681818f, 0.236191f, -0.8026f, 0.1256f, -0.5831f, + -0.951058f, 0.000000f, -0.309013f, 0.772727f, 0.236191f, -0.8026f, 0.1256f, -0.5831f, + -0.723607f, 0.447220f, -0.525725f, 0.727273f, 0.314921f, -0.8026f, 0.1256f, -0.5831f, + -0.587786f, 0.000000f, -0.809017f, 0.681818f, 0.236191f, -0.7947f, -0.1876f, -0.5773f, + -0.688189f, -0.525736f, -0.499997f, 0.727273f, 0.157461f, -0.7947f, -0.1876f, -0.5773f, + -0.951058f, 0.000000f, -0.309013f, 0.772727f, 0.236191f, -0.7947f, -0.1876f, -0.5773f, + -0.688189f, -0.525736f, -0.499997f, 0.727273f, 0.157461f, -0.8897f, -0.3304f, -0.3151f, + -0.894426f, -0.447216f, 0.000000f, 0.818182f, 0.157461f, -0.8897f, -0.3304f, -0.3151f, + -0.951058f, 0.000000f, -0.309013f, 0.772727f, 0.236191f, -0.8897f, -0.3304f, -0.3151f, + -0.951058f, 0.000000f, 0.309013f, 0.863636f, 0.236191f, -0.8026f, 0.1256f, 0.5831f, + -0.587786f, 0.000000f, 0.809017f, 0.954545f, 0.236191f, -0.8026f, 0.1256f, 0.5831f, + -0.723607f, 0.447220f, 0.525725f, 0.909091f, 0.314921f, -0.8026f, 0.1256f, 0.5831f, + -0.951058f, 0.000000f, 0.309013f, 0.863636f, 0.236191f, -0.7947f, -0.1876f, 0.5773f, + -0.688189f, -0.525736f, 0.499997f, 0.909091f, 0.157461f, -0.7947f, -0.1876f, 0.5773f, + -0.587786f, 0.000000f, 0.809017f, 0.954545f, 0.236191f, -0.7947f, -0.1876f, 0.5773f, + -0.688189f, -0.525736f, 0.499997f, 0.909091f, 0.157461f, -0.5746f, -0.3304f, 0.7488f, + -0.276388f, -0.447220f, 0.850649f, 1.000000f, 0.157461f, -0.5746f, -0.3304f, 0.7488f, + -0.587786f, 0.000000f, 0.809017f, 0.954545f, 0.236191f, -0.5746f, -0.3304f, 0.7488f, + 0.000000f, 0.000000f, 1.000000f, 0.136365f, 0.236191f, 0.3066f, 0.1256f, 0.9435f, + 0.587786f, 0.000000f, 0.809017f, 0.227273f, 0.236191f, 0.3066f, 0.1256f, 0.9435f, + 0.276388f, 0.447220f, 0.850649f, 0.181819f, 0.314921f, 0.3066f, 0.1256f, 0.9435f, + 0.000000f, 0.000000f, 1.000000f, 0.136365f, 0.236191f, 0.3035f, -0.1876f, 0.9342f, + 0.262869f, -0.525738f, 0.809012f, 0.181819f, 0.157461f, 0.3035f, -0.1876f, 0.9342f, + 0.587786f, 0.000000f, 0.809017f, 0.227273f, 0.236191f, 0.3035f, -0.1876f, 0.9342f, + 0.262869f, -0.525738f, 0.809012f, 0.181819f, 0.157461f, 0.5346f, -0.3304f, 0.7779f, + 0.723607f, -0.447220f, 0.525725f, 0.272728f, 0.157461f, 0.5346f, -0.3304f, 0.7779f, + 0.587786f, 0.000000f, 0.809017f, 0.227273f, 0.236191f, 0.5346f, -0.3304f, 0.7779f, + 0.951058f, 0.000000f, 0.309013f, 0.318182f, 0.236191f, 0.9921f, 0.1256f, -0.0000f, + 0.951058f, 0.000000f, -0.309013f, 0.409092f, 0.236191f, 0.9921f, 0.1256f, -0.0000f, + 0.894426f, 0.447216f, 0.000000f, 0.363637f, 0.314921f, 0.9921f, 0.1256f, -0.0000f, + 0.951058f, 0.000000f, 0.309013f, 0.318182f, 0.236191f, 0.9822f, -0.1876f, -0.0000f, + 0.850648f, -0.525736f, 0.000000f, 0.363637f, 0.157461f, 0.9822f, -0.1876f, -0.0000f, + 0.951058f, 0.000000f, -0.309013f, 0.409092f, 0.236191f, 0.9822f, -0.1876f, -0.0000f, + 0.850648f, -0.525736f, 0.000000f, 0.363637f, 0.157461f, 0.9050f, -0.3304f, -0.2680f, + 0.723607f, -0.447220f, -0.525725f, 0.454546f, 0.157461f, 0.9050f, -0.3304f, -0.2680f, + 0.951058f, 0.000000f, -0.309013f, 0.409092f, 0.236191f, 0.9050f, -0.3304f, -0.2680f, + 0.425323f, -0.850654f, -0.309011f, 0.500000f, 0.078731f, 0.4713f, -0.6617f, -0.5831f, + 0.262869f, -0.525738f, -0.809012f, 0.545455f, 0.157461f, 0.4713f, -0.6617f, -0.5831f, + 0.723607f, -0.447220f, -0.525725f, 0.454546f, 0.157461f, 0.4713f, -0.6617f, -0.5831f, + 0.425323f, -0.850654f, -0.309011f, 0.500000f, 0.078731f, 0.1876f, -0.7947f, -0.5773f, + -0.162456f, -0.850654f, -0.499995f, 0.590909f, 0.078731f, 0.1876f, -0.7947f, -0.5773f, + 0.262869f, -0.525738f, -0.809012f, 0.545455f, 0.157461f, 0.1876f, -0.7947f, -0.5773f, + -0.162456f, -0.850654f, -0.499995f, 0.590909f, 0.078731f, -0.0385f, -0.6617f, -0.7488f, + -0.276388f, -0.447220f, -0.850649f, 0.636364f, 0.157461f, -0.0385f, -0.6617f, -0.7488f, + 0.262869f, -0.525738f, -0.809012f, 0.545455f, 0.157461f, -0.0385f, -0.6617f, -0.7488f, + -0.162456f, -0.850654f, -0.499995f, 0.681818f, 0.078731f, -0.4089f, -0.6617f, -0.6284f, + -0.688189f, -0.525736f, -0.499997f, 0.727273f, 0.157461f, -0.4089f, -0.6617f, -0.6284f, + -0.276388f, -0.447220f, -0.850649f, 0.636364f, 0.157461f, -0.4089f, -0.6617f, -0.6284f, + -0.162456f, -0.850654f, -0.499995f, 0.681818f, 0.078731f, -0.4911f, -0.7947f, -0.3568f, + -0.525730f, -0.850652f, 0.000000f, 0.772727f, 0.078731f, -0.4911f, -0.7947f, -0.3568f, + -0.688189f, -0.525736f, -0.499997f, 0.727273f, 0.157461f, -0.4911f, -0.7947f, -0.3568f, + -0.525730f, -0.850652f, 0.000000f, 0.772727f, 0.078731f, -0.7240f, -0.6617f, -0.1947f, + -0.894426f, -0.447216f, 0.000000f, 0.818182f, 0.157461f, -0.7240f, -0.6617f, -0.1947f, + -0.688189f, -0.525736f, -0.499997f, 0.727273f, 0.157461f, -0.7240f, -0.6617f, -0.1947f, + -0.525730f, -0.850652f, 0.000000f, 0.863636f, 0.078731f, -0.7240f, -0.6617f, 0.1947f, + -0.688189f, -0.525736f, 0.499997f, 0.909091f, 0.157461f, -0.7240f, -0.6617f, 0.1947f, + -0.894426f, -0.447216f, 0.000000f, 0.818182f, 0.157461f, -0.7240f, -0.6617f, 0.1947f, + -0.525730f, -0.850652f, 0.000000f, 0.863636f, 0.078731f, -0.4911f, -0.7947f, 0.3568f, + -0.162456f, -0.850654f, 0.499995f, 0.954545f, 0.078731f, -0.4911f, -0.7947f, 0.3568f, + -0.688189f, -0.525736f, 0.499997f, 0.909091f, 0.157461f, -0.4911f, -0.7947f, 0.3568f, + -0.162456f, -0.850654f, 0.499995f, 0.954545f, 0.078731f, -0.4089f, -0.6617f, 0.6284f, + -0.276388f, -0.447220f, 0.850649f, 1.000000f, 0.157461f, -0.4089f, -0.6617f, 0.6284f, + -0.688189f, -0.525736f, 0.499997f, 0.909091f, 0.157461f, -0.4089f, -0.6617f, 0.6284f, + 0.850648f, -0.525736f, 0.000000f, 0.363637f, 0.157461f, 0.7002f, -0.6617f, -0.2680f, + 0.425323f, -0.850654f, -0.309011f, 0.409092f, 0.078731f, 0.7002f, -0.6617f, -0.2680f, + 0.723607f, -0.447220f, -0.525725f, 0.454546f, 0.157461f, 0.7002f, -0.6617f, -0.2680f, + 0.850648f, -0.525736f, 0.000000f, 0.363637f, 0.157461f, 0.6071f, -0.7947f, -0.0000f, + 0.425323f, -0.850654f, 0.309011f, 0.318182f, 0.078731f, 0.6071f, -0.7947f, -0.0000f, + 0.425323f, -0.850654f, -0.309011f, 0.409092f, 0.078731f, 0.6071f, -0.7947f, -0.0000f, + 0.425323f, -0.850654f, 0.309011f, 0.318182f, 0.078731f, 0.3313f, -0.9435f, -0.0000f, + 0.000000f, -1.000000f, 0.000000f, 0.363637f, 0.000000f, 0.3313f, -0.9435f, -0.0000f, + 0.425323f, -0.850654f, -0.309011f, 0.409092f, 0.078731f, 0.3313f, -0.9435f, -0.0000f, + -0.162456f, -0.850654f, 0.499995f, 0.136365f, 0.078731f, -0.0385f, -0.6617f, 0.7488f, + 0.262869f, -0.525738f, 0.809012f, 0.181819f, 0.157461f, -0.0385f, -0.6617f, 0.7488f, + -0.276388f, -0.447220f, 0.850649f, 0.090910f, 0.157461f, -0.0385f, -0.6617f, 0.7488f, + -0.162456f, -0.850654f, 0.499995f, 0.136365f, 0.078731f, 0.1876f, -0.7947f, 0.5773f, + 0.425323f, -0.850654f, 0.309011f, 0.227273f, 0.078731f, 0.1876f, -0.7947f, 0.5773f, + 0.262869f, -0.525738f, 0.809012f, 0.181819f, 0.157461f, 0.1876f, -0.7947f, 0.5773f, + 0.425323f, -0.850654f, 0.309011f, 0.227273f, 0.078731f, 0.4713f, -0.6617f, 0.5831f, + 0.723607f, -0.447220f, 0.525725f, 0.272728f, 0.157461f, 0.4713f, -0.6617f, 0.5831f, + 0.262869f, -0.525738f, 0.809012f, 0.181819f, 0.157461f, 0.4713f, -0.6617f, 0.5831f, +}; + +const int ball_vertices_length = (sizeof (ball_vertices)) / (sizeof (ball_vertices[0])); + diff --git a/include/model/ball.mtl b/include/model/ball.mtl new file mode 100644 index 0000000..4a7e04d --- /dev/null +++ b/include/model/ball.mtl @@ -0,0 +1,2 @@ +# Blender 4.4.3 MTL File: 'ball.blend' +# www.blender.org diff --git a/include/model/ball.obj b/include/model/ball.obj new file mode 100644 index 0000000..36f6535 --- /dev/null +++ b/include/model/ball.obj @@ -0,0 +1,270 @@ +# Blender 4.4.3 +# www.blender.org +mtllib ball.mtl +o Icosphere +v 0.000000 -1.000000 0.000000 +v 0.723607 -0.447220 0.525725 +v -0.276388 -0.447220 0.850649 +v -0.894426 -0.447216 0.000000 +v -0.276388 -0.447220 -0.850649 +v 0.723607 -0.447220 -0.525725 +v 0.276388 0.447220 0.850649 +v -0.723607 0.447220 0.525725 +v -0.723607 0.447220 -0.525725 +v 0.276388 0.447220 -0.850649 +v 0.894426 0.447216 0.000000 +v 0.000000 1.000000 0.000000 +v -0.162456 -0.850654 0.499995 +v 0.425323 -0.850654 0.309011 +v 0.262869 -0.525738 0.809012 +v 0.850648 -0.525736 0.000000 +v 0.425323 -0.850654 -0.309011 +v -0.525730 -0.850652 0.000000 +v -0.688189 -0.525736 0.499997 +v -0.162456 -0.850654 -0.499995 +v -0.688189 -0.525736 -0.499997 +v 0.262869 -0.525738 -0.809012 +v 0.951058 0.000000 0.309013 +v 0.951058 0.000000 -0.309013 +v 0.000000 0.000000 1.000000 +v 0.587786 0.000000 0.809017 +v -0.951058 0.000000 0.309013 +v -0.587786 0.000000 0.809017 +v -0.587786 0.000000 -0.809017 +v -0.951058 0.000000 -0.309013 +v 0.587786 0.000000 -0.809017 +v 0.000000 0.000000 -1.000000 +v 0.688189 0.525736 0.499997 +v -0.262869 0.525738 0.809012 +v -0.850648 0.525736 0.000000 +v -0.262869 0.525738 -0.809012 +v 0.688189 0.525736 -0.499997 +v 0.162456 0.850654 0.499995 +v 0.525730 0.850652 0.000000 +v -0.425323 0.850654 0.309011 +v -0.425323 0.850654 -0.309011 +v 0.162456 0.850654 -0.499995 +vn 0.1024 -0.9435 0.3151 +vn 0.7002 -0.6617 0.2680 +vn -0.2680 -0.9435 0.1947 +vn -0.2680 -0.9435 -0.1947 +vn 0.1024 -0.9435 -0.3151 +vn 0.9050 -0.3304 0.2680 +vn 0.0247 -0.3304 0.9435 +vn -0.8897 -0.3304 0.3151 +vn -0.5746 -0.3304 -0.7488 +vn 0.5346 -0.3304 -0.7779 +vn 0.8026 -0.1256 0.5831 +vn -0.3066 -0.1256 0.9435 +vn -0.9921 -0.1256 -0.0000 +vn -0.3066 -0.1256 -0.9435 +vn 0.8026 -0.1256 -0.5831 +vn 0.4089 0.6617 0.6284 +vn -0.4713 0.6617 0.5831 +vn -0.7002 0.6617 -0.2680 +vn 0.0385 0.6617 -0.7488 +vn 0.7240 0.6617 -0.1947 +vn 0.2680 0.9435 -0.1947 +vn 0.4911 0.7947 -0.3568 +vn 0.4089 0.6617 -0.6284 +vn -0.1024 0.9435 -0.3151 +vn -0.1876 0.7947 -0.5773 +vn -0.4713 0.6617 -0.5831 +vn -0.3313 0.9435 -0.0000 +vn -0.6071 0.7947 -0.0000 +vn -0.7002 0.6617 0.2680 +vn -0.1024 0.9435 0.3151 +vn -0.1876 0.7947 0.5773 +vn 0.0385 0.6617 0.7488 +vn 0.2680 0.9435 0.1947 +vn 0.4911 0.7947 0.3568 +vn 0.7240 0.6617 0.1947 +vn 0.8897 0.3304 -0.3151 +vn 0.7947 0.1876 -0.5773 +vn 0.5746 0.3304 -0.7488 +vn -0.0247 0.3304 -0.9435 +vn -0.3035 0.1876 -0.9342 +vn -0.5346 0.3304 -0.7779 +vn -0.9050 0.3304 -0.2680 +vn -0.9822 0.1876 -0.0000 +vn -0.9050 0.3304 0.2680 +vn -0.5346 0.3304 0.7779 +vn -0.3035 0.1876 0.9342 +vn -0.0247 0.3304 0.9435 +vn 0.5746 0.3304 0.7488 +vn 0.7947 0.1876 0.5773 +vn 0.8897 0.3304 0.3151 +vn 0.3066 0.1256 -0.9435 +vn 0.3035 -0.1876 -0.9342 +vn 0.0247 -0.3304 -0.9435 +vn -0.8026 0.1256 -0.5831 +vn -0.7947 -0.1876 -0.5773 +vn -0.8897 -0.3304 -0.3151 +vn -0.8026 0.1256 0.5831 +vn -0.7947 -0.1876 0.5773 +vn -0.5746 -0.3304 0.7488 +vn 0.3066 0.1256 0.9435 +vn 0.3035 -0.1876 0.9342 +vn 0.5346 -0.3304 0.7779 +vn 0.9921 0.1256 -0.0000 +vn 0.9822 -0.1876 -0.0000 +vn 0.9050 -0.3304 -0.2680 +vn 0.4713 -0.6617 -0.5831 +vn 0.1876 -0.7947 -0.5773 +vn -0.0385 -0.6617 -0.7488 +vn -0.4089 -0.6617 -0.6284 +vn -0.4911 -0.7947 -0.3568 +vn -0.7240 -0.6617 -0.1947 +vn -0.7240 -0.6617 0.1947 +vn -0.4911 -0.7947 0.3568 +vn -0.4089 -0.6617 0.6284 +vn 0.7002 -0.6617 -0.2680 +vn 0.6071 -0.7947 -0.0000 +vn 0.3313 -0.9435 -0.0000 +vn -0.0385 -0.6617 0.7488 +vn 0.1876 -0.7947 0.5773 +vn 0.4713 -0.6617 0.5831 +vt 0.181819 0.000000 +vt 0.227273 0.078731 +vt 0.136365 0.078731 +vt 0.272728 0.157461 +vt 0.318182 0.078731 +vt 0.363637 0.157461 +vt 0.909091 0.000000 +vt 0.954545 0.078731 +vt 0.863636 0.078731 +vt 0.727273 0.000000 +vt 0.772727 0.078731 +vt 0.681818 0.078731 +vt 0.545455 0.000000 +vt 0.590909 0.078731 +vt 0.500000 0.078731 +vt 0.318182 0.236191 +vt 0.090910 0.157461 +vt 0.181819 0.157461 +vt 0.136365 0.236191 +vt 0.818182 0.157461 +vt 0.909091 0.157461 +vt 0.863636 0.236191 +vt 0.636364 0.157461 +vt 0.727273 0.157461 +vt 0.681818 0.236191 +vt 0.454546 0.157461 +vt 0.545455 0.157461 +vt 0.500000 0.236191 +vt 0.227273 0.236191 +vt 0.045455 0.236191 +vt 0.772727 0.236191 +vt 0.590909 0.236191 +vt 0.409092 0.236191 +vt 0.181819 0.314921 +vt 0.272728 0.314921 +vt 0.227273 0.393651 +vt 0.000000 0.314921 +vt 0.090910 0.314921 +vt 0.045455 0.393651 +vt 0.727273 0.314921 +vt 0.818182 0.314921 +vt 0.772727 0.393651 +vt 0.545455 0.314921 +vt 0.636364 0.314921 +vt 0.590909 0.393651 +vt 0.363637 0.314921 +vt 0.454546 0.314921 +vt 0.409092 0.393651 +vt 0.500000 0.393651 +vt 0.454546 0.472382 +vt 0.681818 0.393651 +vt 0.636364 0.472382 +vt 0.863636 0.393651 +vt 0.818182 0.472382 +vt 0.909091 0.314921 +vt 0.136365 0.393651 +vt 0.090910 0.472382 +vt 0.318182 0.393651 +vt 0.272728 0.472382 +vt 0.954545 0.236191 +vt 1.000000 0.157461 +vt 0.409092 0.078731 +vt 0.363637 0.000000 +s 0 +f 1/1/1 14/2/1 13/3/1 +f 2/4/2 14/5/2 16/6/2 +f 1/7/3 13/8/3 18/9/3 +f 1/10/4 18/11/4 20/12/4 +f 1/13/5 20/14/5 17/15/5 +f 2/4/6 16/6/6 23/16/6 +f 3/17/7 15/18/7 25/19/7 +f 4/20/8 19/21/8 27/22/8 +f 5/23/9 21/24/9 29/25/9 +f 6/26/10 22/27/10 31/28/10 +f 2/4/11 23/16/11 26/29/11 +f 3/17/12 25/19/12 28/30/12 +f 4/20/13 27/22/13 30/31/13 +f 5/23/14 29/25/14 32/32/14 +f 6/26/15 31/28/15 24/33/15 +f 7/34/16 33/35/16 38/36/16 +f 8/37/17 34/38/17 40/39/17 +f 9/40/18 35/41/18 41/42/18 +f 10/43/19 36/44/19 42/45/19 +f 11/46/20 37/47/20 39/48/20 +f 39/48/21 42/49/21 12/50/21 +f 39/48/22 37/47/22 42/49/22 +f 37/47/23 10/43/23 42/49/23 +f 42/45/24 41/51/24 12/52/24 +f 42/45/25 36/44/25 41/51/25 +f 36/44/26 9/40/26 41/51/26 +f 41/42/27 40/53/27 12/54/27 +f 41/42/28 35/41/28 40/53/28 +f 35/41/29 8/55/29 40/53/29 +f 40/39/30 38/56/30 12/57/30 +f 40/39/31 34/38/31 38/56/31 +f 34/38/32 7/34/32 38/56/32 +f 38/36/33 39/58/33 12/59/33 +f 38/36/34 33/35/34 39/58/34 +f 33/35/35 11/46/35 39/58/35 +f 24/33/36 37/47/36 11/46/36 +f 24/33/37 31/28/37 37/47/37 +f 31/28/38 10/43/38 37/47/38 +f 32/32/39 36/44/39 10/43/39 +f 32/32/40 29/25/40 36/44/40 +f 29/25/41 9/40/41 36/44/41 +f 30/31/42 35/41/42 9/40/42 +f 30/31/43 27/22/43 35/41/43 +f 27/22/44 8/55/44 35/41/44 +f 28/30/45 34/38/45 8/37/45 +f 28/30/46 25/19/46 34/38/46 +f 25/19/47 7/34/47 34/38/47 +f 26/29/48 33/35/48 7/34/48 +f 26/29/49 23/16/49 33/35/49 +f 23/16/50 11/46/50 33/35/50 +f 31/28/51 32/32/51 10/43/51 +f 31/28/52 22/27/52 32/32/52 +f 22/27/53 5/23/53 32/32/53 +f 29/25/54 30/31/54 9/40/54 +f 29/25/55 21/24/55 30/31/55 +f 21/24/56 4/20/56 30/31/56 +f 27/22/57 28/60/57 8/55/57 +f 27/22/58 19/21/58 28/60/58 +f 19/21/59 3/61/59 28/60/59 +f 25/19/60 26/29/60 7/34/60 +f 25/19/61 15/18/61 26/29/61 +f 15/18/62 2/4/62 26/29/62 +f 23/16/63 24/33/63 11/46/63 +f 23/16/64 16/6/64 24/33/64 +f 16/6/65 6/26/65 24/33/65 +f 17/15/66 22/27/66 6/26/66 +f 17/15/67 20/14/67 22/27/67 +f 20/14/68 5/23/68 22/27/68 +f 20/12/69 21/24/69 5/23/69 +f 20/12/70 18/11/70 21/24/70 +f 18/11/71 4/20/71 21/24/71 +f 18/9/72 19/21/72 4/20/72 +f 18/9/73 13/8/73 19/21/73 +f 13/8/74 3/61/74 19/21/74 +f 16/6/75 17/62/75 6/26/75 +f 16/6/76 14/5/76 17/62/76 +f 14/5/77 1/63/77 17/62/77 +f 13/3/78 15/18/78 3/17/78 +f 13/3/79 14/2/79 15/18/79 +f 14/2/80 2/4/80 15/18/80 diff --git a/include/render.hpp b/include/render.hpp index 4e8f8f8..bda65f7 100644 --- a/include/render.hpp +++ b/include/render.hpp @@ -14,6 +14,7 @@ extern "C" { void render(struct mesh paddle_mesh, struct mesh brick_mesh, + struct mesh ball_mesh, uint attrib_position, uint attrib_normal, uint uniform_trans, diff --git a/src/main.c b/src/main.c index 1024ebb..abe5b5d 100644 --- a/src/main.c +++ b/src/main.c @@ -13,9 +13,10 @@ #include "model/brick.h" #include "model/paddle.h" +#include "model/ball.h" -static int vp_width = 1200; -static int vp_height = 1200; +int vp_width = 2400; +int vp_height = 1200; void framebuffer_size_callback(GLFWwindow* window, int width, int height) { @@ -76,6 +77,7 @@ int main() struct mesh paddle_mesh; struct mesh brick_mesh; + struct mesh ball_mesh; brick_mesh.vtx = make_buffer(GL_ARRAY_BUFFER, brick_vertices, (sizeof (brick_vertices))); brick_mesh.idx = make_buffer(GL_ELEMENT_ARRAY_BUFFER, brick_Cube_triangles, (sizeof (brick_Cube_triangles))); brick_mesh.length = brick_Cube_triangles_length; @@ -84,6 +86,10 @@ int main() paddle_mesh.idx = make_buffer(GL_ELEMENT_ARRAY_BUFFER, paddle_Cylinder_triangles, (sizeof (paddle_Cylinder_triangles))); paddle_mesh.length = paddle_Cylinder_triangles_length; + ball_mesh.vtx = make_buffer(GL_ARRAY_BUFFER, ball_vertices, (sizeof (ball_vertices))); + ball_mesh.idx = make_buffer(GL_ELEMENT_ARRAY_BUFFER, ball_Icosphere_triangles, (sizeof (ball_Icosphere_triangles))); + ball_mesh.length = ball_Icosphere_triangles_length; + uint program = compile_shader(src_shader_vertex_color_vp_glsl_start, src_shader_vertex_color_vp_glsl_size, src_shader_vertex_color_fp_glsl_start, @@ -146,6 +152,7 @@ int main() render(paddle_mesh, brick_mesh, + ball_mesh, attrib_position, attrib_normal, uniform_trans, diff --git a/src/render.cpp b/src/render.cpp index bc41c70..d26dc6e 100644 --- a/src/render.cpp +++ b/src/render.cpp @@ -13,6 +13,9 @@ #define PI 3.14159274101257324219f +extern int vp_width; +extern int vp_height; + mat4x4 perspective(float low1, float high1, float low2, float high2) { @@ -60,6 +63,7 @@ mat4x4 perspective(float low1, float high1, void render(mesh paddle_mesh, mesh brick_mesh, + mesh ball_mesh, uint attrib_position, uint attrib_normal, uint uniform_trans, @@ -70,6 +74,10 @@ void render(mesh paddle_mesh, { static float theta = 0; + float aspect = (float)vp_height / (float)vp_width; + + mat4x4 a = scale(vec3(aspect, 1.0f, 1.0f)); + theta += 0.01; ////////////////////////////////////////////////////////////////////// @@ -133,7 +141,7 @@ void render(mesh paddle_mesh, mat4x4 t = translate(vec3(px, py, 0.0)); - mat4x4 trans = t * rx * s; + mat4x4 trans = a * t * rx * s; //mat3x3 normal_trans = transpose(inverse(submatrix(trans, 0, 0))); mat3x3 normal_trans = submatrix(rx, 3, 3); @@ -161,7 +169,7 @@ void render(mesh paddle_mesh, float py = ((float)26 / 28.0) * -2.0 + 1.0 - 1.0f / 28.0f; mat4x4 t = translate(vec3(px, py, 0.0)); - mat4x4 trans = t * rx * s; + mat4x4 trans = a * t * rx * s; mat3x3 normal_trans = submatrix(rx, 3, 3); //vec3 base_color = vec3(1, 1, 1); vec3 base_color = vec3(1, 1, 1) * 0.5f; @@ -203,4 +211,58 @@ void render(mesh paddle_mesh, glDrawElements(GL_TRIANGLES, paddle_mesh.length, GL_UNSIGNED_INT, 0); } + + ////////////////////////////////////////////////////////////////////// + // render ball + ////////////////////////////////////////////////////////////////////// + + { + mat4x4 rx = rotate_y(PI / 2.0f); + mat4x4 s = scale(0.03f); + float px = ((float)paddle_x / 13.0) * 2.0 - 1.0 + 1.0f / 13.0f; + float py = ((float)25 / 28.0) * -2.0 + 1.0 - 1.0f / 28.0f; + mat4x4 t = translate(vec3(px, py, 0.0)); + + mat4x4 trans = a * t * rx * s; + mat3x3 normal_trans = submatrix(rx, 3, 3); + //vec3 base_color = vec3(1, 1, 1); + vec3 base_color = vec3(1, 1, 1) * 0.5f; + //vec3 light_pos = vec3(-1, -1, 1); + + glBindBuffer(GL_ARRAY_BUFFER, ball_mesh.vtx); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ball_mesh.idx); + + glVertexAttribPointer(attrib_position, + 3, + GL_FLOAT, + GL_FALSE, + (sizeof (float)) * 8, + (void*)(0 * 4) + ); + /* + glVertexAttribPointer(vertex_color_attrib_texture, + 2, + GL_FLOAT, + GL_FALSE, + (sizeof (float)) * 8, + (void*)(3 * 4) + ); + */ + glVertexAttribPointer(attrib_normal, + 3, + GL_FLOAT, + GL_FALSE, + (sizeof (float)) * 8, + (void*)(5 * 4) + ); + glEnableVertexAttribArray(attrib_position); + glEnableVertexAttribArray(attrib_normal); + + glUniform4fv(uniform_trans, 4, &trans[0][0]); + glUniform3fv(uniform_normal_trans, 3, &normal_trans[0][0]); + glUniform3fv(uniform_base_color, 1, &base_color[0]); + glUniform3fv(uniform_light_pos, 1, &light_pos[0]); + + glDrawElements(GL_TRIANGLES, paddle_mesh.length, GL_UNSIGNED_INT, 0); + } }