Followers 0

# Show an image of any size

## 4 posts in this topic

I want to know if it's possible to simply display an image fullscreen. For example, I have two images. One has the size 1900x500 and the other 2440x940.

I'm developing for mobile devices, so those resolutions are way to big compared to the resolutions most phones have right now. So that's why I'd like to "resize" those images so they entirely fit on the screen, keeping its aspect ratio.

But I have no idea how to do this. All I can find is how to convert an image to a texture and display that on two triangles. But I assume that it should be possible to simply display an image on the screen without the need of a 3d object

If so, then how can I do this?

0

##### Share on other sites

What platform are you using?

Showing the image using a 3D object is a perfectly acceptable solution. In fact, this would give you hardware acceleration making the interface more responsive and probably use less battery.

Could you post some code of what you have so far?

0

##### Share on other sites

I'm developing for Android right now. Currently I use a cube to render a bitmap as texture onto it. The image is quite small, 800x400 and that works fine. Then I tried it with a large image (2400x1630) and for some reason it didn't show. (I'll try to find out later why).

But the actual problem is that the texture is mapped over the entire cube. I'd like to map it in such a way that the image keeps its aspect ratio.

These are my position data for the cube and the texture:

final float[] cubePositionData = {
// Front face
-1.0f, 1.0f, 1.0f,
-1.0f, -1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
-1.0f, -1.0f, 1.0f,
1.0f, -1.0f, 1.0f,
1.0f, 1.0f, 1.0f };

final float[] cubeTextureCoordinateData = {
// Front face
0.0f, 0.0f, 0.0f,
1.0f, 1.0f, 0.0f,
0.0f, 1.0f, 1.0f,
1.0f, 1.0f, 0.0f };


0

##### Share on other sites
Verify that the device supports textures of that size.

GLint iTemp = 128;
::glGetIntegerv( GL_MAX_TEXTURE_SIZE, &iTemp );
If not, you don’t have the option of using it as a texture unless you resize it.
There are free open-source libraries that can resize images for you, or you can write a very basic one that resamples down in increments of 50% using a very simple box filter.

L. Spiro Edited by L. Spiro
0

##### Share on other sites

In case you want to scale down the image, you would better use mipmaps as displaying 2400x1800 image on a 800x600 pixels is quite performance hard without mipmaps. But for that you would have to have the image to be of power of 2 dimensions. So In case you cannot achivee that, use min filter of nearest filtering (in case image does not move) and do not build mipmaps.

For keeping the ratio aspect of image, just perform width/height value , or height/width value, depending on which is lesser than one, and then multiply x component of position coordinates you have builded in snippet (or y component).

0

## Create an account

Register a new account