draw ball; aspect correction

This commit is contained in:
Zack Buhman 2025-12-04 14:10:48 -06:00
parent 38f3219936
commit 4ad6e4c344
8 changed files with 678 additions and 4 deletions

0
ball.h Normal file
View File

BIN
blend/ball.blend Normal file

Binary file not shown.

332
include/model/ball.h Normal file
View File

@ -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]));

2
include/model/ball.mtl Normal file
View File

@ -0,0 +1,2 @@
# Blender 4.4.3 MTL File: 'ball.blend'
# www.blender.org

270
include/model/ball.obj Normal file
View File

@ -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

View File

@ -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,

View File

@ -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,

View File

@ -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);
}
}