Used IntelliJ auto-complete to do a few mockups, see the attachments. 1st is the current LWJGL state, 2nd is without AutoType, 3rd is princec's suggestion, 4th is princec's without AutoType.
In terms of aesthetics, I like the 2nd and 4th. But I absolutely hate the 'a' postfix and I can't think of anything nice to use there. Personally, it doesn't bother me that the high-level overloads are mixed with the lower-level ones in #2.
In terms of usability, the use-case with the mixed data in the same buffer that you suggested, can be handled in two ways:
- Use a ByteBuffer for everything.
- Use a ByteBuffer for the raw data and the OpenGL call, but use a FloatBuffer view on top of it to fill fp data at the appropriate offsets.