public void floodfill(BufferedImage image, int new_color, int start_x, int start_y) {
final int width = image.getWidth();
final int height = image.getHeight();
final int old_color = image.getRGB(start_x, start_y);
.
.
.
if (x > 0 && image.getRGB(x - 1, y) == old_color) { // aqui eu vou recuperar a cor do pixel da esquerda
Vini,
tem alguma função que fça mais ou menos o q essa glReadPixels faz, mas que me retorne um “int” ?
pode me passar um exemplo dessa função c/ os dados?
Obrigado!!
ViniGodoy
Não sei, que eu me lembre não. Mas pq vc mesmo não transforma num int?
F
fernandesleandro
vini,
Eu simplesmente queria recuperar a cor do pixel da coordenada q estou passando para poder comparar com outra cor que eu pegar de outra coordenada. eu preciso fazer um for e ir pegando pixel por pixel e olhando a cor dele. como faço isso? pode me dá uma rotina se souber?
vlw =)
ViniGodoy
Ok, mas é o pixel da geometria, do back buffer, de alguma textura ou de uma imagem arbitrária?
F
fernandesleandro
sim,
eu tenho,
initComponents();
GLCanvas canvas = new GLCanvas();
dai eu desenho tipo um triangulo e depois vou querer no click do mouse recuperar a cor do pixel de dentro do triangulo.
ViniGodoy
Ok, se vc quer só recuperar a cor do triängulo, então é do backbuffer que estamos falando. É só usar o método que eu te passei.
Use ela para ler um carro de bytes. Cada 3 ou 4 bytes (dependendo se vc tem alfa ou não) representam cada canal de cor. Se quiser transformar essas cores num int, é só fazer:
ok.
como se faz?
gl.glReadPixels(start_x,start_y,width,height,gl.GL_LUMINANCE,gl.GL_INT,0);
int cor = r;
cor = (cor << 8) + g;
cor = (cor << 8) + b;
cor = (cor << 8) + a;
de onde vem rgba?
desse jeito eu posso ir pegando a cor pixel a pixel? pq eu preciso saber, para q o algoritmo possa ir pintando ou não, pixel a pixel
desculpe eu sou novo nesse negocio de usar openGL
ViniGodoy
É melhor você começar a estudar o básico, antes de tentar voos mais altos, então.
Pega o meu site e lê os artigos sobre cores, luzes, transformações.
Infelizmente ainda não escrevi sobre os diversos buffers do OpenGL (preferi uma abordagem mais prática).
Procure sobre os diversos buffers do OpenGL: BackBuffer, ClipBuffer, TextureBuffer, etc.
F
fernandesleandro
Vinni,
Como eu sei se um pixel esta pintado ou não na tela? como verifico isso?
isto é, alguma função que me retorne: int cor = getCor_da_Coordenada(x,y);