## Pixel under cursor

Questions about the LÖVE API, installing LÖVE and other support related questions go here.
Forum rules
Lap
Party member
Posts: 256
Joined: Fri Apr 30, 2010 3:46 pm

### Pixel under cursor

Trying to track all the individual images and which one is on top can be a bit of a pain. We have a way to get the pixel from an ImageData, but not from absolute coordinates of the full display.

Any thoughts on an engine level function love.graphics.getPixel(x,y)? Is this even technically possible?
nevon
Commander of the Circuloids
Posts: 938
Joined: Thu Feb 14, 2008 8:25 pm
Location: Stockholm, Sweden
Contact:

### Re: Pixel under cursor

Code: Select all

screen = love.graphics.newScreenshot()
r,g,b,a = screen:getPixel(x,y)
miko
Party member
Posts: 410
Joined: Fri Nov 26, 2010 2:25 pm
Location: PL

### Re: Pixel under cursor

Lap wrote:Trying to track all the individual images and which one is on top can be a bit of a pain. We have a way to get the pixel from an ImageData, but not from absolute coordinates of the full display.

Any thoughts on an engine level function love.graphics.getPixel(x,y)? Is this even technically possible?
love.graphics.newScreenshot? But it is better to remember the positions and dimensions of the images, and check for collisions between them.
My lovely code lives at GitHub: http://github.com/miko/Love2d-samples
vrld
Party member
Posts: 917
Joined: Sun Apr 04, 2010 9:14 pm
Location: Germany
Contact:

### Re: Pixel under cursor

Lap wrote:Any thoughts on an engine level function love.graphics.getPixel(x,y)? Is this even technically possible?
Not in a reasonably fast way, because LÖVE uses OpenGL and OpenGL does not allow direct access to the pixels on the screen. The only way to get to those pixels is to copy them from graphics memory to RAM, which is exactly what love.graphics.newScreenshot() does.
I have come here to chew bubblegum and kick ass... and I'm all out of bubblegum.

hump | HC | SUIT | moonshine
Lap
Party member
Posts: 256
Joined: Fri Apr 30, 2010 3:46 pm

### Re: Pixel under cursor

Exactly the clarification I was looking fro vlrd. Thanks.
Prole
Posts: 16
Joined: Sat Dec 10, 2011 2:57 pm
Location: Netherlands

### Re: Pixel under cursor

Isn't it also possible to first draw everything on a framebuffer and then get the imagedata from that and get a pixel from that?

Code: Select all

function love.draw()
love.graphics.setRenderTarget(FB1)

--draw stuff

love.graphics.setRenderTarget()
love.graphics.draw(FB1, 0, 0)

local data = FB1:getImageData()
r, g, b, a = data:getPixel(mouse.x, mouse.y)
end
I think this is slower than the screenshot way, though.
Xgoff
Party member
Posts: 211
Joined: Fri Nov 19, 2010 4:20 am

### Re: Pixel under cursor

Metalcookie wrote:Isn't it also possible to first draw everything on a framebuffer and then get the imagedata from that and get a pixel from that?

Code: Select all

function love.draw()
love.graphics.setRenderTarget(FB1)

--draw stuff

love.graphics.setRenderTarget()
love.graphics.draw(FB1, 0, 0)

local data = FB1:getImageData()
r, g, b, a = data:getPixel(mouse.x, mouse.y)
end
I think this is slower than the screenshot way, though.
i wouldn't think it'd be much different, since iirc the "screen" itself is technically a framebuffer

### Who is online

Users browsing this forum: Bing [Bot] and 28 guests