Mercurial > hg > forks > gldragon
annotate dmmodel.h @ 22:03b86b9c2f29
Add copyright blurbs and licenses.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 22 Nov 2019 05:29:02 +0200 |
parents | 1404dfcee7b8 |
children | 2403030a0352 |
rev | line source |
---|---|
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1 // |
22
03b86b9c2f29
Add copyright blurbs and licenses.
Matti Hamalainen <ccr@tnsp.org>
parents:
21
diff
changeset
|
2 // GLDragon - OpenGL PLY model viewer / simple benchmark |
03b86b9c2f29
Add copyright blurbs and licenses.
Matti Hamalainen <ccr@tnsp.org>
parents:
21
diff
changeset
|
3 // -- Scene and model handling + PLY file parsing |
03b86b9c2f29
Add copyright blurbs and licenses.
Matti Hamalainen <ccr@tnsp.org>
parents:
21
diff
changeset
|
4 // Programmed and designed by Matti 'ccr' Hämäläinen <ccr@tnsp.org> |
03b86b9c2f29
Add copyright blurbs and licenses.
Matti Hamalainen <ccr@tnsp.org>
parents:
21
diff
changeset
|
5 // (C) Copyright 2019 Tecnic Software productions (TNSP) |
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
6 // |
22
03b86b9c2f29
Add copyright blurbs and licenses.
Matti Hamalainen <ccr@tnsp.org>
parents:
21
diff
changeset
|
7 // See file "COPYING" for license information. |
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
8 // |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
9 #ifndef DMMODEL_H |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
10 #define DMMODEL_H 1 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
11 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
12 #include "dmutil.h" |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
13 #include <cstdint> |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
14 #include <fstream> |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
15 #include <unordered_map> |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
16 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
17 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
18 #define PLY_PROP_VERTEX_INDICES "vertex_indices" |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
19 #define PLY_ELEM_FACE "face" |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
20 #define PLY_ELEM_VERTEX "vertex" |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
21 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
22 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
23 enum DMPLYFormat |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
24 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
25 PLY_FMT_UNKNOWN, |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
26 PLY_FMT_ASCII, |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
27 PLY_FMT_BIN_LE, |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
28 PLY_FMT_BIN_BE |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
29 }; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
30 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
31 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
32 enum DMPLYPropType |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
33 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
34 PLY_TYPE_NONE, |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
35 PLY_TYPE_LIST, |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
36 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
37 PLY_TYPE_UINT8, |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
38 PLY_TYPE_INT8, |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
39 PLY_TYPE_INT16, |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
40 PLY_TYPE_UINT16, |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
41 PLY_TYPE_INT32, |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
42 PLY_TYPE_UINT32, |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
43 PLY_TYPE_FLOAT, |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
44 PLY_TYPE_DOUBLE |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
45 }; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
46 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
47 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
48 /* Structures |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
49 */ |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
50 union DMPLYPropValue |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
51 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
52 double v_double; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
53 float v_float; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
54 unsigned int v_uint; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
55 int v_int; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
56 }; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
57 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
58 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
59 struct DMPLYFileProperty |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
60 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
61 std::string name; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
62 DMPLYPropType |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
63 type, |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
64 list_num_type, |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
65 list_values_type; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
66 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
67 DMPLYPropValue value, list_num_value; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
68 std::vector<DMPLYPropValue> list_values; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
69 }; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
70 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
71 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
72 struct DMPLYFileElement |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
73 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
74 int value; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
75 std::string name; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
76 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
77 std::unordered_map<std::string, DMPLYFileProperty> prop_map; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
78 std::vector<DMPLYFileProperty *> properties; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
79 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
80 DMPLYFileProperty *checkProp(const std::string &prop) |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
81 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
82 if (prop_map.count(prop)) |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
83 return &prop_map[prop]; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
84 else |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
85 return 0; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
86 } |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
87 }; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
88 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
89 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
90 struct DMTextFileInfo |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
91 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
92 int nline, state; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
93 std::string filename; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
94 std::string line; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
95 std::ifstream file; |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
96 std::string *key; |
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
97 }; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
98 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
99 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
100 struct DMPLYFileInfo : DMTextFileInfo |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
101 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
102 DMPLYFormat format; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
103 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
104 std::unordered_map<std::string, DMPLYFileElement> elem_map; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
105 std::vector<DMPLYFileElement *> elements; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
106 DMPLYFileElement *element; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
107 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
108 DMPLYFileInfo() |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
109 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
110 element = 0; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
111 format = PLY_FMT_UNKNOWN; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
112 } |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
113 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
114 DMPLYFileElement *checkElem(const std::string &elem) |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
115 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
116 if (elem_map.count(elem)) |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
117 return &elem_map[elem]; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
118 else |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
119 return 0; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
120 } |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
121 }; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
122 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
123 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
124 struct DMColor |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
125 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
126 int r, g, b, alpha; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
127 }; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
128 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
129 |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
130 struct DMVector3 |
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
131 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
132 float x, y, z; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
133 }; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
134 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
135 |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
136 struct DMVector4 |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
137 { |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
138 float x, y, z, w; |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
139 }; |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
140 |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
141 |
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
142 struct DMModel |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
143 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
144 int nvertices, nfaces; |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
145 std::vector<DMVector3> vertices, normals; |
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
146 std::vector<unsigned int> faces; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
147 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
148 DMColor color; |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
149 DMVector3 translate, scale, rotate; |
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
150 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
151 unsigned int id_prog, id_fs, id_vs; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
152 |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
153 std::string |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
154 modelFile, |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
155 fragShaderFile, vertShaderFile, |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
156 fragShaderStr, vertShaderStr; |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
157 |
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
158 bool loadFromPLY(const std::string &filename); |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
159 bool loadFromPLY(const std::string &filename, DMPLYFileInfo &info); |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
160 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
161 void printInfo() |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
162 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
163 printf( |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
164 "MODEL: scale <%1.5f, %1.5f, %1.5f>\n" |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
165 "MODEL: translate <%1.5f, %1.5f, %1.5f>\n" |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
166 "MODEL: rotate <%1.5f, %1.5f, %1.5f>\n" |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
167 , |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
168 scale.x, scale.y, scale.z, |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
169 translate.x, translate.y, translate.z, |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
170 rotate.x, rotate.y, rotate.z); |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
171 } |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
172 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
173 DMModel() |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
174 { |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
175 nfaces = nvertices = 0; |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
176 |
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
177 translate.x = translate.y = translate.z = 0; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
178 rotate.x = rotate.y = rotate.z = 0; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
179 scale.x = scale.y = scale.z = 1; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
180 } |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
181 }; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
182 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
183 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
184 struct DMLight |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
185 { |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
186 DMVector3 pos, pointAt; |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
187 DMVector4 ambient, diffuse, specular; |
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
188 }; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
189 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
190 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
191 struct DMCamera |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
192 { |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
193 DMVector3 pos, pointAt; |
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
194 }; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
195 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
196 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
197 struct DMSimpleScene |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
198 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
199 DMCamera camera; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
200 std::vector<DMLight> lights; |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
201 std::vector<DMModel> models; |
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
202 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
203 bool loadInfo(const std::string &filename); |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
204 }; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
205 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
206 #endif |