• Create Account

## Show an image of any size

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

4 replies to this topic

### #1vivendi  Members

123
Like
0Likes
Like

Posted 19 June 2014 - 11:33 AM

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?

### #2HappyCoder  Members

4736
Like
0Likes
Like

Posted 19 June 2014 - 12:45 PM

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?

My current game project Platform RPG

### #3vivendi  Members

123
Like
0Likes
Like

Posted 19 June 2014 - 02:22 PM

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 };



### #4L. Spiro  Members

24826
Like
0Likes
Like

Posted 19 June 2014 - 08:38 PM

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, 19 June 2014 - 08:40 PM.

### #5JohnnyCode  Members

1058
Like
0Likes
Like

Posted 21 June 2014 - 10:22 AM

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).

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.