code: public FloatBuffer toByteBuffer() {
          ByteBuffer bbuf = ByteBuffer.allocateDirect(16 * 4);
          bbuf.order(ByteOrder.nativeOrder());
          FloatBuffer fbuf = bbuf.asFloatBuffer();
          fbuf.put(m_data);
          fbuf.flip();
  
          return fbuf;
      }
docs: Stores the matrix in a new direct ByteBuffer with native byte order.
  <p>
  
  The returned buffer can be passed to rendering APIs such as LWJGL, e.g.,
  as parameter for <code>GL20.glUniformMatrix4()</code>. Be sure to set
  <code>transpose</code> to <code>true</code> in this case, as OpenGL
  expects the matrix in column order.
  
  @return a new native order, direct ByteBuffer