Jump to content
  • Advertisement
Sign in to follow this  
AlexPowerUp

Circular HP bar (OpenGL)

This topic is 2127 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I was trying to make a circular HP bar using OpenGL with SDL, like this:
4uis3.jpg

It's Touhou 14 BTW.

For that the game uses a single image, which is this the attached file.

I suppose that the pink lines are the life bar itself and the blue thing is for marking in the lifebar how much damage you must do to trigger the spellcard. But, how can i do a circle using that image in a polygon shape?

Share this post


Link to post
Share on other sites
Advertisement

Hi!

 

The possible solution is to prerender the circle in some editor, add a gradient in alpha layer. Write a shader to render the circle on a quad and add a uniform for setting an alpha threshold value. 

 

Thanks!

Share this post


Link to post
Share on other sites

Hi!

 

The possible solution is to prerender the circle in some editor, add a gradient in alpha layer. Write a shader to render the circle on a quad and add a uniform for setting an alpha threshold value. 

 

Thanks!

But the game only uses that image to create the circle. My question is what is doing the game to render that. But thanks anyway ^^

BTW, that game uses DirectX but i am trying to do it with OpenGL.

Edited by AlexPowerUp

Share this post


Link to post
Share on other sites

If you look at the lack of anti-aliasing on the edges of the circle, it appears that they are drawing a hollow circle the hard way (i.e. specifying an inner and outer circle of vertices, and a series of quads along the radius), and then applying the texture across that circle.

Share this post


Link to post
Share on other sites

It seems like they might be stretching the texture around some hollow circles but I wonder how they make the health look like it is going down. There seems to be no gap in the image to stretch and yet the borders are solid throughout.

 

The only way I could see them doing it is 3 separate circles. A red inner one (using the right side of the texture). A White middle one (which is reshaped depending on health amount and using the left side of the texture) and then a red outer one.

 

Reshaping the middle white area would not be particularly easy though since there will be quite a few vertices.

Edited by Karsten_

Share this post


Link to post
Share on other sites

I think swift is right on this one. It looks like they just made a flat ring and they're applying the texture to it. You can adjust the displayed health level by just clipping how many verts you render. If you make the mesh out of 100 'cells', each having four verts and proceeding counter-clockwise, then you just render the first HP% * 4 verts of the mesh. The 'empty' section of the ring is probably just drawn underneath it.

 

However, the entire scenario is really moot, because there are no buses in Gensokyo.

Share this post


Link to post
Share on other sites

The Lord of the Rings: Return of the King game (EA, 2003) also has a circular meter which impressed me a lot, as it's such an usual shape for a meter.

 

16h6jxh.jpg

 

That is, until I realized the functionality named  "Stencil testing". You set up the stencil buffer, draw a polygon marking the region you want the life content to appear (or not appear, depends on the stencil function), draw the content that's going to be stencil-tested and as last step you draw the life bar's frame or edges on top.

 

• You can do it directly as a textured mesh that's vertex-animated as has been suggested above, and I agree that it's what the game you're referring to is using - based on the small textures employed that only have a "slice" of what the entire graphic should be.

 

• Using the aforementioned stencil test and dedicated sprites gives you more graphical quality: you can have your artist embelish the life bar and life content designs with patterns and ornaments. This is good for circular\round meters, life-bars, counters and in fact any shape of graphic you want. If you have square or rectangular shapes, you can also use a scissor test which I think it's a bit faster and simpler to set up.

I used stenciling with a circular meter for a game, as a composite of sprites and one of the sprites was stencil-tested so as to look cut-off:

 

dbldet.png

 

The above is just a mockup. It looked like this in the game:

 

2h8d7yg.jpg

 

http://en.wikibooks.org/wiki/OpenGL_Programming/Stencil_buffer#Sample

http://research.ncl.ac.uk/game/mastersdegree/graphicsforgames/scissorsandstencils/Tutorial%205%20-%20Scissors%20and%20Stencils.pdf#page=7

Edited by Kryzon

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!