Я пытаюсь получить цвет пикселя в JOGL, когда пользователь нажимает на него. Если я добавлю следующий код в метод отображения (исходя из GLEventListener
), он будет работать нормально.
FloatBuffer buffer = FloatBuffer.allocate(4);
gl.glReadBuffer(GL3.GL_FRONT);
gl.glReadPixels(10, 10, 1, 1, GL3.GL_RGBA, GL3.GL_FLOAT, buffer);
float[] pixels = new float[3];
pixels = buffer.array();
float red = pixels[0];
float green = pixels[1];
float blue = pixels[2];
System.out.println(red + ", " + green + ", " + blue);
Однако, если я помещаю свой код в метод mousePressed, при проверке на успешное выполнение я получаю ошибку недопустимой операции, и цвет возвращается черным (0, 0, 0).
Есть ли способ заставить это работать в моем методе mousePressed, или мне придется сохранить выбранный пиксель вместе с логическим значением для обозначения выделения (чтобы я не вызывал glReadPixels для каждого кадра) и делал выбор? в методе отображения?
P.s. координаты (x, y) = (10,10) просто для того, чтобы убедиться, что выделение действительно внутри моего окна (что и есть, поскольку цвет пикселя правильно отображается в методе отображения).