Я надеюсь, что это в конечном итоге простой вопрос.
Я использую JOGL в Netbeans для создания шахматной доски пикселей, где вы можете указать количество плиток в каждой строке / столбце, а такжецвет каждой из этих плиток (нарисуйте эту плитку с 0 альфа, нарисуйте эту плитку с полной альфа).Скорость не проблема и не эффективность.
Вот моя проблема: когда я пытаюсь использовать glDrawPixels (), мой glCanvas не полностью, а полностью заполнен.Как вы можете видеть, я сейчас пытаюсь получить простой пример работы чертежа, прежде чем перейти к более сложным вещам.Я заполняю массив 1D байтов значением заполненного байта.Затем я передаю это glDrawPixels () для записи в буфер цвета.
Я неправильно обрабатываю байтовый массив?На практике (в отличие от нескольких учебных пособий, которые я видел), метод принимает форму буфера только для фактических данных, поэтому я обернул байтовый массив.
Кроме того, кажется, что методожидать в два раза больше данных, чем указано вами.Например, вы можете видеть здесь, что, хотя я говорю ему управлять областью ширины по высоте, она выдает исключение, если массив байтов не удваивает ширину на удвоенную высоту.
Я используюglDrawPixels (), потому что я прочитал, что это правильный способ управления пикселями.
byte[] src = new byte[(width*2)*(height*2)];
for(int a=0; a<height*2; a++){
for(int b=0; b<width*2; b++){
src[a*b+b]= 127;
}
}
gl.glDrawPixels(width, height,
GL.GL_RED, GL.GL_UNSIGNED_BYTE,
ByteBuffer.wrap(src));
Обратите внимание, что ширина и высота - это размеры моего холста (256x256), поэтому эта операция должна занимать весь холстрайон.
Буду очень признателен за любую помощь, которую вы можете мне оказать.Я в порядке с решениями, которые включают в себя совершенно разные подходы (если они все еще подразумевают использование JOGL).При этом я бы предпочел не делать это в фрагментном шейдере.Спасибо за ваше время.