Circular HP bar (OpenGL)

Started by
6 comments, last by AlexPowerUp 10 years, 7 months ago

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?

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!

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.

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.

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]

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.

http://tinyurl.com/shewonyay - Thanks so much for those who voted on my GF's Competition Cosplay Entry for Cosplayzine. She won! I owe you all beers :)

Mutiny - Open-source C++ Unity re-implementation.
Defile of Eden 2 - FreeBSD and OpenBSD binaries of our latest game.

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.

void hurrrrrrrr() {__asm sub [ebp+4],5;}

There are ten kinds of people in this world: those who understand binary and those who don't.

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

...

OMG thanks now i am doing it that way <3

This topic is closed to new replies.

Advertisement