bool PickingShaderForPointCloud::PrepareBinding(const Geometry &geometry, const RenderOption &option, const ViewControl &view, std::vector<Eigen::Vector3f> &points, std::vector<float> &indices) { if (geometry.GetGeometryType() != Geometry::GeometryType::PointCloud) { PrintShaderWarning("Rendering type is not PointCloud."); return false; } const PointCloud &pointcloud = (const PointCloud &)geometry; if (pointcloud.HasPoints() == false) { PrintShaderWarning("Binding failed with empty pointcloud."); return false; } points.resize(pointcloud.points_.size()); indices.resize(pointcloud.points_.size()); for (size_t i = 0; i < pointcloud.points_.size(); i++) { const auto &point = pointcloud.points_[i]; points[i] = point.cast<float>(); indices[i] = (float)i; } draw_arrays_mode_ = GL_POINTS; draw_arrays_size_ = GLsizei(points.size()); return true; }
/** * Get the type of primitives this geometry contains * * @method getGeometryType * @for Geometry * @return {integer} Type of primitives this geometry contains * @example * // returns one of the following * dali.GEOMETRY_POINTS * dali.GEOMETRY_LINES * dali.GEOMETRY_LINE_LOOP * dali.GEOMETRY_LINE_STRIP * dali.GEOMETRY_TRIANGLES * dali.GEOMETRY_TRIANGLE_FAN * dali.GEOMETRY_TRIANGLE_STRIP */ void GeometryApi::GetGeometryType( const v8::FunctionCallbackInfo< v8::Value >& args ) { v8::Isolate* isolate = args.GetIsolate(); v8::HandleScope handleScope( isolate ); Geometry geometry = GetGeometry( isolate, args ); args.GetReturnValue().Set( v8::Integer::New( isolate, geometry.GetGeometryType() ) ); }
bool PickingShaderForPointCloud::PrepareRendering(const Geometry &geometry, const RenderOption &option, const ViewControl &view) { if (geometry.GetGeometryType() != Geometry::GeometryType::PointCloud) { PrintShaderWarning("Rendering type is not PointCloud."); return false; } glPointSize(GLfloat(option.point_size_)); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); return true; }