Mercurial > hg > forks > gldragon
annotate dmmodel.h @ 32:1215fdd0a8ab
Add support for specifying specular and shininess values per model.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 22 Nov 2019 22:57:14 +0200 |
parents | 2403030a0352 |
children | d640f2a34031 |
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 |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
124 struct DMVector3 |
19
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 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
|
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 |
25
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
130 union DMVector4 |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
131 { |
25
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
132 struct { float x, y, z, w; } p; |
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
133 float values[4]; |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
134 }; |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
135 |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
136 |
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
137 struct DMModel |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
138 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
139 int nvertices, nfaces; |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
140 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
|
141 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
|
142 |
32
1215fdd0a8ab
Add support for specifying specular and shininess values per model.
Matti Hamalainen <ccr@tnsp.org>
parents:
25
diff
changeset
|
143 DMVector4 ambient, diffuse, specular; |
1215fdd0a8ab
Add support for specifying specular and shininess values per model.
Matti Hamalainen <ccr@tnsp.org>
parents:
25
diff
changeset
|
144 int shininess; |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
145 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
|
146 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
147 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
|
148 |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
149 std::string |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
150 modelFile, |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
151 fragShaderFile, vertShaderFile, |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
152 fragShaderStr, vertShaderStr; |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
153 |
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
154 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
|
155 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
|
156 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
157 void printInfo() |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
158 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
159 printf( |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
160 "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
|
161 "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
|
162 "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
|
163 , |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
164 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
|
165 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
|
166 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
|
167 } |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
168 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
169 DMModel() |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
170 { |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
171 nfaces = nvertices = 0; |
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
172 |
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
173 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
|
174 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
|
175 scale.x = scale.y = scale.z = 1; |
32
1215fdd0a8ab
Add support for specifying specular and shininess values per model.
Matti Hamalainen <ccr@tnsp.org>
parents:
25
diff
changeset
|
176 |
1215fdd0a8ab
Add support for specifying specular and shininess values per model.
Matti Hamalainen <ccr@tnsp.org>
parents:
25
diff
changeset
|
177 specular.p.x = specular.p.y = specular.p.z = 0.8f; specular.p.w = 1.0f; |
1215fdd0a8ab
Add support for specifying specular and shininess values per model.
Matti Hamalainen <ccr@tnsp.org>
parents:
25
diff
changeset
|
178 shininess = 96; |
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
179 } |
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 struct DMLight |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
184 { |
25
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
185 DMVector4 |
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
186 ambient, diffuse, specular, |
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
187 position, pointAt; |
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
188 |
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
189 DMLight() |
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
190 { |
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
191 ambient.p.x = ambient.p.y = ambient.p.z = 0.2f; ambient.p.w = 1.0f; |
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
192 diffuse.p.x = diffuse.p.y = diffuse.p.z = 0.8f; diffuse.p.w = 1.0f; |
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
193 specular.p.x = specular.p.y = specular.p.z = 0.5f; specular.p.w = 1.0f; |
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
194 |
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
195 position.p.x = 10.0f; |
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
196 position.p.y = 10.0f; |
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
197 position.p.z = 0.0f; |
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
198 } |
19
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
199 }; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
200 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
201 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
202 struct DMCamera |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
203 { |
25
2403030a0352
"Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents:
22
diff
changeset
|
204 DMVector4 position, pointAt; |
19
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 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
207 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
208 struct DMSimpleScene |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
209 { |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
210 DMCamera camera; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
211 std::vector<DMLight> lights; |
21
1404dfcee7b8
More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents:
19
diff
changeset
|
212 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
|
213 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
214 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
|
215 }; |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
216 |
a329f0216491
Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
217 #endif |