The below code no worky... I've tried tweaking mapping UV positions, normals, etc. The Apple doc mentioned texture mapping to a point, so it sounded possible.
// Material
let material = SCNMaterial()
material.lightingModel = SCNMaterial.LightingModel.constant
material.isDoubleSided = true
material.readsFromDepthBuffer = false
material.multiply.contents = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
material.diffuse.contents = UIImage(named: "star")!
// Texture mapping
let textureMap = SCNGeometrySource(textureCoordinates: [
CGPoint(x: 0, y: 1),
CGPoint(x: 1, y: 1),
CGPoint(x: 0, y: 0),
CGPoint(x: 1, y: 0)
])
// Elements
let vertexSource = SCNGeometrySource(vertices: [SCNVector3(0, 0 ,0)])
let pointsElement = SCNGeometryElement(indices: [1], primitiveType: .point)
pointsElement.pointSize = 10
pointsElement.minimumPointScreenSpaceRadius = 1
pointsElement.maximumPointScreenSpaceRadius = 50
let normals = SCNGeometrySource(normals: [SCNVector3](repeating: SCNVector3(0, 0, 1), count: 1))
// Geometry
let geometry = SCNGeometry(sources: [vertexSource, normals, textureMap], elements: [pointsElement])
geometry.materials = [material]
// Node
let bodyNode = SCNNode()
bodyNode.geometry = geometry