void CUDARayCastSDF::render(const HashData& hashData, const HashParams& hashParams, const DepthCameraData& cameraData, const mat4f& lastRigidTransform) { rayIntervalSplatting(hashData, hashParams, cameraData, lastRigidTransform); m_data.d_rayIntervalSplatMinArray = m_rayIntervalSplatting.mapMinToCuda(); m_data.d_rayIntervalSplatMaxArray = m_rayIntervalSplatting.mapMaxToCuda(); // Start query for timing if(GlobalAppState::getInstance().s_timingsDetailledEnabled) { cutilSafeCall(cudaDeviceSynchronize()); m_timer.start(); } renderCS(hashData, m_data, cameraData, m_params); //convertToCameraSpace(cameraData); if (!m_params.m_useGradients) { computeNormals(m_data.d_normals, m_data.d_depth4, m_params.m_width, m_params.m_height); } m_rayIntervalSplatting.unmapCuda(); // Wait for query if(GlobalAppState::getInstance().s_timingsDetailledEnabled) { cutilSafeCall(cudaDeviceSynchronize()); m_timer.stop(); TimingLog::totalTimeRayCast+=m_timer.getElapsedTimeMS(); TimingLog::countTimeRayCast++; } }
void renderScene() { // clear and set camera glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); // lighting from the viewer perspective GLfloat lp[] = { 0.0f, 0.0f, 0.0f, 1.0f }; glLightfv(GL_LIGHT0, GL_POSITION, lp); // translate scene in viewing direction glTranslatef(transX, transY, transZ); // rotate scene glRotatef(angleX, 0.0f, 1.0f, 0.0f); glRotatef(angleY, 1.0f, 0.0f, 0.0f); // draw data structure (lines) without lighting glDisable(GL_LIGHTING); renderDS(heDS); // draw 3d objects with lighting glEnable(GL_LIGHTING); renderHEActive(activeHE); renderCS(); // swap Buffers glFlush(); glutSwapBuffers(); }