Rendering 2D sprites in a 3D world?

后端 未结 7 1168
情深已故
情深已故 2021-01-03 01:17

How do I render 2D sprites in OpenGL given that I have a png of the sprite? See images as an example of the effect I\'d like to achieve. Also I would like to overlay weapo

相关标签:
7条回答
  • 2021-01-03 01:36

    a) For the first case:

    That's not really 2D sprites. Those men seem to be rendered as single quads with a texture with some kind of transparency (either alpha test or alpha blending).

    Anyway, even a single quad can still be considered a 3D object, so for such situation you might want to treat it as one: track its translation and rotation and render it in the same way as any other 3D object.

    b) For the second case:

    If you want the gun (a 2D picture, I pressume) to be rendered in the same place without any perspective transformation, then you can use the same technique one uses for drawing the GUI (etc). Have a look at my post here:

    2D overlay on a 3D scene

    0 讨论(0)
  • 2021-01-03 01:44

    For the overlaying of the 2D weapon, you can use glOrtho for the camera view.

    0 讨论(0)
  • 2021-01-03 01:45

    In 3D terms, this is called a "billboard". A billboard is completely flat 2D plane with a texture on it and it always faces the camera.

    See here for a pure OpenGL implementation: http://nehe.gamedev.net/data/articles/article.asp?article=19

    Just about any 3D engine should be able to do them by default. Ogre3D can do it, for instance.

    0 讨论(0)
  • 2021-01-03 01:50

    Take a look at OpenGL Point Sprites:

    http://www.informit.com/articles/article.aspx?p=770639&seqNum=7

    Especially useful for partical systems but may do the trick for your purposes.

    0 讨论(0)
  • 2021-01-03 01:55

    Check this tutorial about billboards. I think you'll find useful. http://www.lighthouse3d.com/opengl/billboarding/

    0 讨论(0)
  • 2021-01-03 01:56

    You create a 3d quad and map the .png-based texture to it. You can make the quad face whatever direction you want, as in the first picture, or make it always facing the camera (like a billboard, mentioned by Svenstaro) as in your second picture. Though, to be fair, I am sure that second picture just blitted the image (with some scaling) directly in the software-created framebuffer (that looks like Wolf3d tech, software rendering).

    0 讨论(0)
提交回复
热议问题