12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- //-----------------------------------------------------------------------------
- // Copyright (c) 2012 GarageGames, LLC
- //
- // Permission is hereby granted, free of charge, to any person obtaining a copy
- // of this software and associated documentation files (the "Software"), to
- // deal in the Software without restriction, including without limitation the
- // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- // sell copies of the Software, and to permit persons to whom the Software is
- // furnished to do so, subject to the following conditions:
- //
- // The above copyright notice and this permission notice shall be included in
- // all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- // IN THE SOFTWARE.
- //-----------------------------------------------------------------------------
- #ifndef _PRIMBUILDER_H_
- #define _PRIMBUILDER_H_
- #include "gfx/gfxVertexBuffer.h"
- //**************************************************************************
- //
- //**************************************************************************
- /// Primitive Builder.
- ///
- /// A simple interface to put together lines and polygons
- /// quickly and easily - OpenGL style. This is basically
- /// a convenient way to fill a vertex buffer, then draw it.
- ///
- /// There are two ways to use it. You can use the begin()
- /// and end() calls to have it draw immediately after calling
- /// end(). This is the "OpenGL" or "immediate" style of usage.
- ///
- /// The other way to use this is to use the beginToBuffer()
- /// and endToBuffer() calls, which let you store the
- /// results of your intermediate calls for later use.
- /// This is much more efficient than using the immediate style.
- ///
- namespace PrimBuild
- {
- extern const ColorI _colWhite;
- void beginToBuffer( GFXPrimitiveType type, U32 maxVerts );
- GFXVertexBuffer *endToBuffer( U32 &outNumPrims );
- void begin( GFXPrimitiveType type, U32 maxVerts );
- void end( bool useGenericShaders = true );
- void vertex2f( F32 x, F32 y );
- void vertex3f( F32 x, F32 y, F32 z );
- void vertex2fv( const F32 *data );
- inline void vertex2fv( const Point2F &pnt ) { vertex2fv( (F32 *) &pnt ); };
- inline void vertex2fv( const Point2F *pnt ) { vertex2fv( (F32 *) pnt ); };
- void vertex3fv( const F32 *data );
- inline void vertex3fv( const Point3F &pnt ) { vertex3fv( (F32 *) &pnt ); };
- inline void vertex3fv( const Point3F *pnt ) { vertex3fv( (F32 *) pnt ); };
- inline void vertex2i( S32 x, S32 y ) { vertex2f((F32)x, (F32)y); }
- inline void vertex3i( S32 x, S32 y, S32 z ) { vertex3f((F32)x, (F32)y, (F32)z); }
- void color( const ColorI & );
- void color( const LinearColorF & );
- void color3i( U8 red, U8 green, U8 blue );
- void color4i( U8 red, U8 green, U8 blue, U8 alpha );
- void color3f( F32 red, F32 green, F32 blue );
- void color4f( F32 red, F32 green, F32 blue, F32 alpha );
- inline void colorWhite() { color( _colWhite ); }
- void texCoord2f( F32 x, F32 y );
- void shutdown();
- }
- #endif
|