Add osgemscripten example
This commit is contained in:
parent
0b5f45289d
commit
f992ec1440
60
examples/osgemscripten/CMakeLists.txt
Normal file
60
examples/osgemscripten/CMakeLists.txt
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.0 FATAL_ERROR)
|
||||||
|
|
||||||
|
# Path to OpenSceneGraph
|
||||||
|
SET(OSG_DIR "${CMAKE_SOURCE_DIR}/../..")
|
||||||
|
|
||||||
|
# Specify critical OpenSceneGraph build variables.
|
||||||
|
SET(BUILD_OSG_APPLICATIONS NO CACHE BOOL "Do not build applications")
|
||||||
|
SET(EGL_LIBRARY "GL" CACHE STRING "Suppress linkage error")
|
||||||
|
SET(OSG_GL1_AVAILABLE OFF CACHE BOOL "Unavailable under Emscripten")
|
||||||
|
SET(OSG_GL2_AVAILABLE OFF CACHE BOOL "Unavailable under Emscripten")
|
||||||
|
SET(OSG_GLES2_AVAILABLE ON CACHE BOOL "GLES2 is what Emscripten uses")
|
||||||
|
SET(DYNAMIC_OPENTHREADS OFF CACHE BOOL "Link OpenThreads statically")
|
||||||
|
SET(DYNAMIC_OPENSCENEGRAPH OFF CACHE BOOL "Link OpenSceneGraph statically")
|
||||||
|
# Reference SDL2 during build process.
|
||||||
|
# We use SDL2 to do the following:
|
||||||
|
# * OpenGL functions' address retrieval
|
||||||
|
# * OpenGL graphics context creation
|
||||||
|
SET(USE_SDL2 "-s USE_SDL=2")
|
||||||
|
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${USE_SDL2}" CACHE STRING "Use SDL2" FORCE)
|
||||||
|
|
||||||
|
# Reference OpenSceneGraph includes and libraries.
|
||||||
|
SET(OSG_SOURCE_DIR "${OSG_DIR}")
|
||||||
|
SET(OSG_BUILD_DIR "${OSG_DIR}/build/Emscripten")
|
||||||
|
INCLUDE_DIRECTORIES(${OSG_SOURCE_DIR}/include)
|
||||||
|
INCLUDE_DIRECTORIES(${OSG_BUILD_DIR}/include)
|
||||||
|
LINK_DIRECTORIES(${OSG_BUILD_DIR}/lib)
|
||||||
|
|
||||||
|
# Build OpenSceneGraph if osgViewer library is missing.
|
||||||
|
IF(EXISTS "${OSG_BUILD_DIR}/lib/libosgViewer.a")
|
||||||
|
MESSAGE("Skip building OpenSceneGraph")
|
||||||
|
ELSE()
|
||||||
|
MESSAGE("Build OpenSceneGraph")
|
||||||
|
FILE(MAKE_DIRECTORY ${OSG_BUILD_DIR})
|
||||||
|
ADD_SUBDIRECTORY(${OSG_SOURCE_DIR} ${OSG_BUILD_DIR})
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
# Build example.
|
||||||
|
ADD_EXECUTABLE(osgemscripten osgemscripten.cpp)
|
||||||
|
# Make Emscripten generate ready-to-open HTML page.
|
||||||
|
SET(CMAKE_EXECUTABLE_SUFFIX ".html")
|
||||||
|
# Make Emscripten preload the resource.
|
||||||
|
SET_TARGET_PROPERTIES(osgemscripten PROPERTIES LINK_FLAGS "--preload-file box.osgt")
|
||||||
|
# Copy the resource to the build directory.
|
||||||
|
CONFIGURE_FILE(box.osgt box.osgt COPYONLY)
|
||||||
|
# Libraries must be linked in the specified order.
|
||||||
|
# Otherwise you may get unsatisified linker errors.
|
||||||
|
TARGET_LINK_LIBRARIES(
|
||||||
|
osgemscripten
|
||||||
|
osgViewer
|
||||||
|
osgDB
|
||||||
|
# osgDB plugins start.
|
||||||
|
osgdb_osg
|
||||||
|
osgdb_serializers_osg
|
||||||
|
# osgDB plugins end.
|
||||||
|
osgGA
|
||||||
|
osgText
|
||||||
|
osgUtil
|
||||||
|
osg
|
||||||
|
OpenThreads
|
||||||
|
)
|
43
examples/osgemscripten/README.md
Normal file
43
examples/osgemscripten/README.md
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
How to build osgemscripten example
|
||||||
|
==================================
|
||||||
|
|
||||||
|
### 1. Install Emscripten
|
||||||
|
|
||||||
|
Download and install [Emscripten portable SDK](http://kripken.github.io/emscripten-site/docs/getting_started/downloads.html)
|
||||||
|
|
||||||
|
### 2. Create build directory
|
||||||
|
|
||||||
|
Run the following commands:
|
||||||
|
|
||||||
|
`mkdir /path/to/build/dir`
|
||||||
|
|
||||||
|
`cd /path/to/build/dir`
|
||||||
|
|
||||||
|
### 3. Configure example
|
||||||
|
|
||||||
|
Run the following command:
|
||||||
|
|
||||||
|
`cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/emsdk-portable/emscripten/<version>/cmake/Modules/Platform/Emscripten.cmake /path/to/OpenSceneGraph/examples/osgemscripten`
|
||||||
|
|
||||||
|
This also configures OpenSceneGraph as a dependency
|
||||||
|
|
||||||
|
### 3. Build example
|
||||||
|
|
||||||
|
Run the following command:
|
||||||
|
|
||||||
|
`make`
|
||||||
|
|
||||||
|
This also builds OpenSceneGraph under `/path/to/OpenSceneGraph/build/Emscripten`
|
||||||
|
if it has not yet been built.
|
||||||
|
|
||||||
|
### 4. Launch example
|
||||||
|
|
||||||
|
Firefox only: locate and open `osgemscripten.html` file.
|
||||||
|
|
||||||
|
All browsers:
|
||||||
|
* go to the directory with `osgemscripten.html`
|
||||||
|
* run `python -m SimpleHTTPServer 8080` from there
|
||||||
|
* open `http://localhost:8080/osgemscripten.html` in any browser
|
||||||
|
|
||||||
|
You should now see red cube in your web browser.
|
||||||
|
|
857
examples/osgemscripten/box.osgt
Normal file
857
examples/osgemscripten/box.osgt
Normal file
@ -0,0 +1,857 @@
|
|||||||
|
#Ascii Scene
|
||||||
|
#Version 92
|
||||||
|
#Generator osgexport 0.13.0
|
||||||
|
|
||||||
|
osg::Group {
|
||||||
|
UniqueID 4
|
||||||
|
Name "Root"
|
||||||
|
Children 1 {
|
||||||
|
osg::MatrixTransform {
|
||||||
|
UniqueID 0
|
||||||
|
Name "Cube"
|
||||||
|
Children 1 {
|
||||||
|
osg::Geode {
|
||||||
|
UniqueID 3
|
||||||
|
Name "GeodeCube.001"
|
||||||
|
Drawables 1 {
|
||||||
|
osg::Geometry {
|
||||||
|
UniqueID 2
|
||||||
|
Name "Cube"
|
||||||
|
PrimitiveSetList 1 {
|
||||||
|
DrawElementsUInt GL_TRIANGLES 576 {
|
||||||
|
0 1 2
|
||||||
|
3 4 5
|
||||||
|
6 7 8
|
||||||
|
9 10 11
|
||||||
|
12 13 14
|
||||||
|
15 16 17
|
||||||
|
18 19 20
|
||||||
|
21 22 23
|
||||||
|
24 25 26
|
||||||
|
27 28 29
|
||||||
|
30 31 32
|
||||||
|
33 34 35
|
||||||
|
36 37 38
|
||||||
|
39 40 41
|
||||||
|
42 43 44
|
||||||
|
45 46 47
|
||||||
|
48 49 50
|
||||||
|
51 52 53
|
||||||
|
54 55 56
|
||||||
|
57 58 59
|
||||||
|
60 61 62
|
||||||
|
63 64 65
|
||||||
|
66 67 68
|
||||||
|
69 70 71
|
||||||
|
72 71 67
|
||||||
|
73 72 66
|
||||||
|
74 69 72
|
||||||
|
75 76 68
|
||||||
|
77 76 75
|
||||||
|
78 66 76
|
||||||
|
79 65 80
|
||||||
|
68 79 81
|
||||||
|
67 63 79
|
||||||
|
82 83 58
|
||||||
|
84 82 57
|
||||||
|
85 86 87
|
||||||
|
88 59 89
|
||||||
|
90 88 91
|
||||||
|
92 57 88
|
||||||
|
93 56 94
|
||||||
|
95 96 97
|
||||||
|
98 99 96
|
||||||
|
100 53 49
|
||||||
|
101 102 103
|
||||||
|
101 104 105
|
||||||
|
106 107 108
|
||||||
|
109 110 111
|
||||||
|
112 103 113
|
||||||
|
114 115 47
|
||||||
|
116 117 118
|
||||||
|
119 120 117
|
||||||
|
121 44 40
|
||||||
|
122 123 124
|
||||||
|
125 126 123
|
||||||
|
127 41 128
|
||||||
|
129 130 131
|
||||||
|
132 124 130
|
||||||
|
133 38 134
|
||||||
|
135 136 133
|
||||||
|
137 36 133
|
||||||
|
138 35 31
|
||||||
|
139 138 30
|
||||||
|
140 33 138
|
||||||
|
141 32 142
|
||||||
|
143 141 144
|
||||||
|
145 30 141
|
||||||
|
146 29 147
|
||||||
|
32 146 148
|
||||||
|
31 27 146
|
||||||
|
149 26 22
|
||||||
|
150 149 21
|
||||||
|
151 24 149
|
||||||
|
152 23 153
|
||||||
|
154 152 155
|
||||||
|
156 21 152
|
||||||
|
157 20 158
|
||||||
|
23 157 159
|
||||||
|
22 18 157
|
||||||
|
160 17 19
|
||||||
|
26 160 18
|
||||||
|
25 15 160
|
||||||
|
12 161 28
|
||||||
|
35 12 27
|
||||||
|
34 13 12
|
||||||
|
162 11 37
|
||||||
|
163 162 36
|
||||||
|
164 9 162
|
||||||
|
165 8 46
|
||||||
|
166 167 120
|
||||||
|
168 169 167
|
||||||
|
170 171 55
|
||||||
|
172 173 99
|
||||||
|
174 175 173
|
||||||
|
176 2 64
|
||||||
|
71 176 63
|
||||||
|
71 70 0
|
||||||
|
176 0 2
|
||||||
|
177 178 179
|
||||||
|
165 6 8
|
||||||
|
162 9 11
|
||||||
|
161 12 14
|
||||||
|
160 15 17
|
||||||
|
157 18 20
|
||||||
|
152 21 23
|
||||||
|
149 24 26
|
||||||
|
146 27 29
|
||||||
|
141 30 32
|
||||||
|
138 33 35
|
||||||
|
133 36 38
|
||||||
|
127 39 41
|
||||||
|
121 42 44
|
||||||
|
115 45 47
|
||||||
|
180 48 50
|
||||||
|
100 51 53
|
||||||
|
93 54 56
|
||||||
|
88 57 59
|
||||||
|
83 82 181
|
||||||
|
79 63 65
|
||||||
|
76 66 68
|
||||||
|
72 69 71
|
||||||
|
66 72 67
|
||||||
|
78 73 66
|
||||||
|
73 74 72
|
||||||
|
182 75 68
|
||||||
|
183 77 75
|
||||||
|
77 78 76
|
||||||
|
81 79 80
|
||||||
|
182 68 81
|
||||||
|
68 67 79
|
||||||
|
57 82 58
|
||||||
|
92 84 57
|
||||||
|
184 85 87
|
||||||
|
91 88 89
|
||||||
|
185 90 91
|
||||||
|
90 92 88
|
||||||
|
186 93 94
|
||||||
|
187 95 97
|
||||||
|
95 98 96
|
||||||
|
48 100 49
|
||||||
|
112 101 103
|
||||||
|
102 101 105
|
||||||
|
188 189 190
|
||||||
|
191 109 111
|
||||||
|
192 112 113
|
||||||
|
193 194 195
|
||||||
|
196 116 118
|
||||||
|
116 119 117
|
||||||
|
39 121 40
|
||||||
|
132 122 124
|
||||||
|
122 125 123
|
||||||
|
197 127 128
|
||||||
|
198 129 131
|
||||||
|
129 132 130
|
||||||
|
199 133 134
|
||||||
|
199 135 133
|
||||||
|
136 137 133
|
||||||
|
30 138 31
|
||||||
|
145 139 30
|
||||||
|
139 140 138
|
||||||
|
144 141 142
|
||||||
|
200 143 144
|
||||||
|
143 145 141
|
||||||
|
148 146 147
|
||||||
|
142 32 148
|
||||||
|
32 31 146
|
||||||
|
21 149 22
|
||||||
|
156 150 21
|
||||||
|
150 151 149
|
||||||
|
155 152 153
|
||||||
|
201 154 155
|
||||||
|
154 156 152
|
||||||
|
159 157 158
|
||||||
|
153 23 159
|
||||||
|
23 22 157
|
||||||
|
18 160 19
|
||||||
|
22 26 18
|
||||||
|
26 25 160
|
||||||
|
27 12 28
|
||||||
|
31 35 27
|
||||||
|
35 34 12
|
||||||
|
36 162 37
|
||||||
|
137 163 36
|
||||||
|
163 164 162
|
||||||
|
45 165 46
|
||||||
|
119 166 120
|
||||||
|
166 168 167
|
||||||
|
54 170 55
|
||||||
|
98 172 99
|
||||||
|
172 174 173
|
||||||
|
63 176 64
|
||||||
|
67 71 63
|
||||||
|
176 71 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
VertexData {
|
||||||
|
Array TRUE ArrayID 0 Vec3fArray 202 {
|
||||||
|
-1.00000 0.71786 -0.50000
|
||||||
|
-1.00000 1.00000 -1.00000
|
||||||
|
-1.00000 0.50000 -1.00000
|
||||||
|
0.50000 0.71786 -0.50000
|
||||||
|
1.00000 0.71786 -0.50000
|
||||||
|
0.80513 0.86344 -1.00000
|
||||||
|
1.00000 -1.00000 -0.50000
|
||||||
|
1.00000 -1.00000 -1.00000
|
||||||
|
1.00000 -0.50000 -1.00000
|
||||||
|
-1.00000 -1.00000 -0.50000
|
||||||
|
-1.00000 -1.00000 -1.00000
|
||||||
|
-0.50000 -1.00000 -1.00000
|
||||||
|
0.50000 0.50000 -1.00000
|
||||||
|
0.50000 1.00000 -1.00000
|
||||||
|
0.80513 0.86344 -1.00000
|
||||||
|
-0.50000 1.00000 1.00000
|
||||||
|
-1.00000 1.00000 1.00000
|
||||||
|
-1.00000 0.50000 1.00000
|
||||||
|
-0.50000 0.00000 1.00000
|
||||||
|
-1.00000 0.00000 1.00000
|
||||||
|
-1.00000 -0.50000 1.00000
|
||||||
|
0.50000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 -0.50000 1.00000
|
||||||
|
0.50000 1.00000 1.00000
|
||||||
|
0.00000 1.00000 1.00000
|
||||||
|
0.00000 0.50000 1.00000
|
||||||
|
0.50000 0.00000 -1.00000
|
||||||
|
1.00000 0.00000 -1.00000
|
||||||
|
1.00000 -0.50000 -1.00000
|
||||||
|
-0.50000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 -0.50000 -1.00000
|
||||||
|
-0.50000 1.00000 -1.00000
|
||||||
|
0.00000 1.00000 -1.00000
|
||||||
|
0.00000 0.50000 -1.00000
|
||||||
|
0.00000 -1.00000 -0.50000
|
||||||
|
0.00000 -1.00000 -1.00000
|
||||||
|
0.50000 -1.00000 -1.00000
|
||||||
|
0.00000 -0.69802 0.50000
|
||||||
|
0.00000 -1.00000 0.00000
|
||||||
|
0.50000 -1.00000 0.00000
|
||||||
|
-1.00000 -0.69802 0.50000
|
||||||
|
-1.00000 -1.00000 0.00000
|
||||||
|
-0.50000 -1.00000 0.00000
|
||||||
|
1.00000 0.00000 -0.50000
|
||||||
|
1.00000 0.00000 -1.00000
|
||||||
|
1.00000 0.50000 -1.00000
|
||||||
|
1.00000 0.00000 0.50000
|
||||||
|
0.74690 0.00000 0.00000
|
||||||
|
0.74690 0.50000 0.00000
|
||||||
|
1.00000 -0.69802 0.50000
|
||||||
|
0.74690 -1.00000 0.00000
|
||||||
|
0.74690 -0.50000 0.00000
|
||||||
|
0.00000 0.71786 -0.50000
|
||||||
|
0.00000 1.00000 -1.00000
|
||||||
|
-0.50000 1.00000 -1.00000
|
||||||
|
0.00000 1.00000 0.50000
|
||||||
|
0.00000 1.00000 0.00000
|
||||||
|
-0.50000 1.00000 0.00000
|
||||||
|
0.50000 1.00000 0.50000
|
||||||
|
0.80513 0.86344 0.50000
|
||||||
|
0.74690 1.00000 0.00000
|
||||||
|
-1.00000 0.00000 -0.50000
|
||||||
|
-1.00000 0.00000 -1.00000
|
||||||
|
-1.00000 -0.50000 -1.00000
|
||||||
|
-1.00000 0.00000 0.50000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 -0.50000 0.00000
|
||||||
|
-1.00000 1.00000 0.50000
|
||||||
|
-1.00000 1.00000 0.00000
|
||||||
|
-1.00000 0.50000 0.00000
|
||||||
|
-1.00000 0.50000 0.50000
|
||||||
|
-1.00000 0.50000 1.00000
|
||||||
|
-1.00000 1.00000 1.00000
|
||||||
|
-1.00000 -0.69802 0.50000
|
||||||
|
-1.00000 -0.50000 0.50000
|
||||||
|
-1.00000 -0.50000 1.00000
|
||||||
|
-1.00000 0.00000 1.00000
|
||||||
|
-1.00000 -0.50000 -0.50000
|
||||||
|
-1.00000 -1.00000 -1.00000
|
||||||
|
-1.00000 -1.00000 -0.50000
|
||||||
|
0.50000 1.00000 0.50000
|
||||||
|
0.50000 1.00000 0.00000
|
||||||
|
0.50000 1.00000 1.00000
|
||||||
|
0.80513 0.86344 1.00000
|
||||||
|
0.80513 0.86344 0.50000
|
||||||
|
0.50000 1.00000 0.50000
|
||||||
|
-0.50000 1.00000 0.50000
|
||||||
|
-1.00000 1.00000 0.00000
|
||||||
|
-0.50000 1.00000 1.00000
|
||||||
|
-1.00000 1.00000 0.50000
|
||||||
|
0.00000 1.00000 1.00000
|
||||||
|
-0.50000 0.71786 -0.50000
|
||||||
|
-1.00000 1.00000 -1.00000
|
||||||
|
-0.50000 1.00000 0.00000
|
||||||
|
-0.50000 0.71786 -0.50000
|
||||||
|
-1.00000 0.71786 -0.50000
|
||||||
|
0.00000 1.00000 0.00000
|
||||||
|
0.00000 0.71786 -0.50000
|
||||||
|
1.00000 -0.50000 0.50000
|
||||||
|
1.00000 -0.50000 1.00000
|
||||||
|
1.00000 -0.50000 0.50000
|
||||||
|
1.00000 0.00000 0.50000
|
||||||
|
1.00000 -1.00000 1.00000
|
||||||
|
1.00000 -0.69802 0.50000
|
||||||
|
0.80513 0.86344 0.50000
|
||||||
|
1.00000 0.50000 0.50000
|
||||||
|
0.74690 0.50000 0.00000
|
||||||
|
1.00000 0.50000 1.00000
|
||||||
|
1.00000 0.50000 0.50000
|
||||||
|
0.80513 0.86344 0.50000
|
||||||
|
1.00000 0.00000 1.00000
|
||||||
|
1.00000 0.50000 0.50000
|
||||||
|
1.00000 0.71786 -0.50000
|
||||||
|
1.00000 0.50000 -0.50000
|
||||||
|
0.74690 0.50000 0.00000
|
||||||
|
1.00000 0.50000 -0.50000
|
||||||
|
1.00000 0.71786 -0.50000
|
||||||
|
0.74690 0.00000 0.00000
|
||||||
|
1.00000 0.00000 -0.50000
|
||||||
|
-0.50000 -0.69802 0.50000
|
||||||
|
-0.50000 -1.00000 1.00000
|
||||||
|
-0.50000 -0.69802 0.50000
|
||||||
|
0.00000 -0.69802 0.50000
|
||||||
|
-1.00000 -1.00000 1.00000
|
||||||
|
-1.00000 -0.69802 0.50000
|
||||||
|
0.50000 -0.69802 0.50000
|
||||||
|
0.74690 -1.00000 0.00000
|
||||||
|
0.50000 -1.00000 1.00000
|
||||||
|
0.50000 -0.69802 0.50000
|
||||||
|
1.00000 -0.69802 0.50000
|
||||||
|
0.00000 -1.00000 1.00000
|
||||||
|
0.50000 -1.00000 -0.50000
|
||||||
|
1.00000 -1.00000 -1.00000
|
||||||
|
0.74690 -1.00000 0.00000
|
||||||
|
0.50000 -1.00000 0.00000
|
||||||
|
0.00000 -1.00000 0.00000
|
||||||
|
-0.50000 0.50000 -1.00000
|
||||||
|
-1.00000 0.50000 -1.00000
|
||||||
|
-1.00000 1.00000 -1.00000
|
||||||
|
-0.50000 -0.50000 -1.00000
|
||||||
|
0.00000 -1.00000 -1.00000
|
||||||
|
-1.00000 -0.50000 -1.00000
|
||||||
|
-0.50000 -1.00000 -1.00000
|
||||||
|
-1.00000 0.00000 -1.00000
|
||||||
|
0.50000 -0.50000 -1.00000
|
||||||
|
1.00000 -1.00000 -1.00000
|
||||||
|
0.50000 -1.00000 -1.00000
|
||||||
|
0.50000 0.50000 1.00000
|
||||||
|
1.00000 0.50000 1.00000
|
||||||
|
0.80513 0.86344 1.00000
|
||||||
|
0.50000 -0.50000 1.00000
|
||||||
|
0.00000 -1.00000 1.00000
|
||||||
|
1.00000 -0.50000 1.00000
|
||||||
|
0.50000 -1.00000 1.00000
|
||||||
|
1.00000 0.00000 1.00000
|
||||||
|
-0.50000 -0.50000 1.00000
|
||||||
|
-1.00000 -1.00000 1.00000
|
||||||
|
-0.50000 -1.00000 1.00000
|
||||||
|
-0.50000 0.50000 1.00000
|
||||||
|
1.00000 0.50000 -1.00000
|
||||||
|
-0.50000 -1.00000 -0.50000
|
||||||
|
-0.50000 -1.00000 0.00000
|
||||||
|
-1.00000 -1.00000 0.00000
|
||||||
|
1.00000 -0.50000 -0.50000
|
||||||
|
0.74690 -0.50000 0.00000
|
||||||
|
1.00000 -0.50000 -0.50000
|
||||||
|
0.74690 -1.00000 0.00000
|
||||||
|
1.00000 -1.00000 -0.50000
|
||||||
|
0.50000 0.71786 -0.50000
|
||||||
|
0.50000 1.00000 -1.00000
|
||||||
|
0.50000 1.00000 0.00000
|
||||||
|
0.50000 0.71786 -0.50000
|
||||||
|
0.74690 1.00000 0.00000
|
||||||
|
1.00000 0.71786 -0.50000
|
||||||
|
-1.00000 0.50000 -0.50000
|
||||||
|
0.50000 1.00000 -1.00000
|
||||||
|
0.50000 0.71786 -0.50000
|
||||||
|
0.80513 0.86344 -1.00000
|
||||||
|
1.00000 0.50000 0.50000
|
||||||
|
0.74690 1.00000 0.00000
|
||||||
|
-1.00000 -1.00000 0.00000
|
||||||
|
-1.00000 -1.00000 1.00000
|
||||||
|
0.50000 1.00000 1.00000
|
||||||
|
-1.00000 1.00000 1.00000
|
||||||
|
-1.00000 0.71786 -0.50000
|
||||||
|
-1.00000 1.00000 0.00000
|
||||||
|
0.74690 1.00000 0.00000
|
||||||
|
0.80513 0.86344 0.50000
|
||||||
|
0.74690 0.50000 0.00000
|
||||||
|
0.80513 0.86344 1.00000
|
||||||
|
1.00000 0.50000 1.00000
|
||||||
|
0.80513 0.86344 -1.00000
|
||||||
|
1.00000 0.71786 -0.50000
|
||||||
|
1.00000 0.50000 -1.00000
|
||||||
|
0.74690 1.00000 0.00000
|
||||||
|
1.00000 -0.69802 0.50000
|
||||||
|
1.00000 -1.00000 1.00000
|
||||||
|
1.00000 -1.00000 -0.50000
|
||||||
|
-1.00000 -1.00000 -1.00000
|
||||||
|
1.00000 -1.00000 1.00000
|
||||||
|
}
|
||||||
|
Indices FALSE
|
||||||
|
Binding BIND_PER_VERTEX
|
||||||
|
Normalize 0
|
||||||
|
}
|
||||||
|
NormalData {
|
||||||
|
Array TRUE ArrayID 1 Vec3fArray 202 {
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
0.00000 0.96013 0.27955
|
||||||
|
0.00000 0.96013 0.27955
|
||||||
|
0.00000 0.96013 0.27955
|
||||||
|
1.00000 0.00000 -0.00000
|
||||||
|
1.00000 0.00000 -0.00000
|
||||||
|
1.00000 0.00000 -0.00000
|
||||||
|
0.00000 -1.00000 0.00000
|
||||||
|
0.00000 -1.00000 0.00000
|
||||||
|
0.00000 -1.00000 0.00000
|
||||||
|
-0.00000 -0.00000 -1.00000
|
||||||
|
-0.00000 -0.00000 -1.00000
|
||||||
|
-0.00000 -0.00000 -1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 -1.00000 0.00000
|
||||||
|
0.00000 -1.00000 0.00000
|
||||||
|
0.00000 -1.00000 0.00000
|
||||||
|
0.00000 -0.85599 0.51699
|
||||||
|
0.00000 -0.85599 0.51699
|
||||||
|
0.00000 -0.85599 0.51699
|
||||||
|
0.00000 -0.85599 0.51699
|
||||||
|
0.00000 -0.85599 0.51699
|
||||||
|
0.00000 -0.85599 0.51699
|
||||||
|
1.00000 0.00000 -0.00000
|
||||||
|
1.00000 0.00000 -0.00000
|
||||||
|
1.00000 0.00000 -0.00000
|
||||||
|
0.89220 0.00000 -0.45164
|
||||||
|
0.89220 0.00000 -0.45164
|
||||||
|
0.89220 0.00000 -0.45164
|
||||||
|
0.89220 0.00000 -0.45164
|
||||||
|
0.89220 0.00000 -0.45164
|
||||||
|
0.89220 0.00000 -0.45164
|
||||||
|
-0.00000 0.87091 0.49144
|
||||||
|
-0.00000 0.87091 0.49144
|
||||||
|
-0.00000 0.87091 0.49144
|
||||||
|
0.00000 1.00000 0.00000
|
||||||
|
0.00000 1.00000 0.00000
|
||||||
|
0.00000 1.00000 0.00000
|
||||||
|
0.40044 0.89473 0.19774
|
||||||
|
0.40044 0.89473 0.19774
|
||||||
|
0.40044 0.89473 0.19774
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
0.00000 1.00000 0.00000
|
||||||
|
0.00000 1.00000 0.00000
|
||||||
|
0.00000 1.00000 0.00000
|
||||||
|
0.40851 0.91275 -0.00000
|
||||||
|
0.40851 0.91275 -0.00000
|
||||||
|
0.40851 0.91275 -0.00000
|
||||||
|
0.00000 1.00000 0.00000
|
||||||
|
0.00000 1.00000 0.00000
|
||||||
|
0.00000 1.00000 0.00000
|
||||||
|
0.00000 1.00000 0.00000
|
||||||
|
0.00000 1.00000 0.00000
|
||||||
|
-0.00000 0.87091 0.49144
|
||||||
|
-0.00000 0.87091 0.49144
|
||||||
|
0.00000 0.87091 -0.49144
|
||||||
|
0.00000 0.87091 -0.49144
|
||||||
|
0.00000 0.87091 -0.49144
|
||||||
|
0.00000 0.87091 -0.49144
|
||||||
|
0.00000 0.87091 -0.49144
|
||||||
|
0.89220 0.00000 -0.45164
|
||||||
|
1.00000 0.00000 -0.00000
|
||||||
|
1.00000 0.00000 -0.00000
|
||||||
|
1.00000 0.00000 -0.00000
|
||||||
|
1.00000 0.00000 -0.00000
|
||||||
|
1.00000 0.00000 -0.00000
|
||||||
|
0.80484 0.43155 -0.40742
|
||||||
|
0.80484 0.43155 -0.40742
|
||||||
|
0.80484 0.43155 -0.40742
|
||||||
|
0.88130 0.47255 -0.00000
|
||||||
|
0.88130 0.47255 -0.00000
|
||||||
|
0.88130 0.47255 -0.00000
|
||||||
|
1.00000 0.00000 -0.00000
|
||||||
|
1.00000 0.00000 -0.00000
|
||||||
|
1.00000 0.00000 0.00000
|
||||||
|
1.00000 0.00000 0.00000
|
||||||
|
0.89220 0.00000 0.45164
|
||||||
|
0.89220 0.00000 0.45164
|
||||||
|
0.89220 0.00000 0.45164
|
||||||
|
0.89220 0.00000 0.45164
|
||||||
|
0.89220 0.00000 0.45164
|
||||||
|
0.00000 -0.85599 0.51699
|
||||||
|
-0.00000 -0.85599 -0.51699
|
||||||
|
-0.00000 -0.85599 -0.51699
|
||||||
|
-0.00000 -0.85599 -0.51699
|
||||||
|
-0.00000 -0.85599 -0.51699
|
||||||
|
-0.00000 -0.85599 -0.51699
|
||||||
|
0.00000 -0.85599 0.51699
|
||||||
|
0.00000 -0.85599 0.51699
|
||||||
|
-0.00000 -0.85599 -0.51699
|
||||||
|
-0.00000 -0.85599 -0.51699
|
||||||
|
-0.00000 -0.85599 -0.51699
|
||||||
|
-0.00000 -0.85599 -0.51699
|
||||||
|
0.00000 -1.00000 0.00000
|
||||||
|
0.00000 -1.00000 0.00000
|
||||||
|
0.00000 -1.00000 0.00000
|
||||||
|
0.00000 -1.00000 0.00000
|
||||||
|
0.00000 -1.00000 0.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
-0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 1.00000
|
||||||
|
0.00000 0.00000 -1.00000
|
||||||
|
0.00000 -1.00000 0.00000
|
||||||
|
0.00000 -1.00000 0.00000
|
||||||
|
0.00000 -1.00000 0.00000
|
||||||
|
1.00000 0.00000 -0.00000
|
||||||
|
0.89220 0.00000 0.45164
|
||||||
|
0.89220 0.00000 0.45164
|
||||||
|
0.89220 0.00000 0.45164
|
||||||
|
0.89220 0.00000 0.45164
|
||||||
|
-0.00000 0.87091 0.49144
|
||||||
|
-0.00000 0.87091 0.49144
|
||||||
|
0.00000 0.87091 -0.49144
|
||||||
|
0.00000 0.87091 -0.49144
|
||||||
|
0.00000 0.87091 -0.49144
|
||||||
|
0.00000 0.87091 -0.49144
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
0.36317 0.81145 0.45789
|
||||||
|
0.36317 0.81145 0.45789
|
||||||
|
0.36317 0.81145 0.45789
|
||||||
|
0.89220 0.00000 -0.45164
|
||||||
|
0.00000 1.00000 0.00000
|
||||||
|
-1.00000 -0.00000 0.00000
|
||||||
|
-1.00000 0.00000 0.00000
|
||||||
|
0.40851 0.91275 0.00000
|
||||||
|
0.00000 1.00000 -0.00000
|
||||||
|
0.00000 0.87091 0.49144
|
||||||
|
0.00000 0.87091 -0.49144
|
||||||
|
0.99329 0.00000 -0.11568
|
||||||
|
0.99329 0.00000 -0.11568
|
||||||
|
0.99329 0.00000 -0.11568
|
||||||
|
0.88130 0.47255 0.00000
|
||||||
|
1.00000 0.00000 -0.00000
|
||||||
|
0.86320 0.46284 -0.20167
|
||||||
|
0.86320 0.46284 -0.20167
|
||||||
|
0.86320 0.46284 -0.20167
|
||||||
|
0.89220 -0.00000 0.45164
|
||||||
|
0.00000 -0.85599 0.51699
|
||||||
|
0.00000 -0.85599 -0.51699
|
||||||
|
0.00000 -1.00000 0.00000
|
||||||
|
-0.00000 -0.00000 -1.00000
|
||||||
|
-0.00000 0.00000 1.00000
|
||||||
|
}
|
||||||
|
Indices FALSE
|
||||||
|
Binding BIND_PER_VERTEX
|
||||||
|
Normalize 0
|
||||||
|
}
|
||||||
|
TexCoordData 1 {
|
||||||
|
Data {
|
||||||
|
Array TRUE ArrayID 2 Vec2fArray 202 {
|
||||||
|
0.24987 0.57156
|
||||||
|
0.33316 0.50121
|
||||||
|
0.33316 0.62589
|
||||||
|
0.58434 0.12457
|
||||||
|
0.58427 0.00000
|
||||||
|
0.66715 0.05008
|
||||||
|
0.08352 0.50121
|
||||||
|
0.00024 0.50121
|
||||||
|
0.00016 0.37667
|
||||||
|
0.74911 0.49874
|
||||||
|
0.66715 0.49874
|
||||||
|
0.66715 0.37405
|
||||||
|
0.75013 0.62595
|
||||||
|
0.66684 0.62595
|
||||||
|
0.68959 0.54986
|
||||||
|
0.66684 0.87532
|
||||||
|
0.66684 1.00000
|
||||||
|
0.58355 1.00000
|
||||||
|
0.50026 0.87532
|
||||||
|
0.50026 1.00000
|
||||||
|
0.41697 1.00000
|
||||||
|
0.50026 0.62595
|
||||||
|
0.50026 0.75063
|
||||||
|
0.41697 0.75063
|
||||||
|
0.66684 0.62595
|
||||||
|
0.66684 0.75063
|
||||||
|
0.58355 0.75063
|
||||||
|
0.83342 0.62595
|
||||||
|
0.83342 0.50126
|
||||||
|
0.91671 0.50126
|
||||||
|
0.83342 0.87532
|
||||||
|
0.83342 0.75063
|
||||||
|
0.91671 0.75063
|
||||||
|
0.66684 0.87532
|
||||||
|
0.66684 0.75063
|
||||||
|
0.75013 0.75063
|
||||||
|
0.74911 0.24937
|
||||||
|
0.66715 0.24937
|
||||||
|
0.66715 0.12468
|
||||||
|
0.92198 0.24937
|
||||||
|
0.83107 0.24937
|
||||||
|
0.83107 0.12468
|
||||||
|
0.92198 0.49874
|
||||||
|
0.83107 0.49874
|
||||||
|
0.83107 0.37405
|
||||||
|
0.08335 0.25213
|
||||||
|
0.00008 0.25213
|
||||||
|
0.00000 0.12759
|
||||||
|
0.24990 0.25213
|
||||||
|
0.16747 0.24908
|
||||||
|
0.16739 0.12454
|
||||||
|
0.25001 0.42599
|
||||||
|
0.16763 0.49816
|
||||||
|
0.16755 0.37362
|
||||||
|
0.58440 0.24915
|
||||||
|
0.66685 0.25211
|
||||||
|
0.66691 0.37669
|
||||||
|
0.41702 0.25211
|
||||||
|
0.50030 0.25211
|
||||||
|
0.50036 0.37669
|
||||||
|
0.41696 0.12754
|
||||||
|
0.41732 0.05008
|
||||||
|
0.50021 0.06602
|
||||||
|
0.24987 0.75058
|
||||||
|
0.33316 0.75058
|
||||||
|
0.33316 0.87526
|
||||||
|
0.08329 0.75058
|
||||||
|
0.16658 0.75058
|
||||||
|
0.16658 0.87526
|
||||||
|
0.08329 0.50121
|
||||||
|
0.16658 0.50121
|
||||||
|
0.16658 0.62589
|
||||||
|
0.08329 0.62589
|
||||||
|
0.00000 0.62589
|
||||||
|
0.00000 0.50121
|
||||||
|
0.08329 0.92464
|
||||||
|
0.08329 0.87526
|
||||||
|
0.00000 0.87526
|
||||||
|
0.00000 0.75058
|
||||||
|
0.24987 0.87526
|
||||||
|
0.33316 0.99995
|
||||||
|
0.24987 0.99995
|
||||||
|
0.41696 0.12754
|
||||||
|
0.50024 0.12754
|
||||||
|
0.33368 0.12754
|
||||||
|
0.33404 0.05008
|
||||||
|
0.41732 0.05008
|
||||||
|
0.41696 0.12754
|
||||||
|
0.41708 0.37669
|
||||||
|
0.50042 0.50126
|
||||||
|
0.33381 0.37669
|
||||||
|
0.41714 0.50126
|
||||||
|
0.33375 0.25211
|
||||||
|
0.58446 0.37372
|
||||||
|
0.66698 0.50126
|
||||||
|
0.50036 0.37669
|
||||||
|
0.58446 0.37372
|
||||||
|
0.58452 0.49830
|
||||||
|
0.50030 0.25211
|
||||||
|
0.58440 0.24915
|
||||||
|
0.24998 0.37667
|
||||||
|
0.33325 0.37667
|
||||||
|
0.24998 0.37667
|
||||||
|
0.24990 0.25213
|
||||||
|
0.33333 0.50121
|
||||||
|
0.25001 0.42599
|
||||||
|
0.25041 0.03472
|
||||||
|
0.24982 0.12759
|
||||||
|
0.16739 0.12454
|
||||||
|
0.33309 0.12759
|
||||||
|
0.24982 0.12759
|
||||||
|
0.25041 0.03472
|
||||||
|
0.33317 0.25213
|
||||||
|
0.24982 0.12759
|
||||||
|
0.08324 0.07332
|
||||||
|
0.08327 0.12759
|
||||||
|
0.16739 0.12454
|
||||||
|
0.08327 0.12759
|
||||||
|
0.08324 0.07332
|
||||||
|
0.16747 0.24908
|
||||||
|
0.08335 0.25213
|
||||||
|
0.92198 0.37405
|
||||||
|
0.99498 0.37405
|
||||||
|
0.92198 0.37405
|
||||||
|
0.92198 0.24937
|
||||||
|
0.99498 0.49874
|
||||||
|
0.92198 0.49874
|
||||||
|
0.92198 0.12468
|
||||||
|
0.83107 0.06312
|
||||||
|
0.99498 0.12468
|
||||||
|
0.92198 0.12468
|
||||||
|
0.92198 0.00000
|
||||||
|
0.99498 0.24937
|
||||||
|
0.74911 0.12468
|
||||||
|
0.66715 0.00000
|
||||||
|
0.83107 0.06312
|
||||||
|
0.83107 0.12468
|
||||||
|
0.83107 0.24937
|
||||||
|
0.75013 0.87532
|
||||||
|
0.75013 1.00000
|
||||||
|
0.66684 1.00000
|
||||||
|
0.91671 0.87532
|
||||||
|
1.00000 0.75063
|
||||||
|
0.91671 1.00000
|
||||||
|
1.00000 0.87532
|
||||||
|
0.83342 1.00000
|
||||||
|
0.91671 0.62595
|
||||||
|
1.00000 0.50126
|
||||||
|
1.00000 0.62595
|
||||||
|
0.58355 0.62595
|
||||||
|
0.58355 0.50126
|
||||||
|
0.64409 0.54986
|
||||||
|
0.41697 0.62595
|
||||||
|
0.33368 0.75063
|
||||||
|
0.41697 0.50126
|
||||||
|
0.33368 0.62595
|
||||||
|
0.50026 0.50126
|
||||||
|
0.41697 0.87532
|
||||||
|
0.33368 1.00000
|
||||||
|
0.33368 0.87532
|
||||||
|
0.58355 0.87532
|
||||||
|
0.75013 0.50126
|
||||||
|
0.74911 0.37405
|
||||||
|
0.83107 0.37405
|
||||||
|
0.83107 0.49874
|
||||||
|
0.08343 0.37667
|
||||||
|
0.16755 0.37362
|
||||||
|
0.08343 0.37667
|
||||||
|
0.16763 0.49816
|
||||||
|
0.08352 0.50121
|
||||||
|
0.58434 0.12457
|
||||||
|
0.66679 0.12754
|
||||||
|
0.50024 0.12754
|
||||||
|
0.58434 0.12457
|
||||||
|
0.50021 0.06602
|
||||||
|
0.58427 0.00000
|
||||||
|
0.24987 0.62589
|
||||||
|
0.66679 0.12754
|
||||||
|
0.58434 0.12457
|
||||||
|
0.66715 0.05008
|
||||||
|
0.24982 0.12759
|
||||||
|
0.50021 0.06602
|
||||||
|
0.16658 0.99995
|
||||||
|
0.00000 0.99995
|
||||||
|
0.33368 0.12754
|
||||||
|
0.33387 0.50126
|
||||||
|
0.58452 0.49830
|
||||||
|
0.50042 0.50126
|
||||||
|
0.16731 0.00000
|
||||||
|
0.25041 0.03472
|
||||||
|
0.16739 0.12454
|
||||||
|
0.33368 0.03472
|
||||||
|
0.33309 0.12759
|
||||||
|
0.00059 0.03472
|
||||||
|
0.08324 0.07332
|
||||||
|
0.00000 0.12759
|
||||||
|
0.16731 0.00000
|
||||||
|
0.92198 0.00000
|
||||||
|
0.99498 0.00000
|
||||||
|
0.74911 0.00000
|
||||||
|
1.00000 1.00000
|
||||||
|
0.33368 0.50126
|
||||||
|
}
|
||||||
|
Indices FALSE
|
||||||
|
Binding BIND_PER_VERTEX
|
||||||
|
Normalize 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Matrix {
|
||||||
|
1.00000 0.00000 0.00000 0.00000
|
||||||
|
0.00000 1.00000 0.00000 0.00000
|
||||||
|
0.00000 0.00000 1.00000 0.00000
|
||||||
|
0.00000 0.00000 0.00000 1.00000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
76
examples/osgemscripten/functions.h
Normal file
76
examples/osgemscripten/functions.h
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
/* OpenSceneGraph example, osgemscripten.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OSGEMSCRIPTEN_FUNCTIONS_H
|
||||||
|
#define OSGEMSCRIPTEN_FUNCTIONS_H
|
||||||
|
|
||||||
|
#include <osg/Notify>
|
||||||
|
|
||||||
|
// Convert NotifySeverity enum value to string.
|
||||||
|
std::string logLevelToString(osg::NotifySeverity severity)
|
||||||
|
{
|
||||||
|
switch (severity)
|
||||||
|
{
|
||||||
|
case osg::DEBUG_FP:
|
||||||
|
// Verbose.
|
||||||
|
return "V";
|
||||||
|
case osg::DEBUG_INFO:
|
||||||
|
// Debug.
|
||||||
|
return "D";
|
||||||
|
case osg::NOTICE:
|
||||||
|
case osg::INFO:
|
||||||
|
// Info.
|
||||||
|
return "I";
|
||||||
|
case osg::WARN:
|
||||||
|
// Warning.
|
||||||
|
return "W";
|
||||||
|
case osg::FATAL:
|
||||||
|
case osg::ALWAYS:
|
||||||
|
// Error.
|
||||||
|
return "E";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#include <osg/Program>
|
||||||
|
|
||||||
|
// Fragment shader to display everything in red colour.
|
||||||
|
static const char shaderFragment[] =
|
||||||
|
"void main() { \n"
|
||||||
|
" gl_FragColor = vec4(0.5, 0.3, 0.3, 1.0);\n"
|
||||||
|
"} \n";
|
||||||
|
// Geometry shader to pass geometry vertices to fragment shader.
|
||||||
|
static const char shaderVertex[] =
|
||||||
|
"void main() { \n"
|
||||||
|
" gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; \n"
|
||||||
|
"} \n";
|
||||||
|
|
||||||
|
osg::Program *createShaderProgram(
|
||||||
|
const std::string &vertexShader,
|
||||||
|
const std::string &fragmentShader)
|
||||||
|
{
|
||||||
|
// Load shaders.
|
||||||
|
osg::Shader *vs = new osg::Shader(osg::Shader::VERTEX, vertexShader);
|
||||||
|
osg::Shader *fs = new osg::Shader(osg::Shader::FRAGMENT, fragmentShader);
|
||||||
|
// Compile shaders and compose shader program.
|
||||||
|
osg::Program *prog = new osg::Program;
|
||||||
|
prog->addShader(vs);
|
||||||
|
prog->addShader(fs);
|
||||||
|
return prog;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // OSGEMSCRIPTEN_FUNCTIONS_H
|
84
examples/osgemscripten/osgemscripten.cpp
Normal file
84
examples/osgemscripten/osgemscripten.cpp
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
/* OpenSceneGraph example, emscripten.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <emscripten.h>
|
||||||
|
#include <SDL2/SDL.h>
|
||||||
|
|
||||||
|
#include "osgemscripten.h"
|
||||||
|
|
||||||
|
// We use app global variable in loop() function.
|
||||||
|
Application *app = 0;
|
||||||
|
|
||||||
|
// Stand alone function that is called by Emscripten to run the app.
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
SDL_Event e;
|
||||||
|
while (SDL_PollEvent(&e))
|
||||||
|
{
|
||||||
|
if (app)
|
||||||
|
{
|
||||||
|
app->handleEvent(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (app)
|
||||||
|
{
|
||||||
|
app->frame();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
// Make sure SDL is working.
|
||||||
|
if (SDL_Init(SDL_INIT_VIDEO) < 0)
|
||||||
|
{
|
||||||
|
printf("OSGWeb. Could not init SDL: '%s'\n", SDL_GetError());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
// Clean SDL up at exit.
|
||||||
|
atexit(SDL_Quit);
|
||||||
|
// Configure rendering context.
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 5);
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
|
||||||
|
// Create rendering window.
|
||||||
|
int width = 800;
|
||||||
|
int height = 600;
|
||||||
|
SDL_Window* window =
|
||||||
|
SDL_CreateWindow(
|
||||||
|
"OSGWeb",
|
||||||
|
SDL_WINDOWPOS_CENTERED,
|
||||||
|
SDL_WINDOWPOS_CENTERED,
|
||||||
|
width,
|
||||||
|
height,
|
||||||
|
SDL_WINDOW_OPENGL);
|
||||||
|
if (!window)
|
||||||
|
{
|
||||||
|
printf("OSGWeb. Could not create window: '%s'\n", SDL_GetError());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
SDL_GL_CreateContext(window);
|
||||||
|
// Create application.
|
||||||
|
app = new Application;
|
||||||
|
app->setupWindow(width, height);
|
||||||
|
app->loadScene("box.osgt");
|
||||||
|
// Render asynchronously.
|
||||||
|
emscripten_set_main_loop(loop, -1, 0);
|
||||||
|
return 0;
|
||||||
|
}
|
180
examples/osgemscripten/osgemscripten.h
Normal file
180
examples/osgemscripten/osgemscripten.h
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
/* OpenSceneGraph example, osgemscripten.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OSGEMSCRIPTEN_OSGEMSCRIPTEN_H
|
||||||
|
#define OSGEMSCRIPTEN_OSGEMSCRIPTEN_H
|
||||||
|
|
||||||
|
#include "functions.h"
|
||||||
|
|
||||||
|
#include <osgDB/ReadFile>
|
||||||
|
#include <osgViewer/Viewer>
|
||||||
|
|
||||||
|
#include <osgGA/TrackballManipulator>
|
||||||
|
|
||||||
|
// VBO setup visitor.
|
||||||
|
#include <osg/Geode>
|
||||||
|
#include <osg/Geometry>
|
||||||
|
#include <osg/NodeVisitor>
|
||||||
|
|
||||||
|
// Initialize OSG plugins statically.
|
||||||
|
USE_OSGPLUGIN(osg2)
|
||||||
|
USE_SERIALIZER_WRAPPER_LIBRARY(osg)
|
||||||
|
|
||||||
|
// This class prints OpenSceneGraph notifications to console.
|
||||||
|
class Logger : public osg::NotifyHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Logger() { }
|
||||||
|
virtual ~Logger() { }
|
||||||
|
|
||||||
|
// Override NotifyHandler::notify() to receive OpenSceneGraph notifications.
|
||||||
|
void notify(osg::NotifySeverity severity, const char *message)
|
||||||
|
{
|
||||||
|
printf("OSG/%s %s", logLevelToString(severity).c_str(), message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// This class forces the use of VBO.
|
||||||
|
class VBOSetupVisitor : public osg::NodeVisitor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
VBOSetupVisitor() :
|
||||||
|
osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN) { }
|
||||||
|
virtual void apply(osg::Geode &geode)
|
||||||
|
{
|
||||||
|
for (unsigned int i = 0; i < geode.getNumDrawables(); ++i)
|
||||||
|
{
|
||||||
|
osg::Geometry *geom =
|
||||||
|
dynamic_cast<osg::Geometry*>(geode.getDrawable(i));
|
||||||
|
if (geom)
|
||||||
|
{
|
||||||
|
geom->setUseVertexBufferObjects(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
NodeVisitor::apply(geode);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Application
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Application()
|
||||||
|
{
|
||||||
|
setupLogging();
|
||||||
|
setupRendering();
|
||||||
|
}
|
||||||
|
~Application()
|
||||||
|
{
|
||||||
|
tearDownLogging();
|
||||||
|
tearDownRendering();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool handleEvent(SDL_Event &e)
|
||||||
|
{
|
||||||
|
osgViewer::GraphicsWindow *gw =
|
||||||
|
dynamic_cast<osgViewer::GraphicsWindow *>(
|
||||||
|
mViewer->getCamera()->getGraphicsContext());
|
||||||
|
if (!gw)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
osgGA::EventQueue &queue = *(gw->getEventQueue());
|
||||||
|
switch (e.type)
|
||||||
|
{
|
||||||
|
case SDL_MOUSEMOTION:
|
||||||
|
queue.mouseMotion(e.motion.x, e.motion.y);
|
||||||
|
return true;
|
||||||
|
case SDL_MOUSEBUTTONDOWN:
|
||||||
|
queue.mouseButtonPress(e.button.x, e.button.y, e.button.button);
|
||||||
|
printf("OSGWeb. Application. Mouse button down\n");
|
||||||
|
return true;
|
||||||
|
case SDL_MOUSEBUTTONUP:
|
||||||
|
queue.mouseButtonRelease(e.button.x, e.button.y, e.button.button);
|
||||||
|
printf("OSGWeb. Application. Mouse button up\n");
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
void loadScene(const std::string &fileName)
|
||||||
|
{
|
||||||
|
// Load scene.
|
||||||
|
osg::Node *scene = osgDB::readNodeFile(fileName);
|
||||||
|
if (!scene)
|
||||||
|
{
|
||||||
|
printf("Could not load scene\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Use VBO and EBO instead of display lists. CRITICAL for Emscripten
|
||||||
|
// to skip FULL_ES2 emulation flag.
|
||||||
|
VBOSetupVisitor vbo;
|
||||||
|
scene->accept(vbo);
|
||||||
|
// Load shaders.
|
||||||
|
osg::Program *prog = createShaderProgram(shaderVertex, shaderFragment);
|
||||||
|
// Apply shaders.
|
||||||
|
scene->getOrCreateStateSet()->setAttribute(prog);
|
||||||
|
// Set scene.
|
||||||
|
mViewer->setSceneData(scene);
|
||||||
|
}
|
||||||
|
void setupWindow(int width, int height)
|
||||||
|
{
|
||||||
|
mViewer->setUpViewerAsEmbeddedInWindow(0, 0, width, height);
|
||||||
|
}
|
||||||
|
void frame()
|
||||||
|
{
|
||||||
|
mViewer->frame();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
void setupLogging()
|
||||||
|
{
|
||||||
|
// Create custom logger.
|
||||||
|
mLogger = new Logger;
|
||||||
|
// Provide the logger to OpenSceneGraph.
|
||||||
|
osg::setNotifyHandler(mLogger);
|
||||||
|
// Only accept notifications of Info level or higher
|
||||||
|
// like warnings and errors.
|
||||||
|
osg::setNotifyLevel(osg::INFO);
|
||||||
|
}
|
||||||
|
void setupRendering()
|
||||||
|
{
|
||||||
|
// Create OpenSceneGraph viewer.
|
||||||
|
mViewer = new osgViewer::Viewer;
|
||||||
|
// Use single thread: CRITICAL for Emscripten.
|
||||||
|
mViewer->setThreadingModel(osgViewer::ViewerBase::SingleThreaded);
|
||||||
|
// Create manipulator: CRITICAL for Emscripten.
|
||||||
|
mViewer->setCameraManipulator(new osgGA::TrackballManipulator);
|
||||||
|
}
|
||||||
|
void tearDownLogging()
|
||||||
|
{
|
||||||
|
// Remove the logger from OpenSceneGraph.
|
||||||
|
// This also destroys the logger: no need to deallocate it manually.
|
||||||
|
osg::setNotifyHandler(0);
|
||||||
|
}
|
||||||
|
void tearDownRendering()
|
||||||
|
{
|
||||||
|
delete mViewer;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
Logger *mLogger;
|
||||||
|
osgViewer::Viewer *mViewer;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // OSGEMSCRIPTEN_OSGEMSCRIPTEN_H
|
@ -47,6 +47,9 @@
|
|||||||
#else
|
#else
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#endif
|
#endif
|
||||||
|
#elif defined(__EMSCRIPTEN__)
|
||||||
|
// Emscripten ships SDL, which we use to get OpenGL function addresses.
|
||||||
|
#include <SDL2/SDL.h>
|
||||||
#else
|
#else
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#endif
|
#endif
|
||||||
@ -407,6 +410,10 @@ OSG_INIT_SINGLETON_PROXY(GLExtensionDisableStringInitializationProxy, osg::getGL
|
|||||||
|
|
||||||
return dlsym(RTLD_DEFAULT, funcName);
|
return dlsym(RTLD_DEFAULT, funcName);
|
||||||
|
|
||||||
|
#elif defined(__EMSCRIPTEN__)
|
||||||
|
// Use SDL to get OpenGL function address for Emscripten.
|
||||||
|
return SDL_GL_GetProcAddress(funcName);
|
||||||
|
|
||||||
#else // all other unixes
|
#else // all other unixes
|
||||||
|
|
||||||
return dlsym(0, funcName);
|
return dlsym(0, funcName);
|
||||||
|
Loading…
Reference in New Issue
Block a user