public void convertToHalf() {
        if (id != -1) {
            throw new UnsupportedOperationException("Data has already been sent.");
        }

        if (format != Format.Float) {
            throw new IllegalStateException("Format must be float!");
        }

        int numElements = data.limit() / components;
        format = Format.Half;
        this.componentsLength = components * format.getComponentSize();

        ByteBuffer halfData = BufferUtils.createByteBuffer(componentsLength * numElements);
        halfData.rewind();

        FloatBuffer floatData = (FloatBuffer) data;
        floatData.rewind();

        for (int i = 0; i < floatData.limit(); i++) {
            float f = floatData.get(i);
            short half = FastMath.convertFloatToHalf(f);
            halfData.putShort(half);
        }
        this.data = halfData;
        setUpdateNeeded();
        dataSizeChanged = true;
    }
Converts single floating-point data to {@link Format#Half half} floating-point data.
jme3-core/src/main/java/com/jme3/scene/VertexBuffer.java