I run the following tiny program on Android:
function love.load()
font = love.graphics.newFont(36)
love.graphics.setFont(font)
end
function love.draw()
love.graphics.setBackgroundColor(120,120,120)
love.graphics.print("Hello World!", 400, 300)
end
The above works fine if I run it on my linux development box.
But with 0.10.0 on Android, I just get black blocks, the right size for each of the characters in the string I am printing.
Has anyone seen this? Do you know how I can fix it?
Thanks!
Greg Johnson
On Android, love.graphics.print() just shows black blocks
Forum rules
Before you make a thread asking for help, read this.
Before you make a thread asking for help, read this.
-
- Prole
- Posts: 5
- Joined: Wed Dec 23, 2015 9:21 pm
-
- Party member
- Posts: 730
- Joined: Sat Apr 26, 2014 7:46 pm
Re: On Android, love.graphics.print() just shows black block
What device are testing on? Maybe if it's too old it would have issues.
-
- Prole
- Posts: 5
- Joined: Wed Dec 23, 2015 9:21 pm
Re: On Android, love.graphics.print() just shows black block
It is a Samsung Galaxy Tab4 tablet, running Android 4.4.2. I just bought it about a month ago.
Thanks,
Greg J.
Thanks,
Greg J.
- slime
- Solid Snayke
- Posts: 3163
- Joined: Mon Aug 23, 2010 6:45 am
- Location: Nova Scotia, Canada
- Contact:
Re: On Android, love.graphics.print() just shows black block
Weird, it shouldn't be doing that.
If you run this instead, does it output pure white blocks instead of black blocks? (Trying to narrow down where the problem might be):
Does it draw regular images fine? e.g. this code should make it display a blue gradient at the top-left of the screen:
If you run this instead, does it output pure white blocks instead of black blocks? (Trying to narrow down where the problem might be):
Code: Select all
function love.load()
font = love.graphics.setNewFont(36)
shader = love.graphics.newShader[[
vec4 effect(vec4 color, Image tex, vec2 texcoord, vec2 pixcoord)
{
return vec4(1.0);
}
]]
end
function love.draw()
love.graphics.setBackgroundColor(120,120,120)
love.graphics.setShader(shader)
love.graphics.print("Hello World!", 400, 300)
end
Code: Select all
imagedata = love.image.newImageData(256, 256)
imagedata:mapPixel(function(x, y, r, g, b, a)
return x, 0, 0, 255
end)
image = love.graphics.newImage(imagedata)
function love.draw()
love.graphics.draw(image, 0, 0)
end
-
- Prole
- Posts: 5
- Joined: Wed Dec 23, 2015 9:21 pm
Re: On Android, love.graphics.print() just shows black block
Your first test program generates all white boxes.
Your second test program just gives a black screen.
I did an experiment with .png images also. Grabbed a png of Walter White and wrote a tiny sample program to load and display it. The program worked fine on my linux development box, but just gave a black screen with no visible image on the Android.
Greg
Your second test program just gives a black screen.
I did an experiment with .png images also. Grabbed a png of Walter White and wrote a tiny sample program to load and display it. The program worked fine on my linux development box, but just gave a black screen with no visible image on the Android.
Greg
- slime
- Solid Snayke
- Posts: 3163
- Joined: Mon Aug 23, 2010 6:45 am
- Location: Nova Scotia, Canada
- Contact:
Re: On Android, love.graphics.print() just shows black block
It seems images either aren't loading or aren't drawing properly – it could be a video driver bug. Do other non-LÖVE games run fine on your device?
Can you run this and paste the output? See here for getting print output on Android: https://bitbucket.org/MartinFelis/love- ... iki/Logcat
Can you run this and paste the output? See here for getting print output on Android: https://bitbucket.org/MartinFelis/love- ... iki/Logcat
Code: Select all
print("Renderer info: ", love.graphics.getRendererInfo())
print("\nCanvas formats:")
for k,v in pairs(love.graphics.getCanvasFormats()) do
print(k.." supported? "..tostring(v))
end
-
- Prole
- Posts: 5
- Joined: Wed Dec 23, 2015 9:21 pm
Re: On Android, love.graphics.print() just shows black block
Here is the output of the program:
All of those "false" entries probably explain a lot! I downloaded the love android source and have an Android SDK set up on my linux machine. If you want to suggest a patch or a place to look in the love android source code, I'd be happy to update, rebuild, and let you know how that goes.
Possible explanation????? The love Android code needs to do the query of the system it is running on similar to what you did above (but presumably in java), and then configure the love APK to use one of the available ones.
Thanks a million,
Greg Johnson
Code: Select all
adb logcat | \fgrep LOVE
I/SDL/APP ( 6797): [LOVE] Renderer info: OpenGL ES OpenGL ES 2.0 Vivante Corporation Vivante GC1000
I/SDL/APP ( 6797): [LOVE]
I/SDL/APP ( 6797): [LOVE] rgb10a2 supported? false
I/SDL/APP ( 6797): [LOVE] r32f supported? false
I/SDL/APP ( 6797): [LOVE] rgba4 supported? true
I/SDL/APP ( 6797): [LOVE] r16f supported? false
I/SDL/APP ( 6797): [LOVE] r8 supported? false
I/SDL/APP ( 6797): [LOVE] rg32f supported? false
I/SDL/APP ( 6797): [LOVE] rgba32f supported? false
I/SDL/APP ( 6797): [LOVE] rgba8 supported? true
I/SDL/APP ( 6797): [LOVE] rgb565 supported? true
I/SDL/APP ( 6797): [LOVE] normal supported? true
I/SDL/APP ( 6797): [LOVE] rgba16f supported? false
I/SDL/APP ( 6797): [LOVE] rg16f supported? false
I/SDL/APP ( 6797): [LOVE] rgb5a1 supported? true
I/SDL/APP ( 6797): [LOVE] hdr supported? false
I/SDL/APP ( 6797): [LOVE] rg8 supported? false
I/SDL/APP ( 6797): [LOVE] srgb supported? false
I/SDL/APP ( 6797): [LOVE] rg11b10f supported? false
Possible explanation????? The love Android code needs to do the query of the system it is running on similar to what you did above (but presumably in java), and then configure the love APK to use one of the available ones.
Thanks a million,
Greg Johnson
- slime
- Solid Snayke
- Posts: 3163
- Joined: Mon Aug 23, 2010 6:45 am
- Location: Nova Scotia, Canada
- Contact:
Re: On Android, love.graphics.print() just shows black block
It's actually to be expected – there are a fair amount of Canvas formats with niche uses which are only supported by a small amount of mobile devices.greg.johnson wrote:All of those "false" entries probably explain a lot! I downloaded the love android source and have an Android SDK set up on my linux machine. If you want to suggest a patch or a place to look in the love android source code, I'd be happy to update, rebuild, and let you know how that goes.
Unfortunately I still don't know what the problem could be beyond 'graphics driver bug related to textures'.
Out of curiosity, does this work? It should display two untextured dark green circles.
Code: Select all
shader = love.graphics.newShader[[
vec4 effect(vec4 color, Image tex, vec2 texcoord, vec2 pixcoord)
{
return color;
}
]]
function love.draw()
love.graphics.setColor(0, 255, 0, 128)
love.graphics.setShader(shader)
love.graphics.circle("fill", 100, 100, 100)
love.graphics.setShader()
love.graphics.circle("fill", 200, 100, 100)
end
-
- Prole
- Posts: 5
- Joined: Wed Dec 23, 2015 9:21 pm
Re: On Android, love.graphics.print() just shows black block
The program shows a single green circle, not two circles. The overlap region of the two circles is a darker green.
I ran the same program on my linux box and it looked different. On linux, there were two dark green circles,
with a light green overlap.
I ran the same program on my linux box and it looked different. On linux, there were two dark green circles,
with a light green overlap.
- slime
- Solid Snayke
- Posts: 3163
- Joined: Mon Aug 23, 2010 6:45 am
- Location: Nova Scotia, Canada
- Contact:
Re: On Android, love.graphics.print() just shows black block
So textures just aren't working (the rightmost circle actually samples from a 1x1 white texture). Do other non-LÖVE games run fine? If it is a driver bug (which seems very likely), updating your Android version could fix it if it includes updated graphics drivers.
Who is online
Users browsing this forum: Bing [Bot], Google [Bot] and 1 guest