mirror of
https://git.coom.tech/drummyfish/small3dlib.git
synced 2024-11-24 21:09:57 +01:00
Start game demo
This commit is contained in:
parent
d71b117fe7
commit
6764fd12a5
3 changed files with 10124 additions and 0 deletions
956
programs/cityModel.h
Normal file
956
programs/cityModel.h
Normal file
|
@ -0,0 +1,956 @@
|
||||||
|
#ifndef CITY_MODEL_H
|
||||||
|
#define CITY_MODEL_H
|
||||||
|
|
||||||
|
#define CITY_VERTEX_COUNT 157
|
||||||
|
const S3L_Unit cityVertices[CITY_VERTEX_COUNT * 3] = {
|
||||||
|
-3584, 5, 512, // 0
|
||||||
|
-4608, 5, 1536, // 3
|
||||||
|
-5632, 5, -512, // 6
|
||||||
|
-5632, 5, -1536, // 9
|
||||||
|
-5632, 5, -2560, // 12
|
||||||
|
-4608, 5, -1536, // 15
|
||||||
|
-4608, 5, -512, // 18
|
||||||
|
-2560, 5, 1536, // 21
|
||||||
|
-2560, 5, 512, // 24
|
||||||
|
-1536, 5, 1536, // 27
|
||||||
|
-2560, 5, -512, // 30
|
||||||
|
-3584, 5, -512, // 33
|
||||||
|
-2560, 1779, 512, // 36
|
||||||
|
-2560, 1779, -512, // 39
|
||||||
|
-3584, 1779, -512, // 42
|
||||||
|
-4061, 1581, -1536, // 45
|
||||||
|
-2560, 1581, -1536, // 48
|
||||||
|
-5632, 777, -1536, // 51
|
||||||
|
-5632, 777, -2560, // 54
|
||||||
|
-2560, 777, 1536, // 57
|
||||||
|
-1536, 777, 1536, // 60
|
||||||
|
-4608, 1396, 1536, // 63
|
||||||
|
-5632, 1396, -512, // 66
|
||||||
|
-5632, 777, -512, // 69
|
||||||
|
-4608, 1396, -512, // 72
|
||||||
|
-2560, 1396, 1536, // 75
|
||||||
|
-2560, 815, 2731, // 78
|
||||||
|
-2560, 1396, 2731, // 81
|
||||||
|
-4608, 296, -1536, // 84
|
||||||
|
-4061, 296, -1536, // 87
|
||||||
|
-4608, 296, -2086, // 90
|
||||||
|
-6329, 595, 573, // 93
|
||||||
|
-5874, 595, 1132, // 96
|
||||||
|
-6329, 2807, 573, // 99
|
||||||
|
-5874, 2807, 1132, // 102
|
||||||
|
1536, 5, 2560, // 105
|
||||||
|
512, 5, 3584, // 108
|
||||||
|
-1536, 5, -1536, // 111
|
||||||
|
-1536, 5, -2560, // 114
|
||||||
|
-2560, 5, -3584, // 117
|
||||||
|
-1536, 5, -3584, // 120
|
||||||
|
512, 5, -2560, // 123
|
||||||
|
512, 5, -3584, // 126
|
||||||
|
-512, 5, -2560, // 129
|
||||||
|
-512, 5, -1536, // 132
|
||||||
|
-1536, 5, -512, // 135
|
||||||
|
-2560, 5, -1536, // 138
|
||||||
|
-512, 5, 1536, // 141
|
||||||
|
-512, 5, 512, // 144
|
||||||
|
-512, 5, -512, // 147
|
||||||
|
512, 5, 512, // 150
|
||||||
|
512, 5, 1536, // 153
|
||||||
|
2560, 5, 3584, // 156
|
||||||
|
2560, 5, 2560, // 159
|
||||||
|
3584, 5, 3584, // 162
|
||||||
|
2560, 5, 512, // 165
|
||||||
|
1536, 5, 1536, // 168
|
||||||
|
1536, 5, -1536, // 171
|
||||||
|
1536, 5, -2560, // 174
|
||||||
|
512, 5, -1536, // 177
|
||||||
|
-1536, 311, -1536, // 180
|
||||||
|
-1536, 311, -2560, // 183
|
||||||
|
-512, 311, -2560, // 186
|
||||||
|
-512, 311, -1536, // 189
|
||||||
|
1536, 1779, 2560, // 192
|
||||||
|
2560, 1779, 2560, // 195
|
||||||
|
2560, 1779, 1536, // 198
|
||||||
|
1536, 1779, 1536, // 201
|
||||||
|
-1536, 632, -3584, // 204
|
||||||
|
512, 632, -3584, // 207
|
||||||
|
-2560, 1584, -3584, // 210
|
||||||
|
-1536, 597, -4813, // 213
|
||||||
|
-2560, 1584, -1536, // 216
|
||||||
|
1058, 1581, 512, // 219
|
||||||
|
2560, 1581, 512, // 222
|
||||||
|
512, 1581, -1536, // 225
|
||||||
|
-2560, 1584, -4813, // 228
|
||||||
|
-1024, 594, -2048, // 231
|
||||||
|
1536, 1581, -1536, // 234
|
||||||
|
1536, 519, -1536, // 237
|
||||||
|
1536, 519, -2560, // 240
|
||||||
|
-1536, 777, -512, // 243
|
||||||
|
-512, 777, 512, // 246
|
||||||
|
-512, 777, -512, // 249
|
||||||
|
2560, 777, 3584, // 252
|
||||||
|
3584, 777, 3584, // 255
|
||||||
|
512, 1396, 3584, // 258
|
||||||
|
-512, 1396, 1536, // 261
|
||||||
|
-512, 777, 1536, // 264
|
||||||
|
512, 1396, 1536, // 267
|
||||||
|
2560, 1396, 3584, // 270
|
||||||
|
2560, 815, 4779, // 273
|
||||||
|
2560, 1396, 4779, // 276
|
||||||
|
-512, 1396, 3313, // 279
|
||||||
|
-512, 777, 3313, // 282
|
||||||
|
512, 296, 512, // 285
|
||||||
|
1058, 296, 512, // 288
|
||||||
|
512, 296, -38, // 291
|
||||||
|
512, 1581, -38, // 294
|
||||||
|
512, 2969, -2560, // 297
|
||||||
|
512, 2454, -3584, // 300
|
||||||
|
1536, 2969, -2560, // 303
|
||||||
|
1302, 282, -5879, // 306
|
||||||
|
1859, 282, -4816, // 309
|
||||||
|
1302, 2156, -5879, // 312
|
||||||
|
1859, 2156, -4816, // 315
|
||||||
|
-1209, 595, 2621, // 318
|
||||||
|
-754, 595, 3180, // 321
|
||||||
|
-1209, 2807, 2621, // 324
|
||||||
|
-754, 2807, 3180, // 327
|
||||||
|
-1473, 595, 3206, // 330
|
||||||
|
-1473, 2807, 3206, // 333
|
||||||
|
3584, 5, 512, // 336
|
||||||
|
3584, 5, -512, // 339
|
||||||
|
2560, 5, -1536, // 342
|
||||||
|
3584, 5, -1536, // 345
|
||||||
|
5632, 5, -512, // 348
|
||||||
|
5632, 5, -1536, // 351
|
||||||
|
4608, 5, -512, // 354
|
||||||
|
4608, 5, 512, // 357
|
||||||
|
3584, 5, 1536, // 360
|
||||||
|
2560, 5, 1536, // 363
|
||||||
|
4608, 5, 1536, // 366
|
||||||
|
5632, 5, 2560, // 369
|
||||||
|
6656, 5, 512, // 372
|
||||||
|
6656, 5, -512, // 375
|
||||||
|
5632, 5, 512, // 378
|
||||||
|
3584, 311, 512, // 381
|
||||||
|
3584, 311, -512, // 384
|
||||||
|
4608, 311, 512, // 387
|
||||||
|
3584, 632, -1536, // 390
|
||||||
|
5632, 632, -1536, // 393
|
||||||
|
2560, 1584, -1536, // 396
|
||||||
|
2560, 1584, 512, // 399
|
||||||
|
6178, 1581, 2560, // 402
|
||||||
|
5632, 1581, 512, // 405
|
||||||
|
4096, 594, 0, // 408
|
||||||
|
6656, 519, 512, // 411
|
||||||
|
6656, 519, -512, // 414
|
||||||
|
3584, 777, 1536, // 417
|
||||||
|
4608, 777, 1536, // 420
|
||||||
|
6178, 296, 2560, // 423
|
||||||
|
5632, 296, 2009, // 426
|
||||||
|
5632, 1581, 2009, // 429
|
||||||
|
5632, 2969, -512, // 432
|
||||||
|
5632, 2454, -1536, // 435
|
||||||
|
6656, 2969, -512, // 438
|
||||||
|
6422, 282, -3831, // 441
|
||||||
|
6979, 282, -2768, // 444
|
||||||
|
6422, 2156, -3831, // 447
|
||||||
|
6979, 2156, -2768, // 450
|
||||||
|
3910, 595, 4669, // 453
|
||||||
|
4365, 595, 5228, // 456
|
||||||
|
3910, 2807, 4669, // 459
|
||||||
|
4365, 2807, 5228, // 462
|
||||||
|
3646, 595, 5254, // 465
|
||||||
|
3646, 2807, 5254 // 468
|
||||||
|
}; // cityVertices
|
||||||
|
|
||||||
|
#define CITY_TRIANGLE_COUNT 197
|
||||||
|
const S3L_Index cityTriangleIndices[CITY_TRIANGLE_COUNT * 3] = {
|
||||||
|
0, 1, 6, // 0
|
||||||
|
2, 3, 5, // 3
|
||||||
|
5, 3, 4, // 6
|
||||||
|
11, 5, 46, // 9
|
||||||
|
0, 6, 11, // 12
|
||||||
|
1, 0, 7, // 15
|
||||||
|
8, 45, 9, // 18
|
||||||
|
8, 10, 45, // 21
|
||||||
|
46, 10, 11, // 24
|
||||||
|
5, 11, 6, // 27
|
||||||
|
0, 8, 7, // 30
|
||||||
|
8, 9, 7, // 33
|
||||||
|
5, 6, 2, // 36
|
||||||
|
11, 13, 14, // 39
|
||||||
|
10, 8, 12, // 42
|
||||||
|
3, 18, 4, // 45
|
||||||
|
9, 19, 7, // 48
|
||||||
|
9, 45, 81, // 51
|
||||||
|
1, 7, 19, // 54
|
||||||
|
22, 23, 24, // 57
|
||||||
|
19, 21, 1, // 60
|
||||||
|
1, 24, 6, // 63
|
||||||
|
25, 21, 19, // 66
|
||||||
|
2, 23, 17, // 69
|
||||||
|
24, 23, 6, // 72
|
||||||
|
2, 17, 3, // 75
|
||||||
|
25, 26, 27, // 78
|
||||||
|
6, 23, 2, // 81
|
||||||
|
29, 28, 30, // 84
|
||||||
|
28, 29, 5, // 87
|
||||||
|
5, 29, 46, // 90
|
||||||
|
46, 29, 16, // 93
|
||||||
|
29, 15, 16, // 96
|
||||||
|
3, 17, 18, // 99
|
||||||
|
1, 21, 24, // 102
|
||||||
|
11, 10, 13, // 105
|
||||||
|
10, 12, 13, // 108
|
||||||
|
9, 20, 19, // 111
|
||||||
|
9, 81, 20, // 114
|
||||||
|
25, 19, 26, // 117
|
||||||
|
34, 31, 32, // 120
|
||||||
|
34, 33, 31, // 123
|
||||||
|
35, 36, 51, // 126
|
||||||
|
38, 46, 39, // 129
|
||||||
|
40, 38, 39, // 132
|
||||||
|
42, 41, 43, // 135
|
||||||
|
43, 40, 42, // 138
|
||||||
|
41, 59, 43, // 141
|
||||||
|
45, 37, 44, // 144
|
||||||
|
10, 46, 37, // 147
|
||||||
|
47, 48, 50, // 150
|
||||||
|
49, 59, 50, // 153
|
||||||
|
50, 48, 49, // 156
|
||||||
|
56, 50, 55, // 159
|
||||||
|
35, 51, 56, // 162
|
||||||
|
36, 35, 52, // 165
|
||||||
|
53, 120, 54, // 168
|
||||||
|
53, 121, 120, // 171
|
||||||
|
55, 121, 56, // 174
|
||||||
|
59, 44, 43, // 177
|
||||||
|
59, 49, 44, // 180
|
||||||
|
50, 56, 51, // 183
|
||||||
|
35, 53, 52, // 186
|
||||||
|
53, 54, 52, // 189
|
||||||
|
50, 51, 47, // 192
|
||||||
|
40, 43, 38, // 195
|
||||||
|
38, 37, 46, // 198
|
||||||
|
37, 45, 10, // 201
|
||||||
|
44, 49, 45, // 204
|
||||||
|
57, 59, 41, // 207
|
||||||
|
41, 58, 57, // 210
|
||||||
|
44, 37, 60, // 213
|
||||||
|
37, 38, 61, // 216
|
||||||
|
62, 43, 44, // 219
|
||||||
|
43, 61, 38, // 222
|
||||||
|
62, 63, 77, // 225
|
||||||
|
56, 66, 67, // 228
|
||||||
|
56, 64, 35, // 231
|
||||||
|
121, 53, 65, // 234
|
||||||
|
35, 65, 53, // 237
|
||||||
|
40, 69, 42, // 240
|
||||||
|
99, 80, 41, // 243
|
||||||
|
68, 70, 76, // 246
|
||||||
|
39, 46, 72, // 249
|
||||||
|
39, 70, 68, // 252
|
||||||
|
39, 68, 40, // 255
|
||||||
|
60, 77, 63, // 258
|
||||||
|
41, 80, 58, // 261
|
||||||
|
79, 75, 59, // 264
|
||||||
|
58, 79, 57, // 267
|
||||||
|
97, 98, 96, // 270
|
||||||
|
45, 49, 83, // 273
|
||||||
|
48, 83, 49, // 276
|
||||||
|
54, 84, 52, // 279
|
||||||
|
54, 120, 139, // 282
|
||||||
|
36, 52, 84, // 285
|
||||||
|
87, 88, 89, // 288
|
||||||
|
84, 86, 36, // 291
|
||||||
|
36, 89, 51, // 294
|
||||||
|
90, 86, 84, // 297
|
||||||
|
47, 88, 82, // 300
|
||||||
|
89, 88, 51, // 303
|
||||||
|
47, 82, 48, // 306
|
||||||
|
90, 91, 92, // 309
|
||||||
|
51, 88, 47, // 312
|
||||||
|
88, 87, 93, // 315
|
||||||
|
77, 60, 61, // 318
|
||||||
|
61, 62, 77, // 321
|
||||||
|
75, 98, 97, // 324
|
||||||
|
97, 59, 75, // 327
|
||||||
|
57, 79, 59, // 330
|
||||||
|
59, 97, 50, // 333
|
||||||
|
95, 50, 97, // 336
|
||||||
|
96, 95, 97, // 339
|
||||||
|
95, 96, 50, // 342
|
||||||
|
50, 96, 55, // 345
|
||||||
|
55, 96, 74, // 348
|
||||||
|
96, 73, 74, // 351
|
||||||
|
98, 73, 96, // 354
|
||||||
|
42, 69, 41, // 357
|
||||||
|
69, 99, 41, // 360
|
||||||
|
40, 68, 69, // 363
|
||||||
|
68, 76, 71, // 366
|
||||||
|
45, 83, 81, // 369
|
||||||
|
48, 82, 83, // 372
|
||||||
|
39, 72, 70, // 375
|
||||||
|
36, 86, 89, // 378
|
||||||
|
88, 93, 94, // 381
|
||||||
|
56, 121, 66, // 384
|
||||||
|
56, 67, 64, // 387
|
||||||
|
121, 65, 66, // 390
|
||||||
|
35, 64, 65, // 393
|
||||||
|
99, 101, 80, // 396
|
||||||
|
58, 80, 79, // 399
|
||||||
|
79, 78, 75, // 402
|
||||||
|
99, 69, 100, // 405
|
||||||
|
44, 60, 63, // 408
|
||||||
|
37, 61, 60, // 411
|
||||||
|
62, 44, 63, // 414
|
||||||
|
43, 62, 61, // 417
|
||||||
|
54, 85, 84, // 420
|
||||||
|
54, 139, 85, // 423
|
||||||
|
90, 84, 91, // 426
|
||||||
|
102, 105, 103, // 429
|
||||||
|
102, 104, 105, // 432
|
||||||
|
109, 106, 107, // 435
|
||||||
|
111, 106, 108, // 438
|
||||||
|
109, 108, 106, // 441
|
||||||
|
111, 110, 106, // 444
|
||||||
|
113, 55, 114, // 447
|
||||||
|
115, 113, 114, // 450
|
||||||
|
118, 115, 117, // 453
|
||||||
|
116, 126, 118, // 456
|
||||||
|
120, 112, 119, // 459
|
||||||
|
121, 55, 112, // 462
|
||||||
|
122, 126, 123, // 465
|
||||||
|
126, 119, 118, // 468
|
||||||
|
126, 122, 119, // 471
|
||||||
|
115, 118, 113, // 474
|
||||||
|
113, 112, 55, // 477
|
||||||
|
112, 120, 121, // 480
|
||||||
|
119, 122, 120, // 483
|
||||||
|
124, 126, 116, // 486
|
||||||
|
116, 125, 124, // 489
|
||||||
|
119, 112, 127, // 492
|
||||||
|
112, 113, 128, // 495
|
||||||
|
115, 131, 117, // 498
|
||||||
|
144, 138, 116, // 501
|
||||||
|
114, 55, 133, // 504
|
||||||
|
114, 132, 130, // 507
|
||||||
|
114, 130, 115, // 510
|
||||||
|
127, 136, 129, // 513
|
||||||
|
116, 138, 125, // 516
|
||||||
|
125, 137, 124, // 519
|
||||||
|
142, 143, 141, // 522
|
||||||
|
120, 122, 140, // 525
|
||||||
|
136, 127, 128, // 528
|
||||||
|
135, 143, 142, // 531
|
||||||
|
142, 126, 135, // 534
|
||||||
|
126, 142, 123, // 537
|
||||||
|
143, 134, 141, // 540
|
||||||
|
117, 131, 116, // 543
|
||||||
|
131, 144, 116, // 546
|
||||||
|
115, 130, 131, // 549
|
||||||
|
120, 140, 139, // 552
|
||||||
|
114, 133, 132, // 555
|
||||||
|
144, 146, 138, // 558
|
||||||
|
125, 138, 137, // 561
|
||||||
|
144, 131, 145, // 564
|
||||||
|
119, 127, 129, // 567
|
||||||
|
112, 128, 127, // 570
|
||||||
|
147, 150, 148, // 573
|
||||||
|
147, 149, 150, // 576
|
||||||
|
154, 151, 152, // 579
|
||||||
|
156, 151, 153, // 582
|
||||||
|
154, 153, 151, // 585
|
||||||
|
156, 155, 151 // 588
|
||||||
|
}; // cityTriangleIndices
|
||||||
|
|
||||||
|
#define CITY_UV_COUNT 377
|
||||||
|
const S3L_Unit cityUVs[CITY_UV_COUNT * 2] = {
|
||||||
|
125, 125, // 0
|
||||||
|
1, 1, // 2
|
||||||
|
1, 249, // 4
|
||||||
|
2, 1, // 6
|
||||||
|
2, 126, // 8
|
||||||
|
126, 126, // 10
|
||||||
|
2, 262, // 12
|
||||||
|
126, 262, // 14
|
||||||
|
126, 386, // 16
|
||||||
|
126, 387, // 18
|
||||||
|
2, 511, // 20
|
||||||
|
2, 262, // 22
|
||||||
|
125, 249, // 24
|
||||||
|
1, 2, // 26
|
||||||
|
125, 126, // 28
|
||||||
|
1, 251, // 30
|
||||||
|
126, 125, // 32
|
||||||
|
2, 249, // 34
|
||||||
|
2, 1, // 36
|
||||||
|
126, 249, // 38
|
||||||
|
126, 262, // 40
|
||||||
|
126, 511, // 42
|
||||||
|
125, 251, // 44
|
||||||
|
126, 1, // 46
|
||||||
|
126, 1, // 48
|
||||||
|
258, 253, // 50
|
||||||
|
386, 1, // 52
|
||||||
|
258, 1, // 54
|
||||||
|
260, 253, // 56
|
||||||
|
405, 253, // 58
|
||||||
|
405, 2, // 60
|
||||||
|
253, 511, // 62
|
||||||
|
130, 386, // 64
|
||||||
|
130, 511, // 66
|
||||||
|
381, 508, // 68
|
||||||
|
256, 386, // 70
|
||||||
|
256, 508, // 72
|
||||||
|
130, 509, // 74
|
||||||
|
380, 509, // 76
|
||||||
|
380, 386, // 78
|
||||||
|
258, 253, // 80
|
||||||
|
510, 253, // 82
|
||||||
|
510, 114, // 84
|
||||||
|
354, 3, // 86
|
||||||
|
354, 115, // 88
|
||||||
|
510, 3, // 90
|
||||||
|
258, 3, // 92
|
||||||
|
507, 252, // 94
|
||||||
|
255, 2, // 96
|
||||||
|
255, 252, // 98
|
||||||
|
510, 3, // 100
|
||||||
|
376, 511, // 102
|
||||||
|
376, 386, // 104
|
||||||
|
253, 386, // 106
|
||||||
|
510, 254, // 108
|
||||||
|
258, 3, // 110
|
||||||
|
475, 112, // 112
|
||||||
|
475, 3, // 114
|
||||||
|
354, 254, // 116
|
||||||
|
245, 319, // 118
|
||||||
|
190, 264, // 120
|
||||||
|
135, 319, // 122
|
||||||
|
509, 209, // 124
|
||||||
|
443, 209, // 126
|
||||||
|
509, 253, // 128
|
||||||
|
259, 253, // 130
|
||||||
|
259, 16, // 132
|
||||||
|
443, 16, // 134
|
||||||
|
507, 2, // 136
|
||||||
|
386, 253, // 138
|
||||||
|
260, 2, // 140
|
||||||
|
381, 386, // 142
|
||||||
|
130, 386, // 144
|
||||||
|
258, 112, // 146
|
||||||
|
509, 352, // 148
|
||||||
|
261, 259, // 150
|
||||||
|
261, 352, // 152
|
||||||
|
509, 259, // 154
|
||||||
|
125, 125, // 156
|
||||||
|
1, 1, // 158
|
||||||
|
1, 249, // 160
|
||||||
|
127, 125, // 162
|
||||||
|
3, 249, // 164
|
||||||
|
3, 1, // 166
|
||||||
|
127, 1, // 168
|
||||||
|
1, 2, // 170
|
||||||
|
125, 2, // 172
|
||||||
|
125, 126, // 174
|
||||||
|
1, 250, // 176
|
||||||
|
125, 254, // 178
|
||||||
|
125, 129, // 180
|
||||||
|
1, 254, // 182
|
||||||
|
126, 128, // 184
|
||||||
|
1, 128, // 186
|
||||||
|
1, 252, // 188
|
||||||
|
130, 1, // 190
|
||||||
|
130, 125, // 192
|
||||||
|
254, 125, // 194
|
||||||
|
2, 1, // 196
|
||||||
|
2, 126, // 198
|
||||||
|
126, 126, // 200
|
||||||
|
126, 386, // 202
|
||||||
|
2, 510, // 204
|
||||||
|
2, 262, // 206
|
||||||
|
2, 262, // 208
|
||||||
|
126, 262, // 210
|
||||||
|
126, 386, // 212
|
||||||
|
126, 387, // 214
|
||||||
|
2, 511, // 216
|
||||||
|
2, 262, // 218
|
||||||
|
125, 249, // 220
|
||||||
|
1, 2, // 222
|
||||||
|
125, 126, // 224
|
||||||
|
1, 251, // 226
|
||||||
|
126, 125, // 228
|
||||||
|
2, 249, // 230
|
||||||
|
2, 1, // 232
|
||||||
|
126, 249, // 234
|
||||||
|
126, 262, // 236
|
||||||
|
1, 129, // 238
|
||||||
|
126, 510, // 240
|
||||||
|
126, 511, // 242
|
||||||
|
125, 251, // 244
|
||||||
|
126, 1, // 246
|
||||||
|
126, 1, // 248
|
||||||
|
125, 250, // 250
|
||||||
|
127, 249, // 252
|
||||||
|
254, 1, // 254
|
||||||
|
126, 252, // 256
|
||||||
|
253, 130, // 258
|
||||||
|
129, 130, // 260
|
||||||
|
129, 254, // 262
|
||||||
|
253, 254, // 264
|
||||||
|
387, 448, // 266
|
||||||
|
508, 448, // 268
|
||||||
|
508, 386, // 270
|
||||||
|
387, 446, // 272
|
||||||
|
508, 446, // 274
|
||||||
|
508, 388, // 276
|
||||||
|
385, 390, // 278
|
||||||
|
385, 446, // 280
|
||||||
|
510, 446, // 282
|
||||||
|
511, 447, // 284
|
||||||
|
386, 388, // 286
|
||||||
|
386, 447, // 288
|
||||||
|
254, 259, // 290
|
||||||
|
131, 259, // 292
|
||||||
|
192, 321, // 294
|
||||||
|
258, 253, // 296
|
||||||
|
386, 1, // 298
|
||||||
|
258, 1, // 300
|
||||||
|
510, 252, // 302
|
||||||
|
385, 2, // 304
|
||||||
|
385, 252, // 306
|
||||||
|
260, 253, // 308
|
||||||
|
405, 253, // 310
|
||||||
|
405, 2, // 312
|
||||||
|
510, 254, // 314
|
||||||
|
384, 0, // 316
|
||||||
|
384, 254, // 318
|
||||||
|
381, 511, // 320
|
||||||
|
131, 434, // 322
|
||||||
|
131, 511, // 324
|
||||||
|
510, 350, // 326
|
||||||
|
302, 261, // 328
|
||||||
|
259, 350, // 330
|
||||||
|
221, 324, // 332
|
||||||
|
221, 257, // 334
|
||||||
|
163, 257, // 336
|
||||||
|
259, 252, // 338
|
||||||
|
511, 252, // 340
|
||||||
|
511, 15, // 342
|
||||||
|
259, 352, // 344
|
||||||
|
404, 352, // 346
|
||||||
|
317, 258, // 348
|
||||||
|
259, 258, // 350
|
||||||
|
130, 259, // 352
|
||||||
|
191, 320, // 354
|
||||||
|
253, 259, // 356
|
||||||
|
259, 261, // 358
|
||||||
|
259, 176, // 360
|
||||||
|
414, 16, // 362
|
||||||
|
414, 254, // 364
|
||||||
|
253, 382, // 366
|
||||||
|
129, 327, // 368
|
||||||
|
129, 382, // 370
|
||||||
|
477, 210, // 372
|
||||||
|
477, 15, // 374
|
||||||
|
354, 210, // 376
|
||||||
|
222, 509, // 378
|
||||||
|
352, 509, // 380
|
||||||
|
352, 386, // 382
|
||||||
|
253, 511, // 384
|
||||||
|
130, 386, // 386
|
||||||
|
130, 511, // 388
|
||||||
|
381, 508, // 390
|
||||||
|
256, 386, // 392
|
||||||
|
256, 508, // 394
|
||||||
|
130, 509, // 396
|
||||||
|
380, 509, // 398
|
||||||
|
380, 386, // 400
|
||||||
|
258, 253, // 402
|
||||||
|
510, 253, // 404
|
||||||
|
510, 114, // 406
|
||||||
|
354, 3, // 408
|
||||||
|
354, 115, // 410
|
||||||
|
510, 3, // 412
|
||||||
|
258, 3, // 414
|
||||||
|
507, 252, // 416
|
||||||
|
255, 2, // 418
|
||||||
|
255, 252, // 420
|
||||||
|
510, 3, // 422
|
||||||
|
376, 511, // 424
|
||||||
|
376, 386, // 426
|
||||||
|
253, 386, // 428
|
||||||
|
510, 254, // 430
|
||||||
|
258, 3, // 432
|
||||||
|
475, 112, // 434
|
||||||
|
475, 3, // 436
|
||||||
|
354, 254, // 438
|
||||||
|
509, 117, // 440
|
||||||
|
509, 2, // 442
|
||||||
|
259, 2, // 444
|
||||||
|
191, 321, // 446
|
||||||
|
254, 258, // 448
|
||||||
|
128, 258, // 450
|
||||||
|
252, 259, // 452
|
||||||
|
131, 259, // 454
|
||||||
|
192, 320, // 456
|
||||||
|
260, 16, // 458
|
||||||
|
442, 16, // 460
|
||||||
|
442, 211, // 462
|
||||||
|
260, 255, // 464
|
||||||
|
259, 254, // 466
|
||||||
|
509, 255, // 468
|
||||||
|
509, 211, // 470
|
||||||
|
245, 319, // 472
|
||||||
|
190, 264, // 474
|
||||||
|
135, 319, // 476
|
||||||
|
509, 209, // 478
|
||||||
|
443, 209, // 480
|
||||||
|
509, 253, // 482
|
||||||
|
259, 253, // 484
|
||||||
|
259, 16, // 486
|
||||||
|
443, 16, // 488
|
||||||
|
354, 15, // 490
|
||||||
|
260, 350, // 492
|
||||||
|
312, 350, // 494
|
||||||
|
260, 264, // 496
|
||||||
|
509, 264, // 498
|
||||||
|
381, 434, // 500
|
||||||
|
163, 324, // 502
|
||||||
|
222, 386, // 504
|
||||||
|
259, 15, // 506
|
||||||
|
507, 2, // 508
|
||||||
|
259, 117, // 510
|
||||||
|
386, 253, // 512
|
||||||
|
510, 2, // 514
|
||||||
|
260, 2, // 516
|
||||||
|
510, 0, // 518
|
||||||
|
510, 261, // 520
|
||||||
|
253, 327, // 522
|
||||||
|
259, 16, // 524
|
||||||
|
466, 350, // 526
|
||||||
|
387, 386, // 528
|
||||||
|
387, 388, // 530
|
||||||
|
510, 390, // 532
|
||||||
|
511, 388, // 534
|
||||||
|
381, 386, // 536
|
||||||
|
130, 386, // 538
|
||||||
|
258, 112, // 540
|
||||||
|
509, 251, // 542
|
||||||
|
351, 1, // 544
|
||||||
|
351, 251, // 546
|
||||||
|
509, 1, // 548
|
||||||
|
509, 352, // 550
|
||||||
|
261, 259, // 552
|
||||||
|
261, 352, // 554
|
||||||
|
509, 260, // 556
|
||||||
|
261, 351, // 558
|
||||||
|
509, 351, // 560
|
||||||
|
509, 259, // 562
|
||||||
|
261, 260, // 564
|
||||||
|
127, 125, // 566
|
||||||
|
3, 249, // 568
|
||||||
|
3, 1, // 570
|
||||||
|
127, 1, // 572
|
||||||
|
125, 126, // 574
|
||||||
|
1, 250, // 576
|
||||||
|
1, 2, // 578
|
||||||
|
125, 254, // 580
|
||||||
|
125, 129, // 582
|
||||||
|
1, 254, // 584
|
||||||
|
126, 128, // 586
|
||||||
|
1, 128, // 588
|
||||||
|
1, 252, // 590
|
||||||
|
130, 1, // 592
|
||||||
|
130, 125, // 594
|
||||||
|
254, 125, // 596
|
||||||
|
126, 386, // 598
|
||||||
|
2, 510, // 600
|
||||||
|
2, 262, // 602
|
||||||
|
1, 129, // 604
|
||||||
|
126, 510, // 606
|
||||||
|
125, 250, // 608
|
||||||
|
127, 249, // 610
|
||||||
|
254, 1, // 612
|
||||||
|
126, 252, // 614
|
||||||
|
253, 130, // 616
|
||||||
|
129, 130, // 618
|
||||||
|
129, 254, // 620
|
||||||
|
253, 254, // 622
|
||||||
|
387, 448, // 624
|
||||||
|
508, 448, // 626
|
||||||
|
508, 386, // 628
|
||||||
|
387, 446, // 630
|
||||||
|
508, 446, // 632
|
||||||
|
508, 388, // 634
|
||||||
|
381, 511, // 636
|
||||||
|
131, 434, // 638
|
||||||
|
131, 511, // 640
|
||||||
|
510, 350, // 642
|
||||||
|
302, 261, // 644
|
||||||
|
259, 350, // 646
|
||||||
|
259, 252, // 648
|
||||||
|
511, 252, // 650
|
||||||
|
511, 15, // 652
|
||||||
|
259, 352, // 654
|
||||||
|
404, 352, // 656
|
||||||
|
317, 258, // 658
|
||||||
|
259, 258, // 660
|
||||||
|
130, 259, // 662
|
||||||
|
191, 320, // 664
|
||||||
|
253, 259, // 666
|
||||||
|
259, 261, // 668
|
||||||
|
253, 382, // 670
|
||||||
|
129, 327, // 672
|
||||||
|
129, 382, // 674
|
||||||
|
477, 210, // 676
|
||||||
|
477, 15, // 678
|
||||||
|
354, 210, // 680
|
||||||
|
222, 509, // 682
|
||||||
|
352, 509, // 684
|
||||||
|
352, 386, // 686
|
||||||
|
191, 321, // 688
|
||||||
|
254, 258, // 690
|
||||||
|
128, 258, // 692
|
||||||
|
260, 16, // 694
|
||||||
|
442, 16, // 696
|
||||||
|
442, 211, // 698
|
||||||
|
260, 255, // 700
|
||||||
|
509, 255, // 702
|
||||||
|
354, 15, // 704
|
||||||
|
260, 350, // 706
|
||||||
|
312, 350, // 708
|
||||||
|
260, 264, // 710
|
||||||
|
509, 264, // 712
|
||||||
|
381, 434, // 714
|
||||||
|
222, 386, // 716
|
||||||
|
259, 15, // 718
|
||||||
|
510, 261, // 720
|
||||||
|
253, 327, // 722
|
||||||
|
466, 350, // 724
|
||||||
|
387, 386, // 726
|
||||||
|
387, 388, // 728
|
||||||
|
509, 251, // 730
|
||||||
|
351, 1, // 732
|
||||||
|
351, 251, // 734
|
||||||
|
509, 1, // 736
|
||||||
|
509, 352, // 738
|
||||||
|
261, 259, // 740
|
||||||
|
261, 352, // 742
|
||||||
|
509, 260, // 744
|
||||||
|
261, 351, // 746
|
||||||
|
509, 351, // 748
|
||||||
|
509, 259, // 750
|
||||||
|
261, 260 // 752
|
||||||
|
}; // cityUVs
|
||||||
|
|
||||||
|
#define CITY_UV_INDEX_COUNT 197
|
||||||
|
const S3L_Index cityUVIndices[CITY_UV_INDEX_COUNT * 3] = {
|
||||||
|
0, 1, 2, // 0
|
||||||
|
3, 4, 5, // 3
|
||||||
|
6, 7, 8, // 6
|
||||||
|
9, 10, 11, // 9
|
||||||
|
0, 2, 12, // 12
|
||||||
|
13, 14, 15, // 15
|
||||||
|
16, 17, 18, // 18
|
||||||
|
16, 19, 17, // 21
|
||||||
|
11, 20, 9, // 24
|
||||||
|
10, 9, 21, // 27
|
||||||
|
14, 22, 15, // 30
|
||||||
|
16, 18, 23, // 33
|
||||||
|
5, 24, 3, // 36
|
||||||
|
25, 26, 27, // 39
|
||||||
|
28, 29, 30, // 42
|
||||||
|
31, 32, 33, // 45
|
||||||
|
34, 35, 36, // 48
|
||||||
|
37, 38, 39, // 51
|
||||||
|
40, 41, 42, // 54
|
||||||
|
43, 44, 45, // 57
|
||||||
|
42, 46, 40, // 60
|
||||||
|
47, 48, 49, // 63
|
||||||
|
50, 46, 42, // 66
|
||||||
|
51, 52, 53, // 69
|
||||||
|
45, 44, 54, // 72
|
||||||
|
51, 53, 31, // 75
|
||||||
|
55, 56, 57, // 78
|
||||||
|
54, 44, 58, // 81
|
||||||
|
59, 60, 61, // 84
|
||||||
|
62, 63, 64, // 87
|
||||||
|
64, 63, 65, // 90
|
||||||
|
65, 63, 66, // 93
|
||||||
|
63, 67, 66, // 96
|
||||||
|
31, 53, 32, // 99
|
||||||
|
47, 68, 48, // 102
|
||||||
|
25, 69, 26, // 105
|
||||||
|
28, 30, 70, // 108
|
||||||
|
34, 71, 35, // 111
|
||||||
|
37, 39, 72, // 114
|
||||||
|
55, 73, 56, // 117
|
||||||
|
74, 75, 76, // 120
|
||||||
|
74, 77, 75, // 123
|
||||||
|
78, 79, 80, // 126
|
||||||
|
81, 82, 83, // 129
|
||||||
|
84, 81, 83, // 132
|
||||||
|
85, 86, 87, // 135
|
||||||
|
87, 88, 85, // 138
|
||||||
|
89, 90, 91, // 141
|
||||||
|
92, 93, 94, // 144
|
||||||
|
95, 96, 97, // 147
|
||||||
|
98, 99, 100, // 150
|
||||||
|
101, 102, 103, // 153
|
||||||
|
104, 105, 106, // 156
|
||||||
|
107, 108, 109, // 159
|
||||||
|
78, 80, 110, // 162
|
||||||
|
111, 112, 113, // 165
|
||||||
|
114, 115, 116, // 168
|
||||||
|
114, 117, 115, // 171
|
||||||
|
109, 118, 107, // 174
|
||||||
|
90, 119, 91, // 177
|
||||||
|
102, 101, 120, // 180
|
||||||
|
108, 107, 121, // 183
|
||||||
|
112, 122, 113, // 186
|
||||||
|
114, 116, 123, // 189
|
||||||
|
100, 124, 98, // 192
|
||||||
|
88, 87, 125, // 195
|
||||||
|
81, 126, 82, // 198
|
||||||
|
97, 127, 95, // 201
|
||||||
|
94, 128, 92, // 204
|
||||||
|
129, 130, 131, // 207
|
||||||
|
131, 132, 129, // 210
|
||||||
|
133, 134, 135, // 213
|
||||||
|
136, 137, 138, // 216
|
||||||
|
139, 140, 141, // 219
|
||||||
|
142, 143, 144, // 222
|
||||||
|
145, 146, 147, // 225
|
||||||
|
148, 149, 150, // 228
|
||||||
|
151, 152, 153, // 231
|
||||||
|
154, 155, 156, // 234
|
||||||
|
157, 158, 159, // 237
|
||||||
|
160, 161, 162, // 240
|
||||||
|
163, 164, 165, // 243
|
||||||
|
166, 167, 168, // 246
|
||||||
|
169, 170, 171, // 249
|
||||||
|
172, 173, 174, // 252
|
||||||
|
172, 174, 175, // 255
|
||||||
|
176, 177, 178, // 258
|
||||||
|
165, 164, 179, // 261
|
||||||
|
180, 181, 182, // 264
|
||||||
|
183, 184, 185, // 267
|
||||||
|
186, 187, 188, // 270
|
||||||
|
189, 190, 191, // 273
|
||||||
|
192, 193, 194, // 276
|
||||||
|
195, 196, 197, // 279
|
||||||
|
198, 199, 200, // 282
|
||||||
|
201, 202, 203, // 285
|
||||||
|
204, 205, 206, // 288
|
||||||
|
203, 207, 201, // 291
|
||||||
|
208, 209, 210, // 294
|
||||||
|
211, 207, 203, // 297
|
||||||
|
212, 213, 214, // 300
|
||||||
|
206, 205, 215, // 303
|
||||||
|
212, 214, 192, // 306
|
||||||
|
216, 217, 218, // 309
|
||||||
|
215, 205, 219, // 312
|
||||||
|
220, 221, 222, // 315
|
||||||
|
223, 224, 225, // 318
|
||||||
|
226, 227, 228, // 321
|
||||||
|
229, 230, 231, // 324
|
||||||
|
231, 232, 229, // 327
|
||||||
|
233, 180, 182, // 330
|
||||||
|
232, 231, 234, // 333
|
||||||
|
235, 234, 231, // 336
|
||||||
|
236, 237, 238, // 339
|
||||||
|
239, 240, 241, // 342
|
||||||
|
241, 240, 242, // 345
|
||||||
|
242, 240, 243, // 348
|
||||||
|
240, 244, 243, // 351
|
||||||
|
187, 245, 188, // 354
|
||||||
|
246, 247, 248, // 357
|
||||||
|
247, 249, 248, // 360
|
||||||
|
160, 250, 161, // 363
|
||||||
|
166, 168, 251, // 366
|
||||||
|
189, 191, 252, // 369
|
||||||
|
192, 214, 193, // 372
|
||||||
|
169, 171, 253, // 375
|
||||||
|
208, 254, 209, // 378
|
||||||
|
220, 222, 255, // 381
|
||||||
|
148, 256, 149, // 384
|
||||||
|
151, 257, 152, // 387
|
||||||
|
154, 156, 258, // 390
|
||||||
|
157, 259, 158, // 393
|
||||||
|
163, 260, 164, // 396
|
||||||
|
183, 261, 184, // 399
|
||||||
|
180, 262, 181, // 402
|
||||||
|
249, 247, 263, // 405
|
||||||
|
133, 135, 264, // 408
|
||||||
|
136, 138, 265, // 411
|
||||||
|
139, 141, 266, // 414
|
||||||
|
142, 267, 143, // 417
|
||||||
|
195, 268, 196, // 420
|
||||||
|
198, 200, 269, // 423
|
||||||
|
216, 270, 217, // 426
|
||||||
|
271, 272, 273, // 429
|
||||||
|
271, 274, 272, // 432
|
||||||
|
275, 276, 277, // 435
|
||||||
|
278, 279, 280, // 438
|
||||||
|
275, 281, 276, // 441
|
||||||
|
278, 282, 279, // 444
|
||||||
|
283, 284, 285, // 447
|
||||||
|
286, 283, 285, // 450
|
||||||
|
287, 288, 289, // 453
|
||||||
|
290, 291, 292, // 456
|
||||||
|
293, 294, 295, // 459
|
||||||
|
296, 297, 298, // 462
|
||||||
|
299, 300, 301, // 465
|
||||||
|
291, 302, 292, // 468
|
||||||
|
300, 299, 303, // 471
|
||||||
|
288, 287, 304, // 474
|
||||||
|
283, 305, 284, // 477
|
||||||
|
298, 306, 296, // 480
|
||||||
|
295, 307, 293, // 483
|
||||||
|
308, 309, 310, // 486
|
||||||
|
310, 311, 308, // 489
|
||||||
|
312, 313, 314, // 492
|
||||||
|
315, 316, 317, // 495
|
||||||
|
318, 319, 320, // 498
|
||||||
|
321, 322, 323, // 501
|
||||||
|
324, 325, 326, // 504
|
||||||
|
327, 328, 329, // 507
|
||||||
|
327, 329, 330, // 510
|
||||||
|
331, 332, 333, // 513
|
||||||
|
323, 322, 334, // 516
|
||||||
|
335, 336, 337, // 519
|
||||||
|
338, 339, 340, // 522
|
||||||
|
341, 342, 343, // 525
|
||||||
|
344, 345, 346, // 528
|
||||||
|
347, 348, 349, // 531
|
||||||
|
349, 350, 347, // 534
|
||||||
|
350, 349, 351, // 537
|
||||||
|
339, 352, 340, // 540
|
||||||
|
353, 354, 355, // 543
|
||||||
|
354, 356, 355, // 546
|
||||||
|
318, 357, 319, // 549
|
||||||
|
341, 343, 358, // 552
|
||||||
|
324, 326, 359, // 555
|
||||||
|
321, 360, 322, // 558
|
||||||
|
335, 361, 336, // 561
|
||||||
|
356, 354, 362, // 564
|
||||||
|
312, 314, 363, // 567
|
||||||
|
315, 317, 364, // 570
|
||||||
|
365, 366, 367, // 573
|
||||||
|
365, 368, 366, // 576
|
||||||
|
369, 370, 371, // 579
|
||||||
|
372, 373, 374, // 582
|
||||||
|
369, 375, 370, // 585
|
||||||
|
372, 376, 373 // 588
|
||||||
|
}; // cityUVIndices
|
||||||
|
|
||||||
|
S3L_Model3D cityModel =
|
||||||
|
{
|
||||||
|
.vertices = cityVertices,
|
||||||
|
.vertexCount = CITY_VERTEX_COUNT,
|
||||||
|
.triangles = cityTriangleIndices,
|
||||||
|
.triangleCount = CITY_TRIANGLE_COUNT
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // guard
|
8942
programs/cityTexture.h
Normal file
8942
programs/cityTexture.h
Normal file
File diff suppressed because it is too large
Load diff
226
programs/demo.c
Normal file
226
programs/demo.c
Normal file
|
@ -0,0 +1,226 @@
|
||||||
|
/*
|
||||||
|
author: Miloslav Ciz
|
||||||
|
license: CC0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <SDL2/SDL.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#define S3L_FLAT 0
|
||||||
|
#define S3L_STRICT_NEAR_CULLING 0
|
||||||
|
#define S3L_PERSPECTIVE_CORRECTION 1
|
||||||
|
#define S3L_SORT 2
|
||||||
|
#define S3L_STENCIL_BUFFER 1
|
||||||
|
#define S3L_Z_BUFFER 0
|
||||||
|
|
||||||
|
#define S3L_PIXEL_FUNCTION drawPixel
|
||||||
|
|
||||||
|
#define S3L_RESOLUTION_X 800
|
||||||
|
#define S3L_RESOLUTION_Y 600
|
||||||
|
|
||||||
|
#include "../small3dlib.h"
|
||||||
|
|
||||||
|
#include "cityModel.h"
|
||||||
|
#include "cityTexture.h"
|
||||||
|
|
||||||
|
#define TEXTURE_W 256
|
||||||
|
#define TEXTURE_H 256
|
||||||
|
|
||||||
|
S3L_Model3D model;
|
||||||
|
|
||||||
|
S3L_Scene scene;
|
||||||
|
|
||||||
|
uint32_t pixels[S3L_RESOLUTION_X * S3L_RESOLUTION_Y];
|
||||||
|
|
||||||
|
uint32_t frame = 0;
|
||||||
|
|
||||||
|
void clearScreen()
|
||||||
|
{
|
||||||
|
memset(pixels,255,S3L_RESOLUTION_X * S3L_RESOLUTION_Y * sizeof(uint32_t));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void setPixel(int x, int y, uint8_t red, uint8_t green, uint8_t blue)
|
||||||
|
{
|
||||||
|
if (x < 0 || x >= S3L_RESOLUTION_X || y < 0 || y >= S3L_RESOLUTION_Y)
|
||||||
|
return;
|
||||||
|
|
||||||
|
uint32_t r = red & 0x000000FF;
|
||||||
|
r = r << 24;
|
||||||
|
|
||||||
|
uint32_t g = green & 0x000000FF;
|
||||||
|
g = g << 16;
|
||||||
|
|
||||||
|
uint32_t b = blue & 0x000000FF;
|
||||||
|
b = b << 8;
|
||||||
|
|
||||||
|
pixels[y * S3L_RESOLUTION_X + x] = r | g | b;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sampleTexture(uint8_t *texture, int32_t u, int32_t v, uint8_t *r, uint8_t *g, uint8_t *b)
|
||||||
|
{
|
||||||
|
u = S3L_clamp(u,0,TEXTURE_W - 1);
|
||||||
|
v = S3L_clamp(v,0,TEXTURE_H - 1);
|
||||||
|
|
||||||
|
int32_t index = (v * TEXTURE_W + u) * 3;
|
||||||
|
|
||||||
|
*r = texture[index];
|
||||||
|
index++;
|
||||||
|
*g = texture[index];
|
||||||
|
index++;
|
||||||
|
*b = texture[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
int16_t previousTriangle = -1;
|
||||||
|
S3L_Unit uv0[2], uv1[2], uv2[2];
|
||||||
|
|
||||||
|
void drawPixel(S3L_PixelInfo *p)
|
||||||
|
{
|
||||||
|
if (p->triangleIndex != previousTriangle)
|
||||||
|
{
|
||||||
|
int16_t index;
|
||||||
|
|
||||||
|
index = p->triangleIndex * 3;
|
||||||
|
|
||||||
|
int16_t i0 = cityUVIndices[index];
|
||||||
|
int16_t i1 = cityUVIndices[index + 1];
|
||||||
|
int16_t i2 = cityUVIndices[index + 2];
|
||||||
|
|
||||||
|
index = i0 * 2;
|
||||||
|
|
||||||
|
uv0[0] = cityUVs[index];
|
||||||
|
uv0[1] = cityUVs[index + 1];
|
||||||
|
|
||||||
|
index = i1 * 2;
|
||||||
|
|
||||||
|
uv1[0] = cityUVs[index];
|
||||||
|
uv1[1] = cityUVs[index + 1];
|
||||||
|
|
||||||
|
index = i2 * 2;
|
||||||
|
|
||||||
|
uv2[0] = cityUVs[index];
|
||||||
|
uv2[1] = cityUVs[index + 1];
|
||||||
|
|
||||||
|
previousTriangle = p->triangleIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t r,g,b;
|
||||||
|
|
||||||
|
S3L_Unit uv[2];
|
||||||
|
|
||||||
|
uv[0] = S3L_interpolateBarycentric(uv0[0],uv1[0],uv2[0],
|
||||||
|
p->barycentric[0], p->barycentric[1], p->barycentric[2]);
|
||||||
|
|
||||||
|
uv[1] = S3L_interpolateBarycentric(uv0[1],uv1[1],uv2[1],
|
||||||
|
p->barycentric[0], p->barycentric[1], p->barycentric[2]);
|
||||||
|
|
||||||
|
sampleTexture(cityTexture,uv[0] / 2,uv[1] / 2,&r,&g,&b);
|
||||||
|
|
||||||
|
setPixel(p->x,p->y,r,g,b);
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw()
|
||||||
|
{
|
||||||
|
S3L_newFrame();
|
||||||
|
|
||||||
|
clearScreen();
|
||||||
|
|
||||||
|
S3L_drawScene(scene);
|
||||||
|
}
|
||||||
|
|
||||||
|
int16_t fps = 0;
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
SDL_Window *window = SDL_CreateWindow("model viewer", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, S3L_RESOLUTION_X, S3L_RESOLUTION_Y, SDL_WINDOW_SHOWN);
|
||||||
|
SDL_Renderer *renderer = SDL_CreateRenderer(window,-1,0);
|
||||||
|
SDL_Texture *textureSDL = SDL_CreateTexture(renderer,SDL_PIXELFORMAT_RGBX8888, SDL_TEXTUREACCESS_STATIC, S3L_RESOLUTION_X, S3L_RESOLUTION_Y);
|
||||||
|
SDL_Surface *screenSurface = SDL_GetWindowSurface(window);
|
||||||
|
SDL_Event event;
|
||||||
|
|
||||||
|
S3L_initModel3D(cityVertices,CITY_VERTEX_COUNT,cityTriangleIndices,CITY_TRIANGLE_COUNT,&model);
|
||||||
|
|
||||||
|
S3L_initScene(&model,1,&scene);
|
||||||
|
|
||||||
|
scene.camera.transform.translation.z = -S3L_FRACTIONS_PER_UNIT * 8;
|
||||||
|
|
||||||
|
int running = 1;
|
||||||
|
|
||||||
|
clock_t nextPrintT;
|
||||||
|
|
||||||
|
nextPrintT = clock();
|
||||||
|
|
||||||
|
while (running)
|
||||||
|
{
|
||||||
|
clock_t frameStartT = clock();
|
||||||
|
|
||||||
|
draw();
|
||||||
|
|
||||||
|
fps++;
|
||||||
|
|
||||||
|
SDL_UpdateTexture(textureSDL,NULL,pixels,S3L_RESOLUTION_X * sizeof(uint32_t));
|
||||||
|
|
||||||
|
clock_t nowT = clock();
|
||||||
|
|
||||||
|
double timeDiff = ((double) (nowT - nextPrintT)) / CLOCKS_PER_SEC;
|
||||||
|
double frameDiff = ((double) (nowT - frameStartT)) / CLOCKS_PER_SEC;
|
||||||
|
|
||||||
|
if (timeDiff >= 1.0)
|
||||||
|
{
|
||||||
|
nextPrintT = nowT;
|
||||||
|
printf("FPS: %d\n",fps);
|
||||||
|
fps = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (SDL_PollEvent(&event))
|
||||||
|
{
|
||||||
|
if (event.type == SDL_QUIT)
|
||||||
|
running = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t *state = SDL_GetKeyboardState(NULL);
|
||||||
|
|
||||||
|
int16_t rotationStep = S3L_max(1,300 * frameDiff);
|
||||||
|
int16_t zoomStep = S3L_max(1,3000 * frameDiff);
|
||||||
|
int16_t fovStep = S3L_max(1,1000 * frameDiff);
|
||||||
|
|
||||||
|
if (!state[SDL_SCANCODE_LCTRL])
|
||||||
|
{
|
||||||
|
if (state[SDL_SCANCODE_LEFT])
|
||||||
|
model.transform.rotation.y += rotationStep;
|
||||||
|
else if (state[SDL_SCANCODE_RIGHT])
|
||||||
|
model.transform.rotation.y -= rotationStep;
|
||||||
|
|
||||||
|
if (state[SDL_SCANCODE_DOWN])
|
||||||
|
model.transform.rotation.x += rotationStep;
|
||||||
|
else if (state[SDL_SCANCODE_UP])
|
||||||
|
model.transform.rotation.x -= rotationStep;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (state[SDL_SCANCODE_LEFT])
|
||||||
|
scene.camera.focalLength =
|
||||||
|
S3L_min(S3L_FRACTIONS_PER_UNIT * 5,scene.camera.focalLength + fovStep);
|
||||||
|
else if (state[SDL_SCANCODE_RIGHT])
|
||||||
|
scene.camera.focalLength =
|
||||||
|
S3L_max(S3L_FRACTIONS_PER_UNIT / 2,scene.camera.focalLength - fovStep);
|
||||||
|
|
||||||
|
if (state[SDL_SCANCODE_UP])
|
||||||
|
scene.camera.transform.translation.z =
|
||||||
|
S3L_min(S3L_FRACTIONS_PER_UNIT, scene.camera.transform.translation.z + zoomStep);
|
||||||
|
else if (state[SDL_SCANCODE_DOWN])
|
||||||
|
scene.camera.transform.translation.z =
|
||||||
|
S3L_max(-S3L_FRACTIONS_PER_UNIT * 16, scene.camera.transform.translation.z - zoomStep);
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_RenderClear(renderer);
|
||||||
|
SDL_RenderCopy(renderer,textureSDL,NULL,NULL);
|
||||||
|
SDL_RenderPresent(renderer);
|
||||||
|
|
||||||
|
frame++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in a new issue