/*
 * Renders the tracked points
 */
void PointCloudApplication::render_point_cloud() {
	
    pointcloud_state state = pointcloud_get_state();
		     
    if (state == POINTCLOUD_INITIALIZING ||
		state == POINTCLOUD_TRACKING_SLAM_MAP) {
        
        pointcloud_point_cloud* points = pointcloud_get_points();
		
        if (points) {
			switch_to_camera();
			disable_lighting();

			glDisable(GL_DEPTH_TEST);

            glColor4f(0.9, 0.95, 1.0, 0.6);
            
            glEnable(GL_POINT_SPRITE_OES);
            glEnable(GL_TEXTURE_2D);
            
            glEnable(GL_BLEND);
            glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
			
			glBindTexture(GL_TEXTURE_2D, point_texture);

            glTexEnvi(GL_POINT_SPRITE_OES, GL_COORD_REPLACE_OES, GL_TRUE);
            
            glPointParameterf(GL_POINT_SIZE_MAX, 64.0f);
            
			glPointSize(32.0);
			glEnableClientState(GL_VERTEX_ARRAY);
            glVertexPointer(3,GL_FLOAT,0, (float *)points->points);
            glDrawArrays(GL_POINTS,0, points->size);
			
			glDisableClientState(GL_VERTEX_ARRAY);
            
            glColor4f(1, 1, 1, 1);
			
			glPointSize(1);

			glDisable(GL_BLEND);
			glDisable(GL_TEXTURE_2D);            
			glDisable(GL_POINT_SPRITE_OES);
			
			pointcloud_destroy_point_cloud(points);
			
			switch_to_ortho();
        }
    }    
}
Beispiel #2
0
//TODO: ES2ify
void App::render_content(double time_since_last_frame) {
	
    pointcloud_state state = pointcloud_get_state();
	
	// Draw the content if we have SLAM or image tracking
	if (state == POINTCLOUD_TRACKING_SLAM_MAP || state == POINTCLOUD_TRACKING_IMAGES) {
        
		switch_to_camera();
        
//        // Set light position
//        static const float light_position[4] = {1, 6, 0.5, 1.0f};
//        glLightfv(GL_LIGHT0, GL_POSITION, light_position);
//        
//		glColor4f(1,0,0,1);
//		
//		glDisable(GL_TEXTURE_2D);
//		glEnable(GL_COLOR_MATERIAL);
//		glShadeModel(GL_FLAT);
//		
//		glEnableClientState(GL_VERTEX_ARRAY);
//		glEnableClientState(GL_NORMAL_ARRAY);
//		
//		glVertexPointer(3, GL_FLOAT, 0, (float *)cuboid_vertices);
//		glNormalPointer(GL_FLOAT, 0, (float *)cuboid_normals);
//		glDrawArrays(GL_TRIANGLE_STRIP, 0, 19);
//		
//		glDisableClientState(GL_NORMAL_ARRAY);
//		glDisableClientState(GL_VERTEX_ARRAY);
//		
//		glShadeModel(GL_SMOOTH);
//		glDisable(GL_COLOR_MATERIAL);
//		glColor4f(1, 1, 1, 1);
	}
	
	// Draw the UI on top of the content
	switch_to_ortho();
	draw_ui();
}