@@ -129,24 +129,29 @@ class RenderColorMapSysTrans :
129129 return ;
130130 }
131131
132- camera.front ().data .projection ;
133-
134132 char * vbo_buffer = reinterpret_cast <char *>(pass.front ().vbo .data ->getBuffer ());
133+ uint32_t * ibo_buffer = reinterpret_cast <uint32_t *>(pass.front ().ibo .data ->getBuffer ());
135134 size_t num_triangles = pass.front ().ibo .data ->getBufferSize () / (sizeof (uint32_t ) * 3 );
136- size_t stride_vbo = pass.front ().vbo .data ->getBufferSize () / (num_triangles * 3 );
135+
136+ size_t stride_vbo = 0 ;
137+ for (auto a : pass.front ().vbo .attributes )
138+ stride_vbo += a.sizeInBytes ;
137139
138140 std::vector<DepthIndex> rel_depth (num_triangles);
139- Core::Geometry::Vector dir (camera.front ().data .worldToView [0 ][2 ], camera.front ().data .worldToView [1 ][2 ], camera.front ().data .worldToView [2 ][2 ]);
141+ Core::Geometry::Vector dir (
142+ camera.front ().data .worldToView [0 ][2 ],
143+ camera.front ().data .worldToView [1 ][2 ],
144+ camera.front ().data .worldToView [2 ][2 ]);
140145
141146 for (size_t j = 0 ; j < num_triangles; j++)
142147 {
143- float * vertex1 = reinterpret_cast <float *>(vbo_buffer + stride_vbo * (j * 3 ));
148+ float * vertex1 = reinterpret_cast <float *>(vbo_buffer + stride_vbo * (ibo_buffer[j* 3 ] ));
144149 Core::Geometry::Point node1 (vertex1[0 ], vertex1[1 ], vertex1[2 ]);
145150
146- float * vertex2 = reinterpret_cast <float *>(vbo_buffer + stride_vbo * (j * 3 + 1 ));
151+ float * vertex2 = reinterpret_cast <float *>(vbo_buffer + stride_vbo * (ibo_buffer[j* 3 + 1 ] ));
147152 Core::Geometry::Point node2 (vertex2[0 ], vertex2[1 ], vertex2[2 ]);
148153
149- float * vertex3 = reinterpret_cast <float *>(vbo_buffer + stride_vbo * (j * 3 + 2 ));
154+ float * vertex3 = reinterpret_cast <float *>(vbo_buffer + stride_vbo * (ibo_buffer[j* 3 + 2 ] ));
150155 Core::Geometry::Point node3 (vertex3[0 ], vertex3[1 ], vertex3[2 ]);
151156
152157 rel_depth[j].mDepth = Core::Geometry::Dot (dir, node1) + Core::Geometry::Dot (dir, node2) + Core::Geometry::Dot (dir, node3);
@@ -305,7 +310,8 @@ class RenderColorMapSysTrans :
305310 bool depthMask = glIsEnabled (GL_DEPTH_WRITEMASK);
306311 bool cullFace = glIsEnabled (GL_CULL_FACE);
307312 bool blend = glIsEnabled (GL_BLEND);
308-
313+
314+ GL (glEnable (GL_DEPTH_TEST));
309315 GL (glDepthMask (GL_FALSE));
310316 GL (glDisable (GL_CULL_FACE));
311317 GL (glEnable (GL_BLEND));
0 commit comments