Я не использовал OpenGL из Java, поэтому я размышляю здесь, но есть хороший шанс, что вы можете просто использовать отрицательные числа, двоичное представление которых совпадает с положительными числами без знака, которые вы действительно хотите. Вы даете GL несколько байтовых пар и говорите им интерпретировать их как беззнаковые, и до тех пор, пока они имеют правильное значение при такой интерпретации, это должно работать. Неважно, думала ли Java, что они имели в виду что-то другое, когда хранили эти биты в памяти.
Если вы выполняете итерацию, просто игнорируйте перенос и продолжайте увеличиваться. Когда вы доберетесь до -1, все готово.
Если вы вычисляете индексные числа как целые числа (у которых нет этой проблемы диапазона), а затем приводите к короткому, вычтите 65536 из любого числа, которое больше 32767.