Jump to content

  • Log In with Google      Sign In   
  • 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.

  • You cannot reply to this topic
4 replies to this topic

#1 vivendi   Members   -  Reputation: 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?



Sponsor:

#2 HappyCoder   Members   -  Reputation: 2662

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?



#3 vivendi   Members   -  Reputation: 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 };



#4 L. Spiro   Crossbones+   -  Reputation: 13576

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.

It is amazing how often people try to be unique, and yet they are always trying to make others be like them. - L. Spiro 2011
I spent most of my life learning the courage it takes to go out and get what I want. Now that I have it, I am not sure exactly what it is that I want. - L. Spiro 2013
I went to my local Subway once to find some guy yelling at the staff. When someone finally came to take my order and asked, “May I help you?”, I replied, “Yeah, I’ll have one asshole to go.”
L. Spiro Engine: http://lspiroengine.com
L. Spiro Engine Forums: http://lspiroengine.com/forums

#5 JohnnyCode   Members   -  Reputation: 215

Like
0Likes
Like

Posted 21 June 2014 - 10:22 AM

cube is not a quad.

 

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.



PARTNERS