mirror of
https://github.com/SpartanJ/eepp.git
synced 2026-08-14 13:15:14 +03:00
Added support for multitexture binding.
Added some functions for tex env managing. Modified some enum names from renders. Added a pixel separator for characters in the ttf creation ( optional ). Moved some OpenGL and GLEW things to cGL, this is for a future implementation with OpenGL ES and without GLEW. Tryed to fix a bad rendering bug when clipping controls with borders ( borders disappear ), i think that the hack is working. Modified some name conventions.
This commit is contained in:
@@ -152,6 +152,8 @@
|
||||
<Unit filename="src/graphics/cvertexbuffervbo.cpp" />
|
||||
<Unit filename="src/graphics/cvertexbuffervbo.hpp" />
|
||||
<Unit filename="src/graphics/fonthelper.hpp" />
|
||||
<Unit filename="src/graphics/glhelper.cpp" />
|
||||
<Unit filename="src/graphics/glhelper.hpp" />
|
||||
<Unit filename="src/graphics/packerhelper.hpp" />
|
||||
<Unit filename="src/graphics/pixelperfect.cpp" />
|
||||
<Unit filename="src/graphics/pixelperfect.hpp" />
|
||||
|
||||
11
src/base.hpp
11
src/base.hpp
@@ -53,6 +53,10 @@
|
||||
# define EE_PLATFORM EE_PLATFORM_LINUX
|
||||
#endif
|
||||
|
||||
#if EE_PLATFORM == EE_PLATFORM_WIN32 || EE_PLATFORM == EE_PLATFORM_MACOSX || EE_PLATFORM == EE_PLATFORM_LINUX
|
||||
#define EE_GLEW_AVAILABLE
|
||||
#endif
|
||||
|
||||
#ifdef EE_PLATFORM
|
||||
#define EE_SUPPORTED_PLATFORM
|
||||
#endif
|
||||
@@ -91,15 +95,16 @@
|
||||
#define EE_API
|
||||
#endif
|
||||
|
||||
#ifdef EE_GLEW_AVAILABLE
|
||||
#include "helper/glew/glew.h"
|
||||
#endif
|
||||
|
||||
#if EE_PLATFORM == EE_PLATFORM_MACOSX
|
||||
#include <OpenGL/gl.h>
|
||||
#else
|
||||
#include <GL/gl.h>
|
||||
#endif
|
||||
|
||||
#include "base/base.hpp"
|
||||
|
||||
namespace EE {
|
||||
#define eeARRAY_SIZE(__array) ( sizeof(__array) / sizeof(__array[0]) )
|
||||
#define eeSAFE_DELETE(p) { if(p) { eeDelete (p); (p)=NULL; } }
|
||||
@@ -121,4 +126,6 @@ namespace EE {
|
||||
#endif
|
||||
}
|
||||
|
||||
#include "base/base.hpp"
|
||||
|
||||
#endif
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
namespace EE {
|
||||
|
||||
#ifdef EE_MEMORY_MANAGER
|
||||
static std::string SizeToString( const unsigned int& MemSize ) {
|
||||
std::string size = " bytes";
|
||||
double mem = static_cast<double>( MemSize );
|
||||
@@ -28,6 +29,7 @@ static std::string SizeToString( const unsigned int& MemSize ) {
|
||||
|
||||
return std::string( ss.str() + size );
|
||||
}
|
||||
#endif
|
||||
|
||||
tAllocatedPointerMap MemoryManager::mMapPointers;
|
||||
size_t MemoryManager::mTotalMemoryUsage = 0;
|
||||
|
||||
@@ -57,12 +57,13 @@ namespace EE {
|
||||
#endif
|
||||
};
|
||||
|
||||
typedef eeVector<Uint8>::type eeVectorUint8;
|
||||
typedef eeVector<Uint16>::type eeVectorUint16;
|
||||
typedef eeVector<Uint32>::type eeVectorUint32;
|
||||
typedef eeVector<Int8>::type eeVectorInt8;
|
||||
typedef eeVector<Int16>::type eeVectorInt16;
|
||||
typedef eeVector<Int32>::type eeVectorInt32;
|
||||
typedef eeVector<Uint8>::type eeVectorUint8;
|
||||
typedef eeVector<Uint16>::type eeVectorUint16;
|
||||
typedef eeVector<Uint32>::type eeVectorUint32;
|
||||
typedef eeVector<Int8>::type eeVectorInt8;
|
||||
typedef eeVector<Int16>::type eeVectorInt16;
|
||||
typedef eeVector<Int32>::type eeVectorInt32;
|
||||
typedef eeVector<eeFloat>::type eeVectorFloat;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -149,7 +149,6 @@ void cIsoMap::Draw() {
|
||||
}
|
||||
|
||||
TF->Bind( T->Layers[L] );
|
||||
TF->SetBlendFunc(ALPHA_NORMAL);
|
||||
|
||||
glColorPointer( 3, GL_UNSIGNED_BYTE, 0, reinterpret_cast<char*>( T ) );
|
||||
glVertexPointer( 2, GL_FLOAT, 0, reinterpret_cast<char*>( T ) + sizeof(eeColor) * 4 );
|
||||
@@ -181,7 +180,7 @@ void cIsoMap::Draw() {
|
||||
|
||||
if ( Intersect( ScreenAABB, ShadowAABB ) ) {
|
||||
//AABB ShadowAABB_RECT( OffsetX + ObjPos.x, OffsetY + TileCenter.y - Tex->Height(), OffsetX + TileCenter.x + Tex->Width(), OffsetY + TileCenter.y );
|
||||
//PR.DrawRectangle( ShadowAABB_RECT, 0, 1, DRAW_LINE );
|
||||
//PR.DrawRectangle( ShadowAABB_RECT, 0, 1, EE_DRAW_LINE );
|
||||
Tex->DrawEx( OffsetX + ObjPos.x, OffsetY + ObjPos.y, (eeFloat)Tex->ImgWidth(), (eeFloat)Tex->ImgHeight(), 0, 1, SC, SC, SC, SC, ALPHA_NORMAL, RN_ISOMETRIC );
|
||||
}
|
||||
|
||||
@@ -207,7 +206,7 @@ void cIsoMap::Draw() {
|
||||
}
|
||||
}
|
||||
|
||||
PR.DrawQuad( Tile( MouseTilePos.x, MouseTilePos.y ).Q, DRAW_LINE, ALPHA_NORMAL, 1.0f, OffsetX, OffsetY );
|
||||
PR.DrawQuad( Tile( MouseTilePos.x, MouseTilePos.y ).Q, EE_DRAW_LINE, ALPHA_NORMAL, 1.0f, OffsetX, OffsetY );
|
||||
}
|
||||
|
||||
void cIsoMap::Move( const eeFloat& offsetx, const eeFloat& offsety ) {
|
||||
|
||||
@@ -7,7 +7,7 @@ cBatchRenderer::cBatchRenderer() :
|
||||
mNumVertex(0),
|
||||
mTexture(NULL),
|
||||
mBlend(ALPHA_NORMAL),
|
||||
mCurrentMode(EE_DT_QUADS),
|
||||
mCurrentMode(DM_QUADS),
|
||||
mRotation(0.0f),
|
||||
mScale(1.0f),
|
||||
mPosition(0.0f, 0.0f),
|
||||
@@ -23,7 +23,7 @@ cBatchRenderer::cBatchRenderer( const eeUint& Prealloc ) :
|
||||
mNumVertex(0),
|
||||
mTexture(NULL),
|
||||
mBlend(ALPHA_NORMAL),
|
||||
mCurrentMode(EE_DT_QUADS),
|
||||
mCurrentMode(DM_QUADS),
|
||||
mRotation(0.0f),
|
||||
mScale(1.0f),
|
||||
mPosition(0.0f, 0.0f),
|
||||
@@ -63,7 +63,7 @@ void cBatchRenderer::SetTexture( const cTexture * Tex ) {
|
||||
mTexture = Tex;
|
||||
}
|
||||
|
||||
void cBatchRenderer::SetBlendFunc( const EE_RENDERALPHAS& Blend ) {
|
||||
void cBatchRenderer::SetPreBlendFunc( const EE_PRE_BLEND_FUNC& Blend ) {
|
||||
mBlend = Blend;
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ void cBatchRenderer::AddVertexs( const eeUint& num ) {
|
||||
Flush();
|
||||
}
|
||||
|
||||
void cBatchRenderer::SetBlendMode( EE_DRAW_TYPE Mode, const bool& Force ) {
|
||||
void cBatchRenderer::SetBlendMode( EE_DRAW_MODE Mode, const bool& Force ) {
|
||||
if ( Force && mCurrentMode != Mode ) {
|
||||
Flush();
|
||||
mCurrentMode = Mode;
|
||||
@@ -91,9 +91,9 @@ void cBatchRenderer::Flush() {
|
||||
else
|
||||
glDisable( GL_TEXTURE_2D );
|
||||
|
||||
cTextureFactory::instance()->SetBlendFunc( mBlend );
|
||||
cTextureFactory::instance()->SetPreBlendFunc( mBlend );
|
||||
|
||||
if ( mCurrentMode == EE_DT_POINTS && NULL != mTexture ) {
|
||||
if ( mCurrentMode == DM_POINTS && NULL != mTexture ) {
|
||||
glEnable( GL_POINT_SPRITE_ARB );
|
||||
glTexEnvf( GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE );
|
||||
glPointSize( (GLfloat)mTexture->Width() );
|
||||
@@ -120,7 +120,7 @@ void cBatchRenderer::Flush() {
|
||||
if ( CreateMatrix )
|
||||
glPopMatrix();
|
||||
|
||||
if ( mCurrentMode == EE_DT_POINTS && mTexture > 0 ) {
|
||||
if ( mCurrentMode == DM_POINTS && mTexture > 0 ) {
|
||||
glDisable( GL_POINT_SPRITE_ARB );
|
||||
}
|
||||
|
||||
@@ -142,7 +142,7 @@ void cBatchRenderer::BatchQuad( const eeFloat& x, const eeFloat& y, const eeFloa
|
||||
}
|
||||
|
||||
#ifndef EE_GLES
|
||||
SetBlendMode( EE_DT_QUADS, mForceBlendMode );
|
||||
SetBlendMode( DM_QUADS, mForceBlendMode );
|
||||
|
||||
mTVertex = &mVertex[ mNumVertex ];
|
||||
mTVertex->pos.x = x;
|
||||
@@ -172,7 +172,7 @@ void cBatchRenderer::BatchQuad( const eeFloat& x, const eeFloat& y, const eeFloa
|
||||
mTVertex->color = mVerColor[3];
|
||||
Rotate(center, &mTVertex->pos, angle);
|
||||
#else
|
||||
SetBlendMode( EE_DT_TRIANGLE_STRIP, mForceBlendMode );
|
||||
SetBlendMode( DM_TRIANGLE_STRIP, mForceBlendMode );
|
||||
|
||||
mTVertex = &mVertex[ mNumVertex ];
|
||||
mTVertex->pos.x = x;
|
||||
@@ -232,7 +232,7 @@ void cBatchRenderer::BatchQuadEx( const eeFloat& x, const eeFloat& y, const eeFl
|
||||
center.y += y;
|
||||
|
||||
#ifndef EE_GLES
|
||||
SetBlendMode( EE_DT_QUADS, mForceBlendMode );
|
||||
SetBlendMode( DM_QUADS, mForceBlendMode );
|
||||
|
||||
mTVertex = &mVertex[ mNumVertex ];
|
||||
mTVertex->pos.x = mx;
|
||||
@@ -262,7 +262,7 @@ void cBatchRenderer::BatchQuadEx( const eeFloat& x, const eeFloat& y, const eeFl
|
||||
mTVertex->color = mVerColor[3];
|
||||
Rotate(center, &mTVertex->pos, angle);
|
||||
#else
|
||||
SetBlendMode( EE_DT_TRIANGLE_STRIP, mForceBlendMode );
|
||||
SetBlendMode( DM_TRIANGLE_STRIP, mForceBlendMode );
|
||||
|
||||
mTVertex = &mVertex[ mNumVertex ];
|
||||
mTVertex->pos.x = mx;
|
||||
@@ -301,7 +301,7 @@ void cBatchRenderer::BatchQuadFree( const eeFloat& x0, const eeFloat& y0, const
|
||||
return;
|
||||
|
||||
#ifndef EE_GLES
|
||||
SetBlendMode( EE_DT_QUADS, mForceBlendMode );
|
||||
SetBlendMode( DM_QUADS, mForceBlendMode );
|
||||
|
||||
mTVertex = &mVertex[ mNumVertex ];
|
||||
mTVertex->pos.x = x0;
|
||||
@@ -327,7 +327,7 @@ void cBatchRenderer::BatchQuadFree( const eeFloat& x0, const eeFloat& y0, const
|
||||
mTVertex->tex = mTexCoord[3];
|
||||
mTVertex->color = mVerColor[3];
|
||||
#else
|
||||
SetBlendMode( EE_DT_TRIANGLE_STRIP, mForceBlendMode );
|
||||
SetBlendMode( DM_TRIANGLE_STRIP, mForceBlendMode );
|
||||
|
||||
mTVertex = &mVertex[ mNumVertex ];
|
||||
mTVertex->pos.x = x0;
|
||||
@@ -397,7 +397,7 @@ void cBatchRenderer::BatchQuadFreeEx( const eeFloat& x0, const eeFloat& y0, cons
|
||||
mQ = RotateQuadCentered( mQ, Angle, QCenter );
|
||||
|
||||
#ifndef EE_GLES
|
||||
SetBlendMode( EE_DT_QUADS, mForceBlendMode );
|
||||
SetBlendMode( DM_QUADS, mForceBlendMode );
|
||||
|
||||
mTVertex = &mVertex[ mNumVertex ];
|
||||
mTVertex->pos.x = mQ[0].x;
|
||||
@@ -423,7 +423,7 @@ void cBatchRenderer::BatchQuadFreeEx( const eeFloat& x0, const eeFloat& y0, cons
|
||||
mTVertex->tex = mTexCoord[3];
|
||||
mTVertex->color = mVerColor[3];
|
||||
#else
|
||||
SetBlendMode( EE_DT_TRIANGLE_STRIP, mForceBlendMode );
|
||||
SetBlendMode( DM_TRIANGLE_STRIP, mForceBlendMode );
|
||||
|
||||
mTVertex = &mVertex[ mNumVertex ];
|
||||
mTVertex->pos.x = mQ[0].x;
|
||||
@@ -454,7 +454,7 @@ void cBatchRenderer::BatchQuadFreeEx( const eeFloat& x0, const eeFloat& y0, cons
|
||||
}
|
||||
|
||||
void cBatchRenderer::QuadsBegin() {
|
||||
SetBlendMode( EE_DT_QUADS, true );
|
||||
SetBlendMode( DM_QUADS, true );
|
||||
QuadsSetSubset( 0, 0, 1, 1 );
|
||||
QuadsSetColor( eeColorA() );
|
||||
}
|
||||
@@ -495,7 +495,7 @@ void cBatchRenderer::Rotate( const eeVector2f& center, eeVector2f* point, const
|
||||
}
|
||||
|
||||
void cBatchRenderer::PointsBegin() {
|
||||
SetBlendMode( EE_DT_POINTS, true );
|
||||
SetBlendMode( DM_POINTS, true );
|
||||
QuadsSetSubset( 0, 0, 1, 1 );
|
||||
PointSetColor( eeColorA() );
|
||||
}
|
||||
@@ -508,7 +508,7 @@ void cBatchRenderer::BatchPoint( const eeFloat& x, const eeFloat& y ) {
|
||||
if ( mNumVertex + 1 >= mVertex.size() )
|
||||
return;
|
||||
|
||||
SetBlendMode( EE_DT_POINTS, mForceBlendMode );
|
||||
SetBlendMode( DM_POINTS, mForceBlendMode );
|
||||
|
||||
mTVertex = &mVertex[ mNumVertex ];
|
||||
mTVertex->pos.x = x;
|
||||
@@ -520,7 +520,7 @@ void cBatchRenderer::BatchPoint( const eeFloat& x, const eeFloat& y ) {
|
||||
}
|
||||
|
||||
void cBatchRenderer::LinesBegin() {
|
||||
SetBlendMode( EE_DT_LINES, true );
|
||||
SetBlendMode( DM_LINES, true );
|
||||
QuadsSetSubset( 0, 0, 1, 1 );
|
||||
PointSetColor( eeColorA() );
|
||||
}
|
||||
@@ -537,7 +537,7 @@ void cBatchRenderer::BatchLine( const eeFloat& x0, const eeFloat& y0, const eeFl
|
||||
if ( mNumVertex + 1 >= mVertex.size() )
|
||||
return;
|
||||
|
||||
SetBlendMode( EE_DT_LINES, mForceBlendMode );
|
||||
SetBlendMode( DM_LINES, mForceBlendMode );
|
||||
|
||||
mTVertex = &mVertex[ mNumVertex ];
|
||||
mTVertex->pos.x = x0;
|
||||
@@ -555,7 +555,7 @@ void cBatchRenderer::BatchLine( const eeFloat& x0, const eeFloat& y0, const eeFl
|
||||
}
|
||||
|
||||
void cBatchRenderer::LineLoopBegin() {
|
||||
SetBlendMode( EE_DT_LINE_LOOP, true );
|
||||
SetBlendMode( DM_LINE_LOOP, true );
|
||||
QuadsSetSubset( 0, 0, 1, 1 );
|
||||
PointSetColor( eeColorA() );
|
||||
}
|
||||
@@ -572,7 +572,7 @@ void cBatchRenderer::BatchLineLoop( const eeFloat& x0, const eeFloat& y0, const
|
||||
if ( mNumVertex + 1 >= mVertex.size() )
|
||||
return;
|
||||
|
||||
SetBlendMode( EE_DT_LINE_LOOP, mForceBlendMode );
|
||||
SetBlendMode( DM_LINE_LOOP, mForceBlendMode );
|
||||
|
||||
mTVertex = &mVertex[ mNumVertex ];
|
||||
mTVertex->pos.x = x0;
|
||||
@@ -597,7 +597,7 @@ void cBatchRenderer::BatchLineLoop( const eeFloat& x0, const eeFloat& y0 ) {
|
||||
if ( mNumVertex + 1 >= mVertex.size() )
|
||||
return;
|
||||
|
||||
SetBlendMode( EE_DT_LINE_LOOP, mForceBlendMode );
|
||||
SetBlendMode( DM_LINE_LOOP, mForceBlendMode );
|
||||
|
||||
mTVertex = &mVertex[ mNumVertex ];
|
||||
mTVertex->pos.x = x0;
|
||||
@@ -613,7 +613,7 @@ void cBatchRenderer::BatchLineLoop( const eeVector2f& vector1 ) {
|
||||
}
|
||||
|
||||
void cBatchRenderer::TriangleFanBegin() {
|
||||
SetBlendMode( EE_DT_TRIANGLE_FAN, true );
|
||||
SetBlendMode( DM_TRIANGLE_FAN, true );
|
||||
TriangleFanSetSubset( 0, 0, 0, 1, 1, 1 );
|
||||
TriangleFanSetColor( eeColorA() );
|
||||
}
|
||||
@@ -637,7 +637,7 @@ void cBatchRenderer::BatchTriangleFan( const eeFloat& x0, const eeFloat& y0, con
|
||||
if ( mNumVertex + 2 >= mVertex.size() )
|
||||
return;
|
||||
|
||||
SetBlendMode( EE_DT_TRIANGLE_FAN, mForceBlendMode );
|
||||
SetBlendMode( DM_TRIANGLE_FAN, mForceBlendMode );
|
||||
|
||||
mTVertex = &mVertex[ mNumVertex ];
|
||||
mTVertex->pos.x = x0;
|
||||
@@ -661,7 +661,7 @@ void cBatchRenderer::BatchTriangleFan( const eeFloat& x0, const eeFloat& y0, con
|
||||
}
|
||||
|
||||
void cBatchRenderer::TrianglesBegin() {
|
||||
SetBlendMode( EE_DT_TRIANGLES, true );
|
||||
SetBlendMode( DM_TRIANGLES, true );
|
||||
TrianglesSetSubset( 0, 0, 0, 1, 1, 1 );
|
||||
TrianglesSetColor( eeColorA() );
|
||||
}
|
||||
@@ -685,7 +685,7 @@ void cBatchRenderer::BatchTriangle( const eeFloat& x0, const eeFloat& y0, const
|
||||
if ( mNumVertex + 2 >= mVertex.size() )
|
||||
return;
|
||||
|
||||
SetBlendMode( EE_DT_TRIANGLES, mForceBlendMode );
|
||||
SetBlendMode( DM_TRIANGLES, mForceBlendMode );
|
||||
|
||||
mTVertex = &mVertex[ mNumVertex ];
|
||||
mTVertex->pos.x = x0;
|
||||
@@ -716,7 +716,7 @@ void cBatchRenderer::BatchPolygon( const eePolygon2f& Polygon ) {
|
||||
if ( Polygon.Size() > mVertex.size() )
|
||||
return;
|
||||
|
||||
SetBlendMode( EE_DT_POLYGON, mForceBlendMode );
|
||||
SetBlendMode( DM_POLYGON, mForceBlendMode );
|
||||
|
||||
for ( Uint32 i = 0; i < Polygon.Size(); i++ ) {
|
||||
mTVertex = &mVertex[ mNumVertex ];
|
||||
@@ -734,7 +734,7 @@ void cBatchRenderer::BatchPolygonByPoint( const eeFloat& x, const eeFloat& y ) {
|
||||
if ( mNumVertex + 1 >= mVertex.size() )
|
||||
return;
|
||||
|
||||
SetBlendMode( EE_DT_POLYGON, mForceBlendMode );
|
||||
SetBlendMode( DM_POLYGON, mForceBlendMode );
|
||||
|
||||
mTVertex = &mVertex[ mNumVertex ];
|
||||
mTVertex->pos.x = x;
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
|
||||
namespace EE { namespace Graphics {
|
||||
|
||||
typedef struct {
|
||||
typedef struct eeTexCoordS {
|
||||
eeFloat u;
|
||||
eeFloat v;
|
||||
} eeTexCoord;
|
||||
|
||||
typedef struct {
|
||||
typedef struct eeVertexS {
|
||||
eeVector2f pos;
|
||||
eeTexCoord tex;
|
||||
eeColorA color;
|
||||
@@ -32,8 +32,8 @@ class EE_API cBatchRenderer {
|
||||
/** Set the current texture to render on the batch ( if you change the texture and you have batched something, this will be renderer immediately ) */
|
||||
void SetTexture( const cTexture * Tex );
|
||||
|
||||
/** Set the blending functions to use on the batch */
|
||||
void SetBlendFunc( const EE_RENDERALPHAS& Blend );
|
||||
/** Set the predefined blending function to use on the batch */
|
||||
void SetPreBlendFunc( const EE_PRE_BLEND_FUNC& Blend );
|
||||
|
||||
/** Set if every batch call have to be immediately rendered */
|
||||
void BatchForceRendering( const bool& force ) { mForceRendering = force; }
|
||||
@@ -71,16 +71,16 @@ class EE_API cBatchRenderer {
|
||||
/** @return The batch center position */
|
||||
eeVector2f BatchCenter() const { return mCenter; }
|
||||
|
||||
/** Add to the batch a quad ( this will change your batch rendering method to EE_DT_QUADS, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
/** Add to the batch a quad ( this will change your batch rendering method to DM_QUADS, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
void BatchQuadEx( const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeFloat& angle = 0.0f, const eeFloat& scale = 1.0f, const bool& scalefromcenter = true );
|
||||
|
||||
/** Add to the batch a quad ( this will change your batch rendering method to EE_DT_QUADS, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
/** Add to the batch a quad ( this will change your batch rendering method to DM_QUADS, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
void BatchQuad( const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeFloat& angle = 0.0f );
|
||||
|
||||
/** Add to the batch a quad with the vertex freely seted ( this will change your batch rendering method to EE_DT_QUADS, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
/** Add to the batch a quad with the vertex freely seted ( this will change your batch rendering method to DM_QUADS, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
void BatchQuadFree( const eeFloat& x0, const eeFloat& y0, const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3 );
|
||||
|
||||
/** Add to the batch a quad with the vertex freely seted ( this will change your batch rendering method to EE_DT_QUADS, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
/** Add to the batch a quad with the vertex freely seted ( this will change your batch rendering method to DM_QUADS, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
void BatchQuadFreeEx( const eeFloat& x0, const eeFloat& y0, const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3, const eeFloat& Angle = 0.0f, const eeFloat& Scale = 1.0f );
|
||||
|
||||
/** This will set as the default batch rendering to GL_QUADS. WIll reset the texture subset rendering to the whole texture. Will reset the default color rendering to eeColorA(255,255,255,255). */
|
||||
@@ -98,16 +98,16 @@ class EE_API cBatchRenderer {
|
||||
/** Set the quad color per vertex */
|
||||
void QuadsSetColorFree( const eeColorA Color0, const eeColorA Color1, const eeColorA Color2, const eeColorA Color3 );
|
||||
|
||||
/** This will set as the default batch rendering to EE_DT_POINTS. And will reset the point color to eeColorA(255,255,255,255). */
|
||||
/** This will set as the default batch rendering to DM_POINTS. And will reset the point color to eeColorA(255,255,255,255). */
|
||||
void PointsBegin();
|
||||
|
||||
/** Set the point color */
|
||||
void PointSetColor( const eeColorA Color );
|
||||
|
||||
/** Add to the batch a point ( this will change your batch rendering method to EE_DT_POINTS, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
/** Add to the batch a point ( this will change your batch rendering method to DM_POINTS, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
void BatchPoint( const eeFloat& x, const eeFloat& y );
|
||||
|
||||
/** This will set as the default batch rendering to EE_DT_LINES. And will reset the line color to eeColorA(255,255,255,255). */
|
||||
/** This will set as the default batch rendering to DM_LINES. And will reset the line color to eeColorA(255,255,255,255). */
|
||||
void LinesBegin();
|
||||
|
||||
/** Set the line color */
|
||||
@@ -116,7 +116,7 @@ class EE_API cBatchRenderer {
|
||||
/** Set the line color, per vertex */
|
||||
void LinesSetColorFree( const eeColorA Color0, const eeColorA Color1 );
|
||||
|
||||
/** Add to the batch a line ( this will change your batch rendering method to EE_DT_LINES, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
/** Add to the batch a line ( this will change your batch rendering method to DM_LINES, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
void BatchLine( const eeFloat& x0, const eeFloat& y0, const eeFloat& x1, const eeFloat& y1 );
|
||||
|
||||
/** This will set as the default batch rendering to GL_LINE_LOOP. And will reset the line color to eeColorA(255,255,255,255). */
|
||||
@@ -128,7 +128,7 @@ class EE_API cBatchRenderer {
|
||||
/** Set the line color, per vertex */
|
||||
void LineLoopSetColorFree( const eeColorA Color0, const eeColorA Color1 );
|
||||
|
||||
/** Add to the batch a line ( this will change your batch rendering method to EE_DT_LINE_LOOP, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
/** Add to the batch a line ( this will change your batch rendering method to DM_LINE_LOOP, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
void BatchLineLoop( const eeFloat& x0, const eeFloat& y0, const eeFloat& x1, const eeFloat& y1 );
|
||||
|
||||
void BatchLineLoop( const eeFloat& x0, const eeFloat& y0);
|
||||
@@ -137,7 +137,7 @@ class EE_API cBatchRenderer {
|
||||
|
||||
void BatchLineLoop( const eeVector2f& vector1 );
|
||||
|
||||
/** This will set as the default batch rendering to EE_DT_TRIANGLE_FAN. And will reset the line color to eeColorA(255,255,255,255). */
|
||||
/** This will set as the default batch rendering to DM_TRIANGLE_FAN. And will reset the line color to eeColorA(255,255,255,255). */
|
||||
void TriangleFanBegin();
|
||||
|
||||
/** Set the triangle fan color */
|
||||
@@ -149,10 +149,10 @@ class EE_API cBatchRenderer {
|
||||
/** Set the texture sector to be rendered but freely seted */
|
||||
void TriangleFanSetSubset( const eeFloat& x0, const eeFloat& y0, const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2 );
|
||||
|
||||
/** Add to the batch a triangle fan ( this will change your batch rendering method to EE_DT_TRIANGLE_FAN, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
/** Add to the batch a triangle fan ( this will change your batch rendering method to DM_TRIANGLE_FAN, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
void BatchTriangleFan( const eeFloat& x0, const eeFloat& y0, const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2 );
|
||||
|
||||
/** This will set as the default batch rendering to EE_DT_TRIANGLES. And will reset the line color to eeColorA(255,255,255,255). */
|
||||
/** This will set as the default batch rendering to DM_TRIANGLES. And will reset the line color to eeColorA(255,255,255,255). */
|
||||
void TrianglesBegin();
|
||||
|
||||
/** Set the triangles color */
|
||||
@@ -164,13 +164,13 @@ class EE_API cBatchRenderer {
|
||||
/** Set the texture sector to be rendered but freely seted */
|
||||
void TrianglesSetSubset( const eeFloat& x0, const eeFloat& y0, const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2 );
|
||||
|
||||
/** Add to the batch a triangle ( this will change your batch rendering method to EE_DT_TRIANGLES, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
/** Add to the batch a triangle ( this will change your batch rendering method to DM_TRIANGLES, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
void BatchTriangle( const eeFloat& x0, const eeFloat& y0, const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2 );
|
||||
|
||||
/** Set the polygon color */
|
||||
void PolygonSetColor( const eeColorA& Color );
|
||||
|
||||
/** Add to the batch a polygon ( this will change your batch rendering method to EE_DT_POLYGON, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
/** Add to the batch a polygon ( this will change your batch rendering method to DM_POLYGON, so if you were using another one will Draw all the batched vertexs first ) */
|
||||
void BatchPolygon( const eePolygon2f& Polygon );
|
||||
|
||||
/** Set the line width */
|
||||
@@ -192,12 +192,12 @@ class EE_API cBatchRenderer {
|
||||
eeUint mNumVertex;
|
||||
|
||||
const cTexture * mTexture;
|
||||
EE_RENDERALPHAS mBlend;
|
||||
EE_PRE_BLEND_FUNC mBlend;
|
||||
|
||||
eeTexCoord mTexCoord[4];
|
||||
eeColorA mVerColor[4];
|
||||
|
||||
EE_DRAW_TYPE mCurrentMode;
|
||||
EE_DRAW_MODE mCurrentMode;
|
||||
|
||||
eeFloat mRotation, mScale;
|
||||
eeVector2f mPosition, mCenter;
|
||||
@@ -209,7 +209,7 @@ class EE_API cBatchRenderer {
|
||||
void Init();
|
||||
void AddVertexs( const eeUint& num );
|
||||
void Rotate( const eeVector2f& center, eeVector2f* point, const eeFloat& angle );
|
||||
void SetBlendMode( EE_DRAW_TYPE Mode, const bool& Force );
|
||||
void SetBlendMode( EE_DRAW_MODE Mode, const bool& Force );
|
||||
};
|
||||
|
||||
}}
|
||||
|
||||
@@ -467,24 +467,7 @@ void cConsole::CmdQuit ( const std::vector < std::wstring >& params ) {
|
||||
}
|
||||
|
||||
void cConsole::CmdGetTextureMemory ( const std::vector < std::wstring >& params ) {
|
||||
std::wstring size = L" bytes";
|
||||
eeDouble mem = static_cast<eeDouble>( cTextureFactory::instance()->MemorySize() );
|
||||
Uint8 c = 0;
|
||||
|
||||
while ( mem > 1024 ) {
|
||||
c++;
|
||||
mem = mem / 1024;
|
||||
}
|
||||
|
||||
switch (c) {
|
||||
case 1: size = L" KB"; break;
|
||||
case 2: size = L" MB"; break;
|
||||
case 3: size = L" GB"; break;
|
||||
case 4: size = L" TB"; break;
|
||||
default: size = L" WTF";
|
||||
}
|
||||
|
||||
PushText( L"Total texture memory used: "+ toWStr( mem ) + size );
|
||||
PushText( L"Total texture memory used: " + SizeToWString( cTextureFactory::instance()->MemorySize() ) );
|
||||
}
|
||||
|
||||
void cConsole::CmdCmdList ( const std::vector < std::wstring >& params ) {
|
||||
|
||||
@@ -111,24 +111,24 @@ const std::vector<eeFloat>& cFont::GetLinesWidth() const {
|
||||
return mLinesWidth;
|
||||
}
|
||||
|
||||
void cFont::Draw( const std::string& Text, const eeFloat& X, const eeFloat& Y, const Uint32& Flags, const eeFloat& Scale, const eeFloat& Angle, const EE_RENDERALPHAS& Effect ) {
|
||||
void cFont::Draw( const std::string& Text, const eeFloat& X, const eeFloat& Y, const Uint32& Flags, const eeFloat& Scale, const eeFloat& Angle, const EE_PRE_BLEND_FUNC& Effect ) {
|
||||
Draw( stringTowstring(Text), X, Y, Flags, Scale, Angle, Effect );
|
||||
}
|
||||
|
||||
void cFont::Draw( const eeFloat& X, const eeFloat& Y, const Uint32& Flags, const eeFloat& Scale, const eeFloat& Angle, const EE_RENDERALPHAS& Effect) {
|
||||
void cFont::Draw( const eeFloat& X, const eeFloat& Y, const Uint32& Flags, const eeFloat& Scale, const eeFloat& Angle, const EE_PRE_BLEND_FUNC& Effect) {
|
||||
SubDraw( mText, X, Y, Flags, Scale, Angle, true, Effect );
|
||||
}
|
||||
|
||||
void cFont::Draw( const std::wstring& Text, const eeFloat& X, const eeFloat& Y, const Uint32& Flags, const eeFloat& Scale, const eeFloat& Angle, const EE_RENDERALPHAS& Effect ) {
|
||||
void cFont::Draw( const std::wstring& Text, const eeFloat& X, const eeFloat& Y, const Uint32& Flags, const eeFloat& Scale, const eeFloat& Angle, const EE_PRE_BLEND_FUNC& Effect ) {
|
||||
SubDraw( Text, X, Y, Flags, Scale, Angle, false, Effect );
|
||||
}
|
||||
|
||||
void cFont::Draw( cTextCache& TextCache, const eeFloat& X, const eeFloat& Y, const Uint32& Flags, const eeFloat& Scale, const eeFloat& Angle, const EE_RENDERALPHAS& Effect ) {
|
||||
void cFont::Draw( cTextCache& TextCache, const eeFloat& X, const eeFloat& Y, const Uint32& Flags, const eeFloat& Scale, const eeFloat& Angle, const EE_PRE_BLEND_FUNC& Effect ) {
|
||||
if ( !TextCache.Text().size() )
|
||||
return;
|
||||
|
||||
cTextureFactory::instance()->Bind( mTexId );
|
||||
cTextureFactory::instance()->SetBlendFunc( Effect );
|
||||
cTextureFactory::instance()->SetPreBlendFunc( Effect );
|
||||
|
||||
if ( Flags & FONT_DRAW_SHADOW ) {
|
||||
Uint32 f = Flags;
|
||||
@@ -165,79 +165,89 @@ void cFont::Draw( cTextCache& TextCache, const eeFloat& X, const eeFloat& Y, con
|
||||
std::vector<eeVertexCoords>& RenderCoords = TextCache.VertextCoords();
|
||||
std::vector<eeColorA>& Colors = TextCache.Colors();
|
||||
|
||||
switch ( FontHAlignGet( Flags ) ) {
|
||||
case FONT_DRAW_CENTER:
|
||||
nX = (eeFloat)( (Int32)( ( TextCache.GetTextWidth() - TextCache.LinesWidth()[ Line ] ) * 0.5f ) );
|
||||
Line++;
|
||||
break;
|
||||
case FONT_DRAW_RIGHT:
|
||||
nX = TextCache.GetTextWidth() - TextCache.LinesWidth()[ Line ];
|
||||
Line++;
|
||||
break;
|
||||
}
|
||||
|
||||
for ( eeUint i = 0; i < TextCache.Text().size(); i++ ) {
|
||||
Char = static_cast<Int32>( TextCache.Text().at(i) );
|
||||
eeTexCoords* C = &mTexCoords[ Char ];
|
||||
|
||||
switch(Char) {
|
||||
case L'\v':
|
||||
if (mVerticalDraw)
|
||||
nY += GetFontHeight();
|
||||
else
|
||||
nX += mGlyphs[ Char ].Advance;
|
||||
#ifndef EE_GLES
|
||||
if ( !TextCache.CachedCoords() ) {
|
||||
#else
|
||||
if ( true ) {
|
||||
#endif
|
||||
switch ( FontHAlignGet( Flags ) ) {
|
||||
case FONT_DRAW_CENTER:
|
||||
nX = (eeFloat)( (Int32)( ( TextCache.GetTextWidth() - TextCache.LinesWidth()[ Line ] ) * 0.5f ) );
|
||||
Line++;
|
||||
break;
|
||||
case L'\t':
|
||||
if (mVerticalDraw)
|
||||
nY += GetFontHeight() * 4;
|
||||
else
|
||||
nX += mGlyphs[ Char ].Advance * 4;
|
||||
case FONT_DRAW_RIGHT:
|
||||
nX = TextCache.GetTextWidth() - TextCache.LinesWidth()[ Line ];
|
||||
Line++;
|
||||
break;
|
||||
case L'\n':
|
||||
if (mVerticalDraw) {
|
||||
nX += (GetFontSize() * Scale);
|
||||
nY = 0;
|
||||
} else {
|
||||
if ( i + 1 < TextCache.Text().size() ) {
|
||||
switch ( FontHAlignGet( Flags ) ) {
|
||||
case FONT_DRAW_CENTER:
|
||||
nX = (eeFloat)( (Int32)( ( TextCache.GetTextWidth() - TextCache.LinesWidth()[ Line ] ) * 0.5f ) );
|
||||
break;
|
||||
case FONT_DRAW_RIGHT:
|
||||
nX = TextCache.GetTextWidth() - TextCache.LinesWidth()[ Line ];
|
||||
break;
|
||||
default:
|
||||
nX = 0;
|
||||
}
|
||||
|
||||
for ( eeUint i = 0; i < TextCache.Text().size(); i++ ) {
|
||||
Char = static_cast<Int32>( TextCache.Text().at(i) );
|
||||
eeTexCoords* C = &mTexCoords[ Char ];
|
||||
|
||||
switch(Char) {
|
||||
case L'\v':
|
||||
if (mVerticalDraw)
|
||||
nY += GetFontHeight();
|
||||
else
|
||||
nX += mGlyphs[ Char ].Advance;
|
||||
break;
|
||||
case L'\t':
|
||||
if (mVerticalDraw)
|
||||
nY += GetFontHeight() * 4;
|
||||
else
|
||||
nX += mGlyphs[ Char ].Advance * 4;
|
||||
break;
|
||||
case L'\n':
|
||||
if (mVerticalDraw) {
|
||||
nX += (GetFontSize() * Scale);
|
||||
nY = 0;
|
||||
} else {
|
||||
if ( i + 1 < TextCache.Text().size() ) {
|
||||
switch ( FontHAlignGet( Flags ) ) {
|
||||
case FONT_DRAW_CENTER:
|
||||
nX = (eeFloat)( (Int32)( ( TextCache.GetTextWidth() - TextCache.LinesWidth()[ Line ] ) * 0.5f ) );
|
||||
break;
|
||||
case FONT_DRAW_RIGHT:
|
||||
nX = TextCache.GetTextWidth() - TextCache.LinesWidth()[ Line ];
|
||||
break;
|
||||
default:
|
||||
nX = 0;
|
||||
}
|
||||
}
|
||||
|
||||
nY += (GetFontSize() * Scale);
|
||||
Line++;
|
||||
}
|
||||
|
||||
nY += (GetFontSize() * Scale);
|
||||
Line++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
for ( Uint8 z = 0; z < 8; z+=2 ) {
|
||||
RenderCoords[ numvert ].TexCoords[0] = C->TexCoords[z];
|
||||
RenderCoords[ numvert ].TexCoords[1] = C->TexCoords[ z + 1 ];
|
||||
RenderCoords[ numvert ].Vertex[0] = cX + C->Vertex[z] + nX;
|
||||
RenderCoords[ numvert ].Vertex[1] = cY + C->Vertex[ z + 1 ] + nY;
|
||||
numvert++;
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
for ( Uint8 z = 0; z < 8; z+=2 ) {
|
||||
RenderCoords[ numvert ].TexCoords[0] = C->TexCoords[z];
|
||||
RenderCoords[ numvert ].TexCoords[1] = C->TexCoords[ z + 1 ];
|
||||
RenderCoords[ numvert ].Vertex[0] = cX + C->Vertex[z] + nX;
|
||||
RenderCoords[ numvert ].Vertex[1] = cY + C->Vertex[ z + 1 ] + nY;
|
||||
numvert++;
|
||||
}
|
||||
#ifdef EE_GLES
|
||||
glColorPointer( 4, GL_UNSIGNED_BYTE, 0, reinterpret_cast<char*>( &Colors[0] ) );
|
||||
glTexCoordPointer( 2, GL_FLOAT, sizeof(eeVertexCoords), reinterpret_cast<char*>( &RenderCoords[ numvert - 4 ] ) );
|
||||
glVertexPointer( 2, GL_FLOAT, sizeof(eeVertexCoords), reinterpret_cast<char*>( &RenderCoords[ numvert - 4 ] ) + sizeof(eeFloat) * 2 );
|
||||
|
||||
#ifdef EE_GLES
|
||||
glColorPointer( 4, GL_UNSIGNED_BYTE, 0, reinterpret_cast<char*>( &Colors[0] ) );
|
||||
glTexCoordPointer( 2, GL_FLOAT, sizeof(eeVertexCoords), reinterpret_cast<char*>( &RenderCoords[ numvert - 4 ] ) );
|
||||
glVertexPointer( 2, GL_FLOAT, sizeof(eeVertexCoords), reinterpret_cast<char*>( &RenderCoords[ numvert - 4 ] ) + sizeof(eeFloat) * 2 );
|
||||
glDrawElements( GL_TRIANGLE_STRIP, 4, GL_UNSIGNED_BYTE, EE_GLES_INDICES );
|
||||
#endif
|
||||
|
||||
glDrawElements( GL_TRIANGLE_STRIP, 4, GL_UNSIGNED_BYTE, EE_GLES_INDICES );
|
||||
#endif
|
||||
|
||||
if (mVerticalDraw)
|
||||
nY += GetFontHeight();
|
||||
else
|
||||
nX += mGlyphs[ Char ].Advance;
|
||||
if (mVerticalDraw)
|
||||
nY += GetFontHeight();
|
||||
else
|
||||
nX += mGlyphs[ Char ].Advance;
|
||||
}
|
||||
}
|
||||
|
||||
TextCache.CachedCoords( true );
|
||||
} else {
|
||||
numvert = TextCache.Text().size() * 4;
|
||||
}
|
||||
|
||||
#ifndef EE_GLES
|
||||
@@ -252,12 +262,12 @@ void cFont::Draw( cTextCache& TextCache, const eeFloat& X, const eeFloat& Y, con
|
||||
glPopMatrix();
|
||||
}
|
||||
|
||||
void cFont::SubDraw( const std::wstring& Text, const eeFloat& X, const eeFloat& Y, const Uint32& Flags, const eeFloat& Scale, const eeFloat& Angle, const bool& Cached, const EE_RENDERALPHAS& Effect ) {
|
||||
void cFont::SubDraw( const std::wstring& Text, const eeFloat& X, const eeFloat& Y, const Uint32& Flags, const eeFloat& Scale, const eeFloat& Angle, const bool& Cached, const EE_PRE_BLEND_FUNC& Effect ) {
|
||||
if ( !Text.size() )
|
||||
return;
|
||||
|
||||
cTextureFactory::instance()->Bind( mTexId );
|
||||
cTextureFactory::instance()->SetBlendFunc( Effect );
|
||||
cTextureFactory::instance()->SetPreBlendFunc( Effect );
|
||||
|
||||
if ( !Cached && ( Text.size() != mRenderCoords.size() / 4 || Angle != 0.f || Scale != 1.f || FontHAlignGet( Flags ) == FONT_DRAW_CENTER || FontHAlignGet( Flags ) == FONT_DRAW_RIGHT ) ) {
|
||||
SetText( Text );
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace EE { namespace Graphics {
|
||||
class EE_API cFont {
|
||||
public:
|
||||
cFont( const Uint32& Type, const std::string& Name );
|
||||
|
||||
|
||||
virtual ~cFont();
|
||||
|
||||
/** Set a text to render
|
||||
@@ -76,7 +76,7 @@ class EE_API cFont {
|
||||
* @param Angle The angle of the string rendered
|
||||
* @param Effect Set the Blend Mode ( default ALPHA_NORMAL )
|
||||
*/
|
||||
void Draw( const std::wstring& Text, const eeFloat& X, const eeFloat& Y, const Uint32& Flags = FONT_DRAW_LEFT, const eeFloat& Scale = 1.0f, const eeFloat& Angle = 0, const EE_RENDERALPHAS& Effect = ALPHA_NORMAL );
|
||||
void Draw( const std::wstring& Text, const eeFloat& X, const eeFloat& Y, const Uint32& Flags = FONT_DRAW_LEFT, const eeFloat& Scale = 1.0f, const eeFloat& Angle = 0, const EE_PRE_BLEND_FUNC& Effect = ALPHA_NORMAL );
|
||||
|
||||
/** Draw the string seted on the screen
|
||||
* @param X The start x position
|
||||
@@ -86,7 +86,7 @@ class EE_API cFont {
|
||||
* @param Angle The angle of the string rendered
|
||||
* @param Effect Set the Blend Mode ( default ALPHA_NORMAL )
|
||||
*/
|
||||
void Draw( const eeFloat& X, const eeFloat& Y, const Uint32& Flags = FONT_DRAW_LEFT, const eeFloat& Scale = 1.0f, const eeFloat& Angle = 0, const EE_RENDERALPHAS& Effect = ALPHA_NORMAL );
|
||||
void Draw( const eeFloat& X, const eeFloat& Y, const Uint32& Flags = FONT_DRAW_LEFT, const eeFloat& Scale = 1.0f, const eeFloat& Angle = 0, const EE_PRE_BLEND_FUNC& Effect = ALPHA_NORMAL );
|
||||
|
||||
/** Draw a string on the screen
|
||||
* @param Text The text to draw
|
||||
@@ -97,7 +97,7 @@ class EE_API cFont {
|
||||
* @param Angle The angle of the string rendered
|
||||
* @param Effect Set the Blend Mode ( default ALPHA_NORMAL )
|
||||
*/
|
||||
void Draw( const std::string& Text, const eeFloat& X, const eeFloat& Y, const Uint32& Flags = FONT_DRAW_LEFT, const eeFloat& Scale = 1.0f, const eeFloat& Angle = 0, const EE_RENDERALPHAS& Effect = ALPHA_NORMAL );
|
||||
void Draw( const std::string& Text, const eeFloat& X, const eeFloat& Y, const Uint32& Flags = FONT_DRAW_LEFT, const eeFloat& Scale = 1.0f, const eeFloat& Angle = 0, const EE_PRE_BLEND_FUNC& Effect = ALPHA_NORMAL );
|
||||
|
||||
/** Draw a string on the screen from a cached text
|
||||
* @param TextCache The cached text
|
||||
@@ -108,7 +108,7 @@ class EE_API cFont {
|
||||
* @param Angle The angle of the string rendered
|
||||
* @param Effect Set the Blend Mode ( default ALPHA_NORMAL )
|
||||
*/
|
||||
void Draw( cTextCache& TextCache, const eeFloat& X, const eeFloat& Y, const Uint32& Flags = FONT_DRAW_LEFT, const eeFloat& Scale = 1.0f, const eeFloat& Angle = 0, const EE_RENDERALPHAS& Effect = ALPHA_NORMAL );
|
||||
void Draw( cTextCache& TextCache, const eeFloat& X, const eeFloat& Y, const Uint32& Flags = FONT_DRAW_LEFT, const eeFloat& Scale = 1.0f, const eeFloat& Angle = 0, const EE_PRE_BLEND_FUNC& Effect = ALPHA_NORMAL );
|
||||
|
||||
/** Shrink the wstring to a max width
|
||||
* @param Str The string to shrink
|
||||
@@ -127,19 +127,19 @@ class EE_API cFont {
|
||||
|
||||
/** @return The font texture id */
|
||||
const Uint32& GetTexId() const;
|
||||
|
||||
|
||||
const Uint32& Type() const;
|
||||
|
||||
|
||||
const std::string& Name() const;
|
||||
|
||||
|
||||
void Name( const std::string& name );
|
||||
|
||||
|
||||
const Uint32& Id();
|
||||
protected:
|
||||
Uint32 mType;
|
||||
std::string mFontName;
|
||||
Uint32 mFontHash;
|
||||
|
||||
|
||||
std::wstring mText;
|
||||
bool mCacheData;
|
||||
eeColorA mColor;
|
||||
@@ -160,7 +160,7 @@ class EE_API cFont {
|
||||
|
||||
void CacheWidth();
|
||||
void CacheNumLines();
|
||||
void SubDraw( const std::wstring& Text, const eeFloat& X, const eeFloat& Y, const Uint32& Flags, const eeFloat& Scale, const eeFloat& Angle, const bool& Cached, const EE_RENDERALPHAS& Effect );
|
||||
void SubDraw( const std::wstring& Text, const eeFloat& X, const eeFloat& Y, const Uint32& Flags, const eeFloat& Scale, const eeFloat& Angle, const bool& Cached, const EE_PRE_BLEND_FUNC& Effect );
|
||||
};
|
||||
|
||||
}}
|
||||
|
||||
@@ -25,7 +25,7 @@ cFrameBuffer::cFrameBuffer() :
|
||||
|
||||
cFrameBuffer::~cFrameBuffer() {
|
||||
if ( NULL != mTexture )
|
||||
cTextureFactory::instance()->Remove( mTexture->TexId() );
|
||||
cTextureFactory::instance()->Remove( mTexture->Id() );
|
||||
}
|
||||
|
||||
cTexture * cFrameBuffer::GetTexture() const {
|
||||
|
||||
@@ -1,9 +1,16 @@
|
||||
#include "cframebufferfbo.hpp"
|
||||
#include "ctexturefactory.hpp"
|
||||
#include "../window/cengine.hpp"
|
||||
#include "glhelper.hpp"
|
||||
|
||||
using namespace EE::Graphics::Private;
|
||||
|
||||
namespace EE { namespace Graphics {
|
||||
|
||||
bool cFrameBufferFBO::IsSupported() {
|
||||
return 0 != cGL::instance()->IsExtension( EEGL_EXT_framebuffer_object );
|
||||
}
|
||||
|
||||
cFrameBufferFBO::cFrameBufferFBO() :
|
||||
cFrameBuffer(),
|
||||
mFrameBuffer(0),
|
||||
@@ -39,10 +46,6 @@ cFrameBufferFBO::~cFrameBufferFBO() {
|
||||
}
|
||||
}
|
||||
|
||||
bool cFrameBufferFBO::IsSupported() {
|
||||
return 0 != GLEW_EXT_framebuffer_object;
|
||||
}
|
||||
|
||||
bool cFrameBufferFBO::Create( const Uint32& Width, const Uint32& Height ) {
|
||||
return Create( Width, Height, false );
|
||||
}
|
||||
@@ -87,7 +90,7 @@ bool cFrameBufferFBO::Create( const Uint32& Width, const Uint32& Height, bool De
|
||||
return false;
|
||||
}
|
||||
|
||||
glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, mTexture->Texture(), 0 );
|
||||
glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, mTexture->Handle(), 0 );
|
||||
|
||||
if ( glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT) != GL_FRAMEBUFFER_COMPLETE_EXT ) {
|
||||
glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, 0 );
|
||||
|
||||
@@ -224,7 +224,7 @@ void cFrameBufferPBuffer::Bind() {
|
||||
#endif
|
||||
|
||||
if ( ChangeContext ) {
|
||||
Window::cEngine::instance()->ResetGL2D( true );
|
||||
Window::cEngine::instance()->Setup2D( true );
|
||||
SetBufferView();
|
||||
}
|
||||
}
|
||||
@@ -233,7 +233,7 @@ void cFrameBufferPBuffer::Unbind() {
|
||||
GLint previousTexture;
|
||||
glGetIntegerv( GL_TEXTURE_BINDING_2D, &previousTexture );
|
||||
|
||||
glBindTexture( GL_TEXTURE_2D, (GLint)mTexture->Texture() );
|
||||
glBindTexture( GL_TEXTURE_2D, (GLint)mTexture->Handle() );
|
||||
glCopyTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, 0, 0, mWidth, mHeight );
|
||||
|
||||
glBindTexture( GL_TEXTURE_2D, previousTexture );
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
#include "cparticlesystem.hpp"
|
||||
#include "glhelper.hpp"
|
||||
|
||||
using namespace EE::Graphics::Private;
|
||||
|
||||
namespace EE { namespace Graphics {
|
||||
|
||||
@@ -13,7 +16,7 @@ cParticleSystem::~cParticleSystem() {
|
||||
|
||||
void cParticleSystem::Create(const EE_PARTICLE_EFFECT& Effect, const Uint32& NumParticles, const Uint32& TexId, const eeFloat& X, const eeFloat& Y, const eeFloat& PartSize, const bool& AnimLoop, const Uint32& NumLoops, const eeColorAf& Color, const eeFloat& X2, const eeFloat& Y2, const eeFloat& AlphaDecay, const eeFloat& XSpeed, const eeFloat& YSpeed, const eeFloat& XAcceleration, const eeFloat& YAcceleration) {
|
||||
mParticle.clear();
|
||||
mPointsSup = EE->PointSpriteSuppported();
|
||||
mPointsSup = cGL::instance()->PointSpriteSupported();
|
||||
|
||||
mEffect = Effect;
|
||||
mX = X;
|
||||
@@ -235,7 +238,7 @@ void cParticleSystem::Reset(cParticle* P) {
|
||||
|
||||
void cParticleSystem::Draw() {
|
||||
TF->Bind( mTexId );
|
||||
TF->SetBlendFunc( ALPHA_BLENDONE );
|
||||
TF->SetPreBlendFunc( ALPHA_BLENDONE );
|
||||
|
||||
if ( mPointsSup ) {
|
||||
glEnable( GL_POINT_SPRITE_ARB );
|
||||
@@ -258,7 +261,7 @@ void cParticleSystem::Draw() {
|
||||
|
||||
cBatchRenderer * BR = cGlobalBatchRenderer::instance();
|
||||
BR->SetTexture( Tex );
|
||||
BR->SetBlendFunc( ALPHA_BLENDONE );
|
||||
BR->SetPreBlendFunc( ALPHA_BLENDONE );
|
||||
BR->QuadsBegin();
|
||||
|
||||
for ( Uint32 i = 0; i < mParticle.size(); i++ ) {
|
||||
@@ -268,7 +271,7 @@ void cParticleSystem::Draw() {
|
||||
if ( P->Used() ) {
|
||||
TL.x = P->X() - mHSize;
|
||||
TL.y = P->Y() - mHSize;
|
||||
|
||||
|
||||
/** FIXME: Optimize */
|
||||
BR->QuadsSetColor( eeColorA( static_cast<Uint8> ( P->R() * 255 ), static_cast<Uint8> ( P->G() * 255 ), static_cast<Uint8>( P->B() * 255 ), static_cast<Uint8>( P->A() * 255 ) ) );
|
||||
BR->BatchQuad( TL.x, TL.y, mSize, mSize );
|
||||
|
||||
@@ -11,9 +11,9 @@ cPrimitives::cPrimitives() {
|
||||
|
||||
cPrimitives::~cPrimitives() {}
|
||||
|
||||
void cPrimitives::DrawRoundedRectangle(const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeColorA& TopLeft, const eeColorA& BottomLeft, const eeColorA& BottomRight, const eeColorA& TopRight, const eeFloat& Angle, const eeFloat& Scale, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth, const eeUint& Corners ) {
|
||||
void cPrimitives::DrawRoundedRectangle(const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeColorA& TopLeft, const eeColorA& BottomLeft, const eeColorA& BottomRight, const eeColorA& TopRight, const eeFloat& Angle, const eeFloat& Scale, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth, const eeUint& Corners ) {
|
||||
BR->SetTexture( NULL );
|
||||
BR->SetBlendFunc( blend );
|
||||
BR->SetPreBlendFunc( blend );
|
||||
|
||||
eeUint i;
|
||||
eeFloat xscalediff = width * Scale - width;
|
||||
@@ -25,7 +25,7 @@ void cPrimitives::DrawRoundedRectangle(const eeFloat& x, const eeFloat& y, const
|
||||
Poly.Rotate( Angle, Center );
|
||||
|
||||
switch(fillmode) {
|
||||
case DRAW_FILL: {
|
||||
case EE_DRAW_FILL: {
|
||||
if ( TopLeft == BottomLeft && BottomLeft == BottomRight && BottomRight == TopRight ) {
|
||||
BR->PolygonSetColor( TopLeft );
|
||||
|
||||
@@ -51,7 +51,7 @@ void cPrimitives::DrawRoundedRectangle(const eeFloat& x, const eeFloat& y, const
|
||||
|
||||
break;
|
||||
}
|
||||
case DRAW_LINE:
|
||||
case EE_DRAW_LINE:
|
||||
BR->SetLineWidth( lineWidth );
|
||||
|
||||
BR->LineLoopBegin();
|
||||
@@ -85,23 +85,23 @@ void cPrimitives::DrawRoundedRectangle(const eeFloat& x, const eeFloat& y, const
|
||||
BR->Draw();
|
||||
}
|
||||
|
||||
void cPrimitives::DrawRectangle(const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeColorA& TopLeft, const eeColorA& BottomLeft, const eeColorA& BottomRight, const eeColorA& TopRight, const eeFloat& Angle, const eeFloat& Scale, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth, const eeUint& Corners) {
|
||||
void cPrimitives::DrawRectangle(const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeColorA& TopLeft, const eeColorA& BottomLeft, const eeColorA& BottomRight, const eeColorA& TopRight, const eeFloat& Angle, const eeFloat& Scale, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth, const eeUint& Corners) {
|
||||
if ( 0 != Corners ) {
|
||||
DrawRoundedRectangle( x, y, width, height, TopLeft, BottomLeft, BottomRight, TopRight, Angle, Scale, fillmode, blend, lineWidth, Corners );
|
||||
return;
|
||||
}
|
||||
|
||||
BR->SetTexture( NULL );
|
||||
BR->SetBlendFunc( blend );
|
||||
BR->SetPreBlendFunc( blend );
|
||||
|
||||
switch(fillmode) {
|
||||
case DRAW_FILL: {
|
||||
case EE_DRAW_FILL: {
|
||||
BR->QuadsBegin();
|
||||
BR->QuadsSetColorFree( TopLeft, BottomLeft, BottomRight, TopRight );
|
||||
BR->BatchQuadEx( x, y, width, height, Angle, Scale );
|
||||
break;
|
||||
}
|
||||
case DRAW_LINE:
|
||||
case EE_DRAW_LINE:
|
||||
BR->SetLineWidth( lineWidth );
|
||||
|
||||
BR->LineLoopBegin();
|
||||
@@ -155,14 +155,14 @@ void cPrimitives::DrawPoint( const eeFloat& x, const eeFloat& y, const eeFloat&
|
||||
BR->Draw();
|
||||
}
|
||||
|
||||
void cPrimitives::DrawCircle( const eeFloat& x, const eeFloat& y, const eeFloat& radius, Uint32 points, const EE_FILLMODE& fillmode, const eeFloat& lineWidth ) {
|
||||
void cPrimitives::DrawCircle( const eeFloat& x, const eeFloat& y, const eeFloat& radius, Uint32 points, const EE_FILL_MODE& fillmode, const eeFloat& lineWidth ) {
|
||||
if(points < 6) points = 6;
|
||||
eeFloat angle_shift = 360 / static_cast<eeFloat>(points);
|
||||
|
||||
BR->SetTexture( NULL );
|
||||
|
||||
switch( fillmode ) {
|
||||
case DRAW_LINE:
|
||||
case EE_DRAW_LINE:
|
||||
BR->SetLineWidth( lineWidth );
|
||||
BR->LineLoopBegin();
|
||||
BR->LineLoopSetColor( mColor );
|
||||
@@ -171,7 +171,7 @@ void cPrimitives::DrawCircle( const eeFloat& x, const eeFloat& y, const eeFloat&
|
||||
BR->BatchLineLoop( x + radius * sinAng(i), y + radius * cosAng(i), x + radius * sinAng( i + angle_shift ), y + radius * cosAng( i + angle_shift ) );
|
||||
|
||||
break;
|
||||
case DRAW_FILL:
|
||||
case EE_DRAW_FILL:
|
||||
BR->TriangleFanBegin();
|
||||
BR->TriangleFanSetColor( mColor );
|
||||
|
||||
@@ -184,12 +184,12 @@ void cPrimitives::DrawCircle( const eeFloat& x, const eeFloat& y, const eeFloat&
|
||||
BR->Draw();
|
||||
}
|
||||
|
||||
void cPrimitives::DrawTriangle(const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth) {
|
||||
void cPrimitives::DrawTriangle(const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth) {
|
||||
BR->SetTexture( NULL );
|
||||
BR->SetBlendFunc( blend );
|
||||
BR->SetPreBlendFunc( blend );
|
||||
|
||||
switch(fillmode) {
|
||||
case DRAW_LINE:
|
||||
case EE_DRAW_LINE:
|
||||
BR->SetLineWidth( lineWidth );
|
||||
|
||||
BR->LineLoopBegin();
|
||||
@@ -200,7 +200,7 @@ void cPrimitives::DrawTriangle(const eeFloat& x1, const eeFloat& y1, const eeFlo
|
||||
BR->BatchLineLoop( x2, y2, x3, y3 );
|
||||
break;
|
||||
default:
|
||||
case DRAW_FILL:
|
||||
case EE_DRAW_FILL:
|
||||
BR->TrianglesBegin();
|
||||
|
||||
BR->TrianglesSetColorFree( Color1, Color2, Color3 );
|
||||
@@ -212,12 +212,12 @@ void cPrimitives::DrawTriangle(const eeFloat& x1, const eeFloat& y1, const eeFlo
|
||||
BR->Draw();
|
||||
}
|
||||
|
||||
void cPrimitives::DrawQuad( const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3, const eeFloat& x4, const eeFloat& y4, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const eeColorA& Color4, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth, const eeFloat& OffsetX, const eeFloat& OffsetY ) {
|
||||
void cPrimitives::DrawQuad( const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3, const eeFloat& x4, const eeFloat& y4, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const eeColorA& Color4, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth, const eeFloat& OffsetX, const eeFloat& OffsetY ) {
|
||||
BR->SetTexture( NULL );
|
||||
BR->SetBlendFunc( blend );
|
||||
BR->SetPreBlendFunc( blend );
|
||||
|
||||
switch(fillmode) {
|
||||
case DRAW_LINE:
|
||||
case EE_DRAW_LINE:
|
||||
BR->SetLineWidth( lineWidth );
|
||||
|
||||
BR->LineLoopBegin();
|
||||
@@ -226,7 +226,7 @@ void cPrimitives::DrawQuad( const eeFloat& x1, const eeFloat& y1, const eeFloat&
|
||||
BR->LineLoopSetColorFree( Color2, Color3 );
|
||||
BR->BatchLineLoop( OffsetX + x3, OffsetY + y3, OffsetX + x4, OffsetY + y4 );
|
||||
break;
|
||||
case DRAW_FILL:
|
||||
case EE_DRAW_FILL:
|
||||
BR->QuadsBegin();
|
||||
BR->QuadsSetColorFree( Color1, Color2, Color3, Color4 );
|
||||
BR->BatchQuadFree( OffsetX + x1, OffsetY + y1, OffsetX + x2, OffsetY + y2, OffsetX + x3, OffsetY + y3, OffsetX + x4, OffsetY + y4 );
|
||||
@@ -236,12 +236,12 @@ void cPrimitives::DrawQuad( const eeFloat& x1, const eeFloat& y1, const eeFloat&
|
||||
BR->Draw();
|
||||
}
|
||||
|
||||
void cPrimitives::DrawPolygon(const eePolygon2f& p, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth) {
|
||||
void cPrimitives::DrawPolygon(const eePolygon2f& p, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth) {
|
||||
BR->SetTexture( NULL );
|
||||
BR->SetBlendFunc( blend );
|
||||
BR->SetPreBlendFunc( blend );
|
||||
|
||||
switch(fillmode) {
|
||||
case DRAW_LINE:
|
||||
case EE_DRAW_LINE:
|
||||
BR->SetLineWidth( lineWidth );
|
||||
|
||||
BR->LineLoopBegin();
|
||||
@@ -251,7 +251,7 @@ void cPrimitives::DrawPolygon(const eePolygon2f& p, const EE_FILLMODE& fillmode,
|
||||
BR->BatchLineLoop( p[i].x, p[i].y, p[i+1].x, p[i+1].y );
|
||||
|
||||
break;
|
||||
case DRAW_FILL:
|
||||
case EE_DRAW_FILL:
|
||||
BR->PolygonSetColor( mColor );
|
||||
BR->BatchPolygon( p );
|
||||
break;
|
||||
@@ -260,27 +260,27 @@ void cPrimitives::DrawPolygon(const eePolygon2f& p, const EE_FILLMODE& fillmode,
|
||||
BR->Draw();
|
||||
}
|
||||
|
||||
void cPrimitives::DrawRectangle( const eeRectf& R, const eeColorA& TopLeft, const eeColorA& BottomLeft, const eeColorA& BottomRight, const eeColorA& TopRight, const eeFloat& Angle, const eeFloat& Scale, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth, const eeUint& Corners) {
|
||||
void cPrimitives::DrawRectangle( const eeRectf& R, const eeColorA& TopLeft, const eeColorA& BottomLeft, const eeColorA& BottomRight, const eeColorA& TopRight, const eeFloat& Angle, const eeFloat& Scale, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth, const eeUint& Corners) {
|
||||
DrawRectangle( R.Left, R.Top, R.Right - R.Left, R.Bottom - R.Top, TopLeft, BottomLeft, BottomRight, TopRight, Angle, Scale, fillmode, blend, lineWidth, Corners);
|
||||
}
|
||||
|
||||
void cPrimitives::DrawRectangle( const eeRectf& R, const eeFloat& Angle, const eeFloat& Scale, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth, const eeUint& Corners) {
|
||||
void cPrimitives::DrawRectangle( const eeRectf& R, const eeFloat& Angle, const eeFloat& Scale, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth, const eeUint& Corners) {
|
||||
DrawRectangle( R.Left, R.Top, R.Right - R.Left, R.Bottom - R.Top, mColor, mColor, mColor, mColor, Angle, Scale, fillmode, blend, lineWidth, Corners);
|
||||
}
|
||||
|
||||
void cPrimitives::DrawRectangle(const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeFloat& Angle, const eeFloat& Scale, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth, const eeUint& Corners) {
|
||||
void cPrimitives::DrawRectangle(const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeFloat& Angle, const eeFloat& Scale, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth, const eeUint& Corners) {
|
||||
DrawRectangle(x, y, width, height, mColor, mColor, mColor, mColor, Angle, Scale, fillmode, blend, lineWidth, Corners);
|
||||
}
|
||||
|
||||
void cPrimitives::DrawRoundedRectangle( const eeRectf& R, const eeColorA& TopLeft, const eeColorA& BottomLeft, const eeColorA& BottomRight, const eeColorA& TopRight, const eeFloat& Angle, const eeFloat& Scale, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth, const eeUint& Corners ) {
|
||||
void cPrimitives::DrawRoundedRectangle( const eeRectf& R, const eeColorA& TopLeft, const eeColorA& BottomLeft, const eeColorA& BottomRight, const eeColorA& TopRight, const eeFloat& Angle, const eeFloat& Scale, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth, const eeUint& Corners ) {
|
||||
DrawRoundedRectangle( R.Left, R.Top, R.Right - R.Left, R.Bottom - R.Top, TopLeft, BottomLeft, BottomRight, TopRight, Angle, Scale, fillmode, blend, lineWidth, Corners);
|
||||
}
|
||||
|
||||
void cPrimitives::DrawRoundedRectangle( const eeRectf& R, const eeFloat& Angle, const eeFloat& Scale, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth, const eeUint& Corners) {
|
||||
void cPrimitives::DrawRoundedRectangle( const eeRectf& R, const eeFloat& Angle, const eeFloat& Scale, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth, const eeUint& Corners) {
|
||||
DrawRoundedRectangle( R.Left, R.Top, R.Right - R.Left, R.Bottom - R.Top, mColor, mColor, mColor, mColor, Angle, Scale, fillmode, blend, lineWidth, Corners);
|
||||
}
|
||||
|
||||
void cPrimitives::DrawRoundedRectangle(const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeFloat& Angle, const eeFloat& Scale, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth, const eeUint& Corners ) {
|
||||
void cPrimitives::DrawRoundedRectangle(const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeFloat& Angle, const eeFloat& Scale, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth, const eeUint& Corners ) {
|
||||
DrawRoundedRectangle(x, y, width, height, mColor, mColor, mColor, mColor, Angle, Scale, fillmode, blend, lineWidth, Corners);
|
||||
}
|
||||
|
||||
@@ -292,7 +292,7 @@ void cPrimitives::DrawPoint(const eeVector2f& p, const eeFloat& pointSize) {
|
||||
DrawPoint(p.x, p.y, pointSize);
|
||||
}
|
||||
|
||||
void cPrimitives::DrawCircle(const eeVector2f& p, const eeFloat& radius, Uint32 points, const EE_FILLMODE& fillmode, const eeFloat& lineWidth) {
|
||||
void cPrimitives::DrawCircle(const eeVector2f& p, const eeFloat& radius, Uint32 points, const EE_FILL_MODE& fillmode, const eeFloat& lineWidth) {
|
||||
DrawCircle(p.x, p.y, radius, points, fillmode, lineWidth);
|
||||
}
|
||||
|
||||
@@ -301,39 +301,39 @@ void cPrimitives::SetColor( const eeColorA& Color ) {
|
||||
glColor4ub( mColor.R(), mColor.G(), mColor.B(), mColor.A() );
|
||||
}
|
||||
|
||||
void cPrimitives::DrawTriangle(const eeTriangle2f& t, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth) {
|
||||
void cPrimitives::DrawTriangle(const eeTriangle2f& t, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth) {
|
||||
DrawTriangle( t.V[0], t.V[1], t.V[2], mColor, mColor, mColor, fillmode, blend, lineWidth );
|
||||
}
|
||||
|
||||
void cPrimitives::DrawTriangle(const eeTriangle2f& t, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth) {
|
||||
void cPrimitives::DrawTriangle(const eeTriangle2f& t, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth) {
|
||||
DrawTriangle( t.V[0], t.V[1], t.V[2], Color1, Color2, Color3, fillmode, blend, lineWidth );
|
||||
}
|
||||
|
||||
void cPrimitives::DrawTriangle(const eeVector2f& p1, const eeVector2f& p2, const eeVector2f& p3, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth) {
|
||||
void cPrimitives::DrawTriangle(const eeVector2f& p1, const eeVector2f& p2, const eeVector2f& p3, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth) {
|
||||
DrawTriangle(p1.x, p1.y, p2.x, p2.y, p3.x, p3.y, Color1, Color2, Color3, fillmode, blend, lineWidth);
|
||||
}
|
||||
|
||||
void cPrimitives::DrawTriangle(const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth) {
|
||||
void cPrimitives::DrawTriangle(const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth) {
|
||||
DrawTriangle(x1, y1, x2, y2, x3, y3, mColor, mColor, mColor, fillmode, blend, lineWidth);
|
||||
}
|
||||
|
||||
void cPrimitives::DrawTriangle(const eeVector2f& p1, const eeVector2f& p2, const eeVector2f& p3, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth) {
|
||||
void cPrimitives::DrawTriangle(const eeVector2f& p1, const eeVector2f& p2, const eeVector2f& p3, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth) {
|
||||
DrawTriangle(p1.x, p1.y, p2.x, p2.y, p3.x, p3.y, mColor, mColor, mColor, fillmode, blend, lineWidth);
|
||||
}
|
||||
|
||||
void cPrimitives::DrawQuad(const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3, const eeFloat& x4, const eeFloat& y4, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth, const eeFloat& OffsetX, const eeFloat& OffsetY ) {
|
||||
void cPrimitives::DrawQuad(const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3, const eeFloat& x4, const eeFloat& y4, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth, const eeFloat& OffsetX, const eeFloat& OffsetY ) {
|
||||
DrawQuad(x1, y1, x2, y2, x3, y3, x4, y4, mColor, mColor, mColor, mColor, fillmode, blend, lineWidth, OffsetX, OffsetY);
|
||||
}
|
||||
|
||||
void cPrimitives::DrawQuad(const eeVector2f& p1, const eeVector2f& p2, const eeVector2f& p3, const eeVector2f& p4, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const eeColorA& Color4, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth, const eeFloat& OffsetX, const eeFloat& OffsetY ) {
|
||||
void cPrimitives::DrawQuad(const eeVector2f& p1, const eeVector2f& p2, const eeVector2f& p3, const eeVector2f& p4, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const eeColorA& Color4, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth, const eeFloat& OffsetX, const eeFloat& OffsetY ) {
|
||||
DrawQuad(p1.x, p1.y, p2.x, p2.y, p3.x, p3.y, p4.x, p4.y, Color1, Color2, Color3, Color4, fillmode, blend, lineWidth, OffsetX, OffsetY);
|
||||
}
|
||||
|
||||
void cPrimitives::DrawQuad(const eeVector2f& p1, const eeVector2f& p2, const eeVector2f& p3, const eeVector2f& p4, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth, const eeFloat& OffsetX, const eeFloat& OffsetY ) {
|
||||
void cPrimitives::DrawQuad(const eeVector2f& p1, const eeVector2f& p2, const eeVector2f& p3, const eeVector2f& p4, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth, const eeFloat& OffsetX, const eeFloat& OffsetY ) {
|
||||
DrawQuad(p1.x, p1.y, p2.x, p2.y, p3.x, p3.y, p4.x, p4.y, mColor, mColor, mColor, mColor, fillmode, blend, lineWidth, OffsetX, OffsetY);
|
||||
}
|
||||
|
||||
void cPrimitives::DrawQuad(const eeQuad2f& q, const EE_FILLMODE& fillmode, const EE_RENDERALPHAS& blend, const eeFloat& lineWidth, const eeFloat& OffsetX, const eeFloat& OffsetY ) {
|
||||
void cPrimitives::DrawQuad(const eeQuad2f& q, const EE_FILL_MODE& fillmode, const EE_PRE_BLEND_FUNC& blend, const eeFloat& lineWidth, const eeFloat& OffsetX, const eeFloat& OffsetY ) {
|
||||
DrawQuad(q.V[0].x, q.V[0].y, q.V[1].x, q.V[1].y, q.V[2].x, q.V[2].y, q.V[3].x, q.V[3].y, mColor, mColor, mColor, mColor, fillmode, blend, lineWidth, OffsetX, OffsetY);
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ class EE_API cPrimitives {
|
||||
* @param fillmode Draw filled or only lines
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawCircle(const eeVector2f& p, const eeFloat& radius, Uint32 points = 360, const EE_FILLMODE& fillmode = DRAW_FILL, const eeFloat& lineWidth = 1.0f);
|
||||
void DrawCircle(const eeVector2f& p, const eeFloat& radius, Uint32 points = 360, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const eeFloat& lineWidth = 1.0f);
|
||||
|
||||
/** Draw a circle on the screen
|
||||
* @param x Point x axis
|
||||
@@ -59,7 +59,7 @@ class EE_API cPrimitives {
|
||||
* @param fillmode Draw filled or only lines
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawCircle(const eeFloat& x, const eeFloat& y, const eeFloat& radius, Uint32 points = 360, const EE_FILLMODE& fillmode = DRAW_FILL, const eeFloat& lineWidth = 1.0f);
|
||||
void DrawCircle(const eeFloat& x, const eeFloat& y, const eeFloat& radius, Uint32 points = 360, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const eeFloat& lineWidth = 1.0f);
|
||||
|
||||
/** Draw a triangle on the screen
|
||||
* @param x1 First Point x axis
|
||||
@@ -75,7 +75,7 @@ class EE_API cPrimitives {
|
||||
* @param blend The Blend Mode
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawTriangle(const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f);
|
||||
void DrawTriangle(const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f);
|
||||
|
||||
/** Draw a triangle on the screen
|
||||
* @param x1 First Point x axis
|
||||
@@ -88,7 +88,7 @@ class EE_API cPrimitives {
|
||||
* @param blend The Blend Mode
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawTriangle(const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f);
|
||||
void DrawTriangle(const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f);
|
||||
|
||||
/** Draw a triangle on the screen
|
||||
* @param p1 First Point axis
|
||||
@@ -101,7 +101,7 @@ class EE_API cPrimitives {
|
||||
* @param blend The Blend Mode
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawTriangle(const eeVector2f& p1, const eeVector2f& p2, const eeVector2f& p3, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f);
|
||||
void DrawTriangle(const eeVector2f& p1, const eeVector2f& p2, const eeVector2f& p3, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f);
|
||||
|
||||
/** Draw a triangle on the screen
|
||||
* @param p1 First Point axis
|
||||
@@ -111,7 +111,7 @@ class EE_API cPrimitives {
|
||||
* @param blend The Blend Mode
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawTriangle(const eeVector2f& p1, const eeVector2f& p2, const eeVector2f& p3, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f);
|
||||
void DrawTriangle(const eeVector2f& p1, const eeVector2f& p2, const eeVector2f& p3, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f);
|
||||
|
||||
/** Draw a triangle on the screen
|
||||
* @param t The Triangle (eeTriangle2f)
|
||||
@@ -119,7 +119,7 @@ class EE_API cPrimitives {
|
||||
* @param blend The Blend Mode
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawTriangle(const eeTriangle2f& t, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f);
|
||||
void DrawTriangle(const eeTriangle2f& t, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f);
|
||||
|
||||
/** Draw a triangle on the screen
|
||||
* @param t The Triangle (eeTriangle2f)
|
||||
@@ -130,7 +130,7 @@ class EE_API cPrimitives {
|
||||
* @param blend The Blend Mode
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawTriangle(const eeTriangle2f& t, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f);
|
||||
void DrawTriangle(const eeTriangle2f& t, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f);
|
||||
|
||||
/** Draw a rectangle on the screen
|
||||
* @param x Screen x axis
|
||||
@@ -143,9 +143,9 @@ class EE_API cPrimitives {
|
||||
* @param blend The Blend Mode
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawRectangle(const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeFloat& Angle = 0, const eeFloat& Scale = 1, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeUint& Corners = 0 );
|
||||
void DrawRectangle(const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeFloat& Angle = 0, const eeFloat& Scale = 1, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeUint& Corners = 0 );
|
||||
|
||||
void DrawRoundedRectangle(const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeFloat& Angle = 0, const eeFloat& Scale = 1, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeUint& Corners = 8 );
|
||||
void DrawRoundedRectangle(const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeFloat& Angle = 0, const eeFloat& Scale = 1, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeUint& Corners = 8 );
|
||||
|
||||
/** Draw a rectangle on the screen
|
||||
* @param x Screen x axis
|
||||
@@ -162,9 +162,9 @@ class EE_API cPrimitives {
|
||||
* @param blend The Blend Mode
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawRectangle(const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeColorA& TopLeft, const eeColorA& BottomLeft, const eeColorA& BottomRight, const eeColorA& TopRight, const eeFloat& Angle = 0, const eeFloat& Scale = 1, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeUint& Corners = 0 );
|
||||
void DrawRectangle(const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeColorA& TopLeft, const eeColorA& BottomLeft, const eeColorA& BottomRight, const eeColorA& TopRight, const eeFloat& Angle = 0, const eeFloat& Scale = 1, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeUint& Corners = 0 );
|
||||
|
||||
void DrawRoundedRectangle(const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeColorA& TopLeft, const eeColorA& BottomLeft, const eeColorA& BottomRight, const eeColorA& TopRight, const eeFloat& Angle = 0, const eeFloat& Scale = 1, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeUint& Corners = 8 );
|
||||
void DrawRoundedRectangle(const eeFloat& x, const eeFloat& y, const eeFloat& width, const eeFloat& height, const eeColorA& TopLeft, const eeColorA& BottomLeft, const eeColorA& BottomRight, const eeColorA& TopRight, const eeFloat& Angle = 0, const eeFloat& Scale = 1, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeUint& Corners = 8 );
|
||||
|
||||
/** Draw a rectangle on the screen
|
||||
* @param R The Rectangle eeRectf
|
||||
@@ -174,9 +174,9 @@ class EE_API cPrimitives {
|
||||
* @param blend The Blend Mode
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawRectangle( const eeRectf& R, const eeFloat& Angle = 0, const eeFloat& Scale = 1, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeUint& Corners = 0 );
|
||||
void DrawRectangle( const eeRectf& R, const eeFloat& Angle = 0, const eeFloat& Scale = 1, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeUint& Corners = 0 );
|
||||
|
||||
void DrawRoundedRectangle( const eeRectf& R, const eeFloat& Angle = 0, const eeFloat& Scale = 1, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeUint& Corners = 8 );
|
||||
void DrawRoundedRectangle( const eeRectf& R, const eeFloat& Angle = 0, const eeFloat& Scale = 1, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeUint& Corners = 8 );
|
||||
|
||||
/** Draw a rectangle on the screen
|
||||
* @param R The Rectangle eeRectf
|
||||
@@ -190,9 +190,9 @@ class EE_API cPrimitives {
|
||||
* @param blend The Blend Mode
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawRectangle( const eeRectf& R, const eeColorA& TopLeft, const eeColorA& BottomLeft, const eeColorA& BottomRight, const eeColorA& TopRight, const eeFloat& Angle = 0, const eeFloat& Scale = 1, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeUint& Corners = 0 );
|
||||
void DrawRectangle( const eeRectf& R, const eeColorA& TopLeft, const eeColorA& BottomLeft, const eeColorA& BottomRight, const eeColorA& TopRight, const eeFloat& Angle = 0, const eeFloat& Scale = 1, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeUint& Corners = 0 );
|
||||
|
||||
void DrawRoundedRectangle( const eeRectf& R, const eeColorA& TopLeft, const eeColorA& BottomLeft, const eeColorA& BottomRight, const eeColorA& TopRight, const eeFloat& Angle = 0, const eeFloat& Scale = 1, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeUint& Corners = 8 );
|
||||
void DrawRoundedRectangle( const eeRectf& R, const eeColorA& TopLeft, const eeColorA& BottomLeft, const eeColorA& BottomRight, const eeColorA& TopRight, const eeFloat& Angle = 0, const eeFloat& Scale = 1, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeUint& Corners = 8 );
|
||||
|
||||
/** Draw a four edges polygon on screen
|
||||
* @param x1 First Point x axis
|
||||
@@ -211,7 +211,7 @@ class EE_API cPrimitives {
|
||||
* @param blend The Blend Mode
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawQuad(const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3, const eeFloat& x4, const eeFloat& y4, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const eeColorA& Color4, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeFloat& OffsetX = 0, const eeFloat& OffsetY = 0);
|
||||
void DrawQuad(const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3, const eeFloat& x4, const eeFloat& y4, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const eeColorA& Color4, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeFloat& OffsetX = 0, const eeFloat& OffsetY = 0);
|
||||
|
||||
/** Draw a four edges polygon on screen
|
||||
* @param x1 First Point x axis
|
||||
@@ -226,7 +226,7 @@ class EE_API cPrimitives {
|
||||
* @param blend The Blend Mode
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawQuad(const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3, const eeFloat& x4, const eeFloat& y4, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeFloat& OffsetX = 0, const eeFloat& OffsetY = 0);
|
||||
void DrawQuad(const eeFloat& x1, const eeFloat& y1, const eeFloat& x2, const eeFloat& y2, const eeFloat& x3, const eeFloat& y3, const eeFloat& x4, const eeFloat& y4, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeFloat& OffsetX = 0, const eeFloat& OffsetY = 0);
|
||||
|
||||
/** Draw a four edges polygon on screen
|
||||
* @param p1 First Point
|
||||
@@ -241,7 +241,7 @@ class EE_API cPrimitives {
|
||||
* @param blend The Blend Mode
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawQuad(const eeVector2f& p1, const eeVector2f& p2, const eeVector2f& p3, const eeVector2f& p4, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const eeColorA& Color4, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeFloat& OffsetX = 0, const eeFloat& OffsetY = 0);
|
||||
void DrawQuad(const eeVector2f& p1, const eeVector2f& p2, const eeVector2f& p3, const eeVector2f& p4, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const eeColorA& Color4, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeFloat& OffsetX = 0, const eeFloat& OffsetY = 0);
|
||||
|
||||
/** Draw a four edges polygon on screen
|
||||
* @param p1 First Point
|
||||
@@ -252,7 +252,7 @@ class EE_API cPrimitives {
|
||||
* @param blend The Blend Mode
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawQuad(const eeVector2f& p1, const eeVector2f& p2, const eeVector2f& p3, const eeVector2f& p4, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeFloat& OffsetX = 0, const eeFloat& OffsetY = 0);
|
||||
void DrawQuad(const eeVector2f& p1, const eeVector2f& p2, const eeVector2f& p3, const eeVector2f& p4, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeFloat& OffsetX = 0, const eeFloat& OffsetY = 0);
|
||||
|
||||
/** Draw a four edges polygon on screen
|
||||
* @param q The Quad
|
||||
@@ -260,7 +260,7 @@ class EE_API cPrimitives {
|
||||
* @param blend The Blend Mode
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawQuad(const eeQuad2f& q, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeFloat& OffsetX = 0, const eeFloat& OffsetY = 0);
|
||||
void DrawQuad(const eeQuad2f& q, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f, const eeFloat& OffsetX = 0, const eeFloat& OffsetY = 0);
|
||||
|
||||
/** Draw a polygon on screen
|
||||
* @param p The Polygon
|
||||
@@ -268,7 +268,7 @@ class EE_API cPrimitives {
|
||||
* @param blend The Blend Mode
|
||||
* @param lineWidth The line width ( default 1.0f )
|
||||
*/
|
||||
void DrawPolygon(const eePolygon2f& p, const EE_FILLMODE& fillmode = DRAW_FILL, const EE_RENDERALPHAS& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f);
|
||||
void DrawPolygon(const eePolygon2f& p, const EE_FILL_MODE& fillmode = EE_DRAW_FILL, const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL, const eeFloat& lineWidth = 1.0f);
|
||||
|
||||
/** Set the current color for drawing primitives */
|
||||
void SetColor( const eeColorA& Color );
|
||||
|
||||
@@ -8,12 +8,12 @@ cScrollParallax::cScrollParallax() {
|
||||
|
||||
cScrollParallax::~cScrollParallax() {}
|
||||
|
||||
cScrollParallax::cScrollParallax( const Uint32& TexId, const eeFloat& DestX, const eeFloat& DestY, const eeFloat& DestWidth, const eeFloat& DestHeight, const eeRecti& SrcRECT, const eeRGBA& Color, const Uint8& Alpha, const EE_RENDERALPHAS& Effect ) {
|
||||
cScrollParallax::cScrollParallax( const Uint32& TexId, const eeFloat& DestX, const eeFloat& DestY, const eeFloat& DestWidth, const eeFloat& DestHeight, const eeRecti& SrcRECT, const eeRGBA& Color, const Uint8& Alpha, const EE_PRE_BLEND_FUNC& Effect ) {
|
||||
TF = cTextureFactory::instance();
|
||||
Create( TexId, DestX, DestY, DestWidth, DestHeight, SrcRECT, Color, Alpha, Effect );
|
||||
}
|
||||
|
||||
bool cScrollParallax::Create(const Uint32& TexId, const eeFloat& DestX, const eeFloat& DestY, const eeFloat& DestWidth, const eeFloat& DestHeight, const eeRecti& SrcRECT, const eeRGBA& Color, const Uint8& Alpha, const EE_RENDERALPHAS& Effect ) {
|
||||
bool cScrollParallax::Create(const Uint32& TexId, const eeFloat& DestX, const eeFloat& DestY, const eeFloat& DestWidth, const eeFloat& DestHeight, const eeRecti& SrcRECT, const eeRGBA& Color, const Uint8& Alpha, const EE_PRE_BLEND_FUNC& Effect ) {
|
||||
cTexture * Tex = TF->GetTexture( TexId );
|
||||
|
||||
if ( NULL == Tex )
|
||||
|
||||
@@ -14,7 +14,7 @@ class EE_API cScrollParallax {
|
||||
~cScrollParallax();
|
||||
|
||||
/** Constructor that create's the Scroll Parallax */
|
||||
cScrollParallax(const Uint32& TexId, const eeFloat& DestX, const eeFloat& DestY, const eeFloat& DestWidth, const eeFloat& DestHeight, const eeRecti& SrcRECT = eeRecti(0, 0, 0, 0), const eeRGBA& Color = eeRGBA(255, 255, 255, 255), const Uint8& Alpha = 255, const EE_RENDERALPHAS& Effect = ALPHA_NORMAL);
|
||||
cScrollParallax(const Uint32& TexId, const eeFloat& DestX, const eeFloat& DestY, const eeFloat& DestWidth, const eeFloat& DestHeight, const eeRecti& SrcRECT = eeRecti(0, 0, 0, 0), const eeRGBA& Color = eeRGBA(255, 255, 255, 255), const Uint8& Alpha = 255, const EE_PRE_BLEND_FUNC& Effect = ALPHA_NORMAL);
|
||||
|
||||
/** Create's the Scroll Parallax
|
||||
* @param TexId The Internal Texture Id
|
||||
@@ -28,7 +28,7 @@ class EE_API cScrollParallax {
|
||||
* @param Effect The Blend Mode ( default ALPHA_NORMAL )
|
||||
* @return True if success
|
||||
*/
|
||||
bool Create(const Uint32& TexId, const eeFloat& DestX, const eeFloat& DestY, const eeFloat& DestWidth, const eeFloat& DestHeight, const eeRecti& SrcRECT = eeRecti(0, 0, 0, 0), const eeRGBA& Color = eeRGBA(255, 255, 255, 255), const Uint8& Alpha = 255, const EE_RENDERALPHAS& Effect = ALPHA_NORMAL);
|
||||
bool Create(const Uint32& TexId, const eeFloat& DestX, const eeFloat& DestY, const eeFloat& DestWidth, const eeFloat& DestHeight, const eeRecti& SrcRECT = eeRecti(0, 0, 0, 0), const eeRGBA& Color = eeRGBA(255, 255, 255, 255), const Uint8& Alpha = 255, const EE_PRE_BLEND_FUNC& Effect = ALPHA_NORMAL);
|
||||
|
||||
/** Set the Alpha */
|
||||
void Alpha( const Uint8& Alpha ) { mSpr.Alpha( Alpha ); }
|
||||
@@ -43,7 +43,7 @@ class EE_API cScrollParallax {
|
||||
eeRGBA Color() const { return mSpr.Color(); }
|
||||
|
||||
/** Set the Blend Mode */
|
||||
void SetRenderAlphas( const EE_RENDERALPHAS& Effect ) { mSpr.SetRenderAlphas( Effect ); }
|
||||
void SetRenderAlphas( const EE_PRE_BLEND_FUNC& Effect ) { mSpr.SetRenderAlphas( Effect ); }
|
||||
|
||||
/** Draw the Scroll Parallax
|
||||
* @param XDirVel X Direction Speed to move the parallax.
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#include "cshaderprogram.hpp"
|
||||
#include "../window/cengine.hpp"
|
||||
#include "cshaderprogrammanager.hpp"
|
||||
#include "glhelper.hpp"
|
||||
|
||||
using namespace EE::Window;
|
||||
using namespace EE::Graphics::Private;
|
||||
|
||||
namespace EE { namespace Graphics {
|
||||
|
||||
@@ -111,7 +111,7 @@ void cShaderProgram::RemoveFromManager() {
|
||||
}
|
||||
|
||||
void cShaderProgram::Init() {
|
||||
if ( cEngine::instance()->ShadersSupported() && 0 == Id() ) {
|
||||
if ( cGL::instance()->ShadersSupported() && 0 == Id() ) {
|
||||
mGLId = glCreateProgram();
|
||||
mValid = false;
|
||||
mUniformLocations.clear();
|
||||
|
||||
@@ -159,12 +159,12 @@ void cShape::OffsetY( const eeFloat& offsety ) {
|
||||
mOffSetY = offsety;
|
||||
}
|
||||
|
||||
void cShape::Draw( const eeFloat& X, const eeFloat& Y, const eeRGBA& Color, const eeFloat& Angle, const eeFloat& Scale, const EE_RENDERALPHAS& Blend, const EE_RENDERTYPE& Effect, const bool& ScaleRendered ) {
|
||||
void cShape::Draw( const eeFloat& X, const eeFloat& Y, const eeRGBA& Color, const eeFloat& Angle, const eeFloat& Scale, const EE_PRE_BLEND_FUNC& Blend, const EE_RENDERTYPE& Effect, const bool& ScaleRendered ) {
|
||||
if ( NULL != mTexture )
|
||||
mTexture->DrawEx( X + mOffSetX, Y + mOffSetY, mDestWidth, mDestHeight, Angle, Scale, Color, Color, Color, Color, Blend, Effect, ScaleRendered, mSrcRect );
|
||||
}
|
||||
|
||||
void cShape::Draw( const eeFloat& X, const eeFloat& Y, const eeFloat& Angle, const eeFloat& Scale, const eeRGBA& Color0, const eeRGBA& Color1, const eeRGBA& Color2, const eeRGBA& Color3, const EE_RENDERALPHAS& Blend, const EE_RENDERTYPE& Effect, const bool& ScaleRendered ) {
|
||||
void cShape::Draw( const eeFloat& X, const eeFloat& Y, const eeFloat& Angle, const eeFloat& Scale, const eeRGBA& Color0, const eeRGBA& Color1, const eeRGBA& Color2, const eeRGBA& Color3, const EE_PRE_BLEND_FUNC& Blend, const EE_RENDERTYPE& Effect, const bool& ScaleRendered ) {
|
||||
if ( NULL != mTexture )
|
||||
mTexture->DrawEx( X + mOffSetX, Y + mOffSetY, mDestWidth, mDestHeight, Angle, Scale, Color0, Color1, Color2, Color3, Blend, Effect, ScaleRendered, mSrcRect );
|
||||
}
|
||||
@@ -325,8 +325,8 @@ bool cShape::Unlock( const bool& KeepData, const bool& Modified ) {
|
||||
GLint PreviousTexture;
|
||||
glGetIntegerv(GL_TEXTURE_BINDING_2D, &PreviousTexture);
|
||||
|
||||
if ( PreviousTexture != (Int32)mTexture->Texture() )
|
||||
glBindTexture(GL_TEXTURE_2D, mTexture->Texture() );
|
||||
if ( PreviousTexture != (Int32)mTexture->Handle() )
|
||||
glBindTexture(GL_TEXTURE_2D, mTexture->Handle() );
|
||||
|
||||
Uint32 Channels = mTexture->Channels();
|
||||
Uint32 Channel = GL_RGBA;
|
||||
@@ -340,7 +340,7 @@ bool cShape::Unlock( const bool& KeepData, const bool& Modified ) {
|
||||
|
||||
glTexSubImage2D( GL_TEXTURE_2D, 0, mSrcRect.Left, mSrcRect.Top, mSrcRect.Size().Width(), mSrcRect.Size().Height(), Channel, GL_UNSIGNED_BYTE, reinterpret_cast<const void *> ( &mPixels[0] ) );
|
||||
|
||||
if ( PreviousTexture != (Int32)mTexture->Texture() )
|
||||
if ( PreviousTexture != (Int32)mTexture->Handle() )
|
||||
glBindTexture(GL_TEXTURE_2D, PreviousTexture);
|
||||
}
|
||||
|
||||
|
||||
@@ -51,9 +51,9 @@ class EE_API cShape {
|
||||
|
||||
void OffsetY( const eeFloat& offsety );
|
||||
|
||||
void Draw( const eeFloat& X, const eeFloat& Y, const eeRGBA& Color = eeRGBA(), const eeFloat& Angle = 0.f, const eeFloat& Scale = 1.f, const EE_RENDERALPHAS& Blend = ALPHA_NORMAL, const EE_RENDERTYPE& Effect = RN_NORMAL, const bool& ScaleRendered = true );
|
||||
void Draw( const eeFloat& X, const eeFloat& Y, const eeRGBA& Color = eeRGBA(), const eeFloat& Angle = 0.f, const eeFloat& Scale = 1.f, const EE_PRE_BLEND_FUNC& Blend = ALPHA_NORMAL, const EE_RENDERTYPE& Effect = RN_NORMAL, const bool& ScaleRendered = true );
|
||||
|
||||
void Draw( const eeFloat& X, const eeFloat& Y, const eeFloat& Angle, const eeFloat& Scale, const eeRGBA& Color0 = eeRGBA(), const eeRGBA& Color1 = eeRGBA(), const eeRGBA& Color2 = eeRGBA(), const eeRGBA& Color3 = eeRGBA(), const EE_RENDERALPHAS& Blend = ALPHA_NORMAL, const EE_RENDERTYPE& Effect = RN_NORMAL, const bool& ScaleRendered = true );
|
||||
void Draw( const eeFloat& X, const eeFloat& Y, const eeFloat& Angle, const eeFloat& Scale, const eeRGBA& Color0 = eeRGBA(), const eeRGBA& Color1 = eeRGBA(), const eeRGBA& Color2 = eeRGBA(), const eeRGBA& Color3 = eeRGBA(), const EE_PRE_BLEND_FUNC& Blend = ALPHA_NORMAL, const EE_RENDERTYPE& Effect = RN_NORMAL, const bool& ScaleRendered = true );
|
||||
|
||||
cTexture * GetTexture();
|
||||
|
||||
|
||||
@@ -166,7 +166,7 @@ void cSprite::Update( const eeFloat& x, const eeFloat& y, const eeFloat& Scale,
|
||||
|
||||
Uint32 cSprite::GetTexture(const eeUint& FrameNum, const eeUint& SubFrameNum) {
|
||||
if ( FrameNum < mFrames.size() && SubFrameNum < mFrameData.SubFrames )
|
||||
return mFrames[FrameNum].Spr[SubFrameNum]->Texture();
|
||||
return mFrames[FrameNum].Spr[SubFrameNum]->Id();
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -316,7 +316,7 @@ void cSprite::Animate( const eeFloat& ElapsedTime ) {
|
||||
|
||||
mFrameData.CurrentFrame = (eeUint)mFrameData.fCurrentFrame;
|
||||
|
||||
if ( !mReverseAnim && mFrameData.fCurrentFrame > Size + 1.0f ) {
|
||||
if ( !mReverseAnim && mFrameData.fCurrentFrame >= Size + 1.0f ) {
|
||||
if ( mRepeations < 0 ) {
|
||||
mFrameData.fCurrentFrame = 0.0f;
|
||||
mFrameData.CurrentFrame = 0;
|
||||
@@ -376,7 +376,7 @@ void cSprite::SetReverseFromStart() {
|
||||
mFrameData.CurrentFrame = Size;
|
||||
}
|
||||
|
||||
void cSprite::Draw( const EE_RENDERALPHAS& Blend, const EE_RENDERTYPE& Effect, const eeFloat& ElapsedTime ) {
|
||||
void cSprite::Draw( const EE_PRE_BLEND_FUNC& Blend, const EE_RENDERTYPE& Effect, const eeFloat& ElapsedTime ) {
|
||||
Animate( ElapsedTime );
|
||||
|
||||
cShape * S = GetCurrentShape();
|
||||
@@ -394,7 +394,7 @@ void cSprite::Draw() {
|
||||
Draw(mBlend, mEffect);
|
||||
}
|
||||
|
||||
void cSprite::Draw( const EE_RENDERALPHAS& Blend ) {
|
||||
void cSprite::Draw( const EE_PRE_BLEND_FUNC& Blend ) {
|
||||
Draw(Blend, mEffect);
|
||||
}
|
||||
|
||||
|
||||
@@ -117,7 +117,7 @@ class EE_API cSprite {
|
||||
void SetRenderType( const EE_RENDERTYPE& Effect ) { mEffect = Effect; }
|
||||
|
||||
/** Set the Blend Mode */
|
||||
void SetRenderAlphas( const EE_RENDERALPHAS& Blend ) { mBlend = Blend; }
|
||||
void SetRenderAlphas( const EE_PRE_BLEND_FUNC& Blend ) { mBlend = Blend; }
|
||||
|
||||
/** Reset the sprite as a new one. */
|
||||
void Reset();
|
||||
@@ -247,12 +247,12 @@ class EE_API cSprite {
|
||||
* @param Effect The Render Type
|
||||
* @param ElapsedTime The Elapsed Time for the animation ( -99999.f will take the elapsed time counted by the engine )
|
||||
*/
|
||||
void Draw( const EE_RENDERALPHAS& Blend, const EE_RENDERTYPE& Effect, const eeFloat& ElapsedTime = -99999.f );
|
||||
void Draw( const EE_PRE_BLEND_FUNC& Blend, const EE_RENDERTYPE& Effect, const eeFloat& ElapsedTime = -99999.f );
|
||||
|
||||
/** Draw the sprite to the screen forcing the Blend Mode
|
||||
* @param Blend The Blend Mode
|
||||
*/
|
||||
void Draw( const EE_RENDERALPHAS& Blend );
|
||||
void Draw( const EE_PRE_BLEND_FUNC& Blend );
|
||||
|
||||
/** Draw the sprite to the screen forcing the Render Type
|
||||
* @param Effect The Render Type
|
||||
@@ -317,7 +317,7 @@ class EE_API cSprite {
|
||||
eeFloat mX, mY, mAngle, mScale, mAnimSpeed;
|
||||
bool mAutoAnim;
|
||||
bool mScaleCentered;
|
||||
EE_RENDERALPHAS mBlend;
|
||||
EE_PRE_BLEND_FUNC mBlend;
|
||||
EE_RENDERTYPE mEffect;
|
||||
|
||||
eeRGBA mColor, mColor0, mColor1, mColor2, mColor3;
|
||||
|
||||
@@ -8,7 +8,9 @@ cTextCache::cTextCache() :
|
||||
mCachedWidth(0.f),
|
||||
mNumLines(1),
|
||||
mFontColor(0xFFFFFFFF),
|
||||
mFontShadowColor(0xFF000000)
|
||||
mFontShadowColor(0xFF000000),
|
||||
mCachedCoords(false),
|
||||
mFlags(0)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -96,6 +98,8 @@ void cTextCache::Cache() {
|
||||
mFont->CacheWidth( mText, mLinesWidth, mCachedWidth, mNumLines );
|
||||
else
|
||||
mCachedWidth = 0;
|
||||
|
||||
mCachedCoords = false;
|
||||
}
|
||||
|
||||
eeFloat cTextCache::GetTextWidth() {
|
||||
@@ -110,7 +114,7 @@ const std::vector<eeFloat>& cTextCache::LinesWidth() {
|
||||
return mLinesWidth;
|
||||
}
|
||||
|
||||
void cTextCache::Draw( const eeFloat& X, const eeFloat& Y, const Uint32& Flags, const eeFloat& Scale, const eeFloat& Angle, const EE_RENDERALPHAS& Effect ) {
|
||||
void cTextCache::Draw( const eeFloat& X, const eeFloat& Y, const Uint32& Flags, const eeFloat& Scale, const eeFloat& Angle, const EE_PRE_BLEND_FUNC& Effect ) {
|
||||
if ( NULL != mFont ) {
|
||||
eeColorA FontColor = mFont->Color();
|
||||
eeColorA FontShadowColor = mFont->ShadowColor();
|
||||
@@ -118,11 +122,28 @@ void cTextCache::Draw( const eeFloat& X, const eeFloat& Y, const Uint32& Flags,
|
||||
mFont->Color( mFontColor );
|
||||
mFont->ShadowColor( mFontShadowColor );
|
||||
|
||||
mFont->Draw( *this, X, Y, Flags, Scale, Angle, Effect );
|
||||
if ( mFlags != Flags ) {
|
||||
mFlags = Flags;
|
||||
mCachedCoords = false;
|
||||
}
|
||||
|
||||
glTranslatef( X, Y, 0.f );
|
||||
|
||||
mFont->Draw( *this, 0, 0, Flags, Scale, Angle, Effect );
|
||||
|
||||
glTranslatef( -X, -Y, 0.f );
|
||||
|
||||
mFont->Color( FontColor );
|
||||
mFont->ShadowColor( FontShadowColor );
|
||||
}
|
||||
}
|
||||
|
||||
const bool& cTextCache::CachedCoords() const {
|
||||
return mCachedCoords;
|
||||
}
|
||||
|
||||
void cTextCache::CachedCoords( const bool& cached ) {
|
||||
mCachedCoords = cached;
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
@@ -37,7 +37,7 @@ class EE_API cTextCache {
|
||||
|
||||
std::vector<eeColorA>& Colors();
|
||||
|
||||
void Draw( const eeFloat& X, const eeFloat& Y, const Uint32& Flags = 0, const eeFloat& Scale = 1.0f, const eeFloat& Angle = 0, const EE_RENDERALPHAS& Effect = ALPHA_NORMAL );
|
||||
void Draw( const eeFloat& X, const eeFloat& Y, const Uint32& Flags = 0, const eeFloat& Scale = 1.0f, const eeFloat& Angle = 0, const EE_PRE_BLEND_FUNC& Effect = ALPHA_NORMAL );
|
||||
|
||||
void Cache();
|
||||
|
||||
@@ -53,6 +53,8 @@ class EE_API cTextCache {
|
||||
/** Set the shadow color of the string rendered */
|
||||
void ShadowColor(const eeColorA& Color);
|
||||
protected:
|
||||
friend class cFont;
|
||||
|
||||
std::wstring mText;
|
||||
cFont * mFont;
|
||||
std::vector<eeFloat> mLinesWidth;
|
||||
@@ -64,8 +66,14 @@ class EE_API cTextCache {
|
||||
|
||||
std::vector<eeVertexCoords> mRenderCoords;
|
||||
std::vector<eeColorA> mColors;
|
||||
bool mCachedCoords;
|
||||
Uint32 mFlags;
|
||||
|
||||
void UpdateCoords();
|
||||
|
||||
const bool& CachedCoords() const;
|
||||
|
||||
void CachedCoords( const bool& cached );
|
||||
};
|
||||
|
||||
}}
|
||||
|
||||
@@ -13,7 +13,7 @@ cTexture::cTexture() :
|
||||
mFlags(0),
|
||||
mColorKey(eeRGB(true)),
|
||||
mClampMode( EE_CLAMP_TO_EDGE ),
|
||||
mFilter( TEX_LINEAR )
|
||||
mFilter( EE_TEX_LINEAR )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ void cTexture::Create( const Uint32& texture, const eeUint& width, const eeUint&
|
||||
mSize = MemSize;
|
||||
mColorKey = ColorKey;
|
||||
mClampMode = ClampMode;
|
||||
mFilter = TEX_LINEAR;
|
||||
mFilter = EE_TEX_LINEAR;
|
||||
|
||||
if ( UseMipmap )
|
||||
mFlags |= TEX_FLAG_MIPMAP;
|
||||
@@ -235,12 +235,12 @@ void cTexture::SetTextureFilter(const EE_TEX_FILTER& filter) {
|
||||
if ( PreviousTexture != (GLint)mTexture )
|
||||
glBindTexture(GL_TEXTURE_2D, mTexture);
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, (mFilter == TEX_LINEAR) ? GL_LINEAR : GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, (mFilter == EE_TEX_LINEAR) ? GL_LINEAR : GL_NEAREST);
|
||||
|
||||
if ( mFlags & TEX_FLAG_MIPMAP )
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (mFilter == TEX_LINEAR) ? GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (mFilter == EE_TEX_LINEAR) ? GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST);
|
||||
else
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (mFilter == TEX_LINEAR) ? GL_LINEAR : GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (mFilter == EE_TEX_LINEAR) ? GL_LINEAR : GL_NEAREST);
|
||||
|
||||
if ( PreviousTexture != (GLint)mTexture )
|
||||
glBindTexture(GL_TEXTURE_2D, PreviousTexture);
|
||||
@@ -332,11 +332,11 @@ void cTexture::ApplyClampMode() {
|
||||
}
|
||||
}
|
||||
|
||||
void cTexture::TexId( const Uint32& id ) {
|
||||
void cTexture::Id( const Uint32& id ) {
|
||||
mTexId = id;
|
||||
}
|
||||
|
||||
const Uint32& cTexture::TexId() const {
|
||||
const Uint32& cTexture::Id() const {
|
||||
return mTexId;
|
||||
}
|
||||
|
||||
@@ -371,7 +371,7 @@ void cTexture::Reload() {
|
||||
}
|
||||
}
|
||||
|
||||
const Uint32& cTexture::Id() const {
|
||||
const Uint32& cTexture::HashName() const {
|
||||
return mId;
|
||||
}
|
||||
|
||||
@@ -407,11 +407,11 @@ bool cTexture::Compressed() const {
|
||||
return mFlags & TEX_FLAG_COMPRESSED;
|
||||
}
|
||||
|
||||
void cTexture::Draw( const eeFloat &x, const eeFloat &y, const eeFloat &Angle, const eeFloat &Scale, const eeColorA& Color, const EE_RENDERALPHAS &blend, const EE_RENDERTYPE &Effect, const bool &ScaleCentered, const eeRecti& texSector) {
|
||||
void cTexture::Draw( const eeFloat &x, const eeFloat &y, const eeFloat &Angle, const eeFloat &Scale, const eeColorA& Color, const EE_PRE_BLEND_FUNC &blend, const EE_RENDERTYPE &Effect, const bool &ScaleCentered, const eeRecti& texSector) {
|
||||
DrawEx( x, y, 0, 0, Angle, Scale, Color, Color, Color, Color, blend, Effect, ScaleCentered, texSector);
|
||||
}
|
||||
|
||||
void cTexture::DrawFast( const eeFloat& x, const eeFloat& y, const eeFloat& Angle, const eeFloat& Scale, const eeColorA& Color, const EE_RENDERALPHAS &blend, const eeFloat &width, const eeFloat &height ) {
|
||||
void cTexture::DrawFast( const eeFloat& x, const eeFloat& y, const eeFloat& Angle, const eeFloat& Scale, const eeColorA& Color, const EE_PRE_BLEND_FUNC &blend, const eeFloat &width, const eeFloat &height ) {
|
||||
cBatchRenderer * BR = cGlobalBatchRenderer::instance();
|
||||
|
||||
eeFloat w = width, h = height;
|
||||
@@ -419,7 +419,7 @@ void cTexture::DrawFast( const eeFloat& x, const eeFloat& y, const eeFloat& Angl
|
||||
if (!h) h = (eeFloat)ImgHeight();
|
||||
|
||||
BR->SetTexture( this );
|
||||
BR->SetBlendFunc( blend );
|
||||
BR->SetPreBlendFunc( blend );
|
||||
|
||||
BR->QuadsBegin();
|
||||
BR->QuadsSetColor( Color );
|
||||
@@ -432,7 +432,7 @@ void cTexture::DrawFast( const eeFloat& x, const eeFloat& y, const eeFloat& Angl
|
||||
BR->DrawOpt();
|
||||
}
|
||||
|
||||
void cTexture::DrawEx( const eeFloat &x, const eeFloat &y, const eeFloat &width, const eeFloat &height, const eeFloat &Angle, const eeFloat &Scale, const eeColorA& Color0, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const EE_RENDERALPHAS &blend, const EE_RENDERTYPE &Effect, const bool &ScaleCentered, const eeRecti& texSector) {
|
||||
void cTexture::DrawEx( const eeFloat &x, const eeFloat &y, const eeFloat &width, const eeFloat &height, const eeFloat &Angle, const eeFloat &Scale, const eeColorA& Color0, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const EE_PRE_BLEND_FUNC &blend, const EE_RENDERTYPE &Effect, const bool &ScaleCentered, const eeRecti& texSector) {
|
||||
cBatchRenderer * BR = cGlobalBatchRenderer::instance();
|
||||
|
||||
bool renderdiv = true;
|
||||
@@ -475,7 +475,7 @@ void cTexture::DrawEx( const eeFloat &x, const eeFloat &y, const eeFloat &width,
|
||||
renderdiv = false;
|
||||
|
||||
BR->SetTexture( this );
|
||||
BR->SetBlendFunc( blend );
|
||||
BR->SetPreBlendFunc( blend );
|
||||
|
||||
BR->QuadsBegin();
|
||||
BR->QuadsSetColorFree( Color0, Color1, Color2, Color3 );
|
||||
@@ -540,11 +540,11 @@ void cTexture::DrawEx( const eeFloat &x, const eeFloat &y, const eeFloat &width,
|
||||
BR->DrawOpt();
|
||||
}
|
||||
|
||||
void cTexture::DrawQuad( const eeQuad2f& Q, const eeFloat &offsetx, const eeFloat &offsety, const eeFloat &Angle, const eeFloat &Scale, const eeColorA& Color, const EE_RENDERALPHAS &blend, const eeRecti& texSector) {
|
||||
void cTexture::DrawQuad( const eeQuad2f& Q, const eeFloat &offsetx, const eeFloat &offsety, const eeFloat &Angle, const eeFloat &Scale, const eeColorA& Color, const EE_PRE_BLEND_FUNC &blend, const eeRecti& texSector) {
|
||||
DrawQuadEx( Q, offsetx, offsety, Angle, Scale, Color, Color, Color, Color, blend, texSector);
|
||||
}
|
||||
|
||||
void cTexture::DrawQuadEx( const eeQuad2f& Q, const eeFloat &offsetx, const eeFloat &offsety, const eeFloat &Angle, const eeFloat &Scale, const eeColorA& Color0, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const EE_RENDERALPHAS &blend, const eeRecti& texSector ) {
|
||||
void cTexture::DrawQuadEx( const eeQuad2f& Q, const eeFloat &offsetx, const eeFloat &offsety, const eeFloat &Angle, const eeFloat &Scale, const eeColorA& Color0, const eeColorA& Color1, const eeColorA& Color2, const eeColorA& Color3, const EE_PRE_BLEND_FUNC &blend, const eeRecti& texSector ) {
|
||||
cBatchRenderer * BR = cGlobalBatchRenderer::instance();
|
||||
|
||||
bool renderdiv = true;
|
||||
@@ -568,7 +568,7 @@ void cTexture::DrawQuadEx( const eeQuad2f& Q, const eeFloat &offsetx, const eeFl
|
||||
renderdiv = false;
|
||||
|
||||
BR->SetTexture( this );
|
||||
BR->SetBlendFunc( blend );
|
||||
BR->SetPreBlendFunc( blend );
|
||||
|
||||
BR->QuadsBegin();
|
||||
BR->QuadsSetColorFree( Color0, Color1, Color2, Color3 );
|
||||
|
||||
@@ -40,14 +40,14 @@ class EE_API cTexture : public cImage {
|
||||
*/
|
||||
void Create( const Uint32& texture, const eeUint& width, const eeUint& height, const eeUint& imgwidth, const eeUint& imgheight, const bool& UseMipmap, const eeUint& Channels, const std::string& filepath, const eeRGB& ColorKey, const EE_CLAMP_MODE& ClampMode, const bool& CompressedTexture, const Uint32& MemSize = 0, const Uint8* data = NULL );
|
||||
|
||||
/** Set the OpenGL Texture Id (texture handler) */
|
||||
void Texture( const Uint32& texture ) { mTexture = texture; }
|
||||
/** Set the OpenGL Texture Id (texture handle) */
|
||||
void Handle( const Uint32& texture ) { mTexture = texture; }
|
||||
|
||||
/** @return The OpenGL Texture Id (texture handler) */
|
||||
Uint32 Texture() const { return mTexture; }
|
||||
/** @return The OpenGL Texture Id (texture handle) */
|
||||
Uint32 Handle() const { return mTexture; }
|
||||
|
||||
/** @return The id of the texture ( that is the hash of the filename ) */
|
||||
const Uint32& Id() const;
|
||||
/** @return The hash of the filename */
|
||||
const Uint32& HashName() const;
|
||||
|
||||
/** Set the Texture File Path */
|
||||
void Filepath( const std::string& filepath ) { mFilepath = filepath; }
|
||||
@@ -140,7 +140,7 @@ class EE_API cTexture : public cImage {
|
||||
* @param width The width of the texture rendered
|
||||
* @param height The height of the texture rendered
|
||||
*/
|
||||
void DrawFast( const eeFloat& x, const eeFloat& y, const eeFloat& Angle = 0.0f, const eeFloat& Scale = 1.0f, const eeColorA& Color = eeColorA(), const EE_RENDERALPHAS &blend = ALPHA_NORMAL, const eeFloat &width = 0, const eeFloat &height = 0 );
|
||||
void DrawFast( const eeFloat& x, const eeFloat& y, const eeFloat& Angle = 0.0f, const eeFloat& Scale = 1.0f, const eeColorA& Color = eeColorA(), const EE_PRE_BLEND_FUNC &blend = ALPHA_NORMAL, const eeFloat &width = 0, const eeFloat &height = 0 );
|
||||
|
||||
/** Render the texture on screen
|
||||
* @param x The x position on screen
|
||||
@@ -155,7 +155,7 @@ class EE_API cTexture : public cImage {
|
||||
* @param ScaleCentered If true the texture will be scaled centered, otherwise will be scale from the Top - Left Corner
|
||||
* @param texSector The texture sector to render. You can render only a part of the texture. ( default render all the texture )
|
||||
*/
|
||||
void Draw( const eeFloat &x, const eeFloat &y, const eeFloat &Angle = 0, const eeFloat &Scale = 1.0f, const eeColorA& Color = eeColorA(255,255,255,255), const EE_RENDERALPHAS &blend = ALPHA_NORMAL, const EE_RENDERTYPE &Effect = RN_NORMAL, const bool &ScaleCentered = true, const eeRecti& texSector = eeRecti(0,0,0,0) );
|
||||
void Draw( const eeFloat &x, const eeFloat &y, const eeFloat &Angle = 0, const eeFloat &Scale = 1.0f, const eeColorA& Color = eeColorA(255,255,255,255), const EE_PRE_BLEND_FUNC &blend = ALPHA_NORMAL, const EE_RENDERTYPE &Effect = RN_NORMAL, const bool &ScaleCentered = true, const eeRecti& texSector = eeRecti(0,0,0,0) );
|
||||
|
||||
/** Render the texture on screen. Extended because can set the vertex colors individually
|
||||
* @param x The x position on screen
|
||||
@@ -173,7 +173,7 @@ class EE_API cTexture : public cImage {
|
||||
* @param ScaleCentered If true the texture will be scaled centered, otherwise will be scale from the Top - Left Corner
|
||||
* @param texSector The texture sector to render. You can render only a part of the texture. ( default render all the texture )
|
||||
*/
|
||||
void DrawEx( const eeFloat &x, const eeFloat &y, const eeFloat &width = 0.0f, const eeFloat &height = 0.0f, const eeFloat &Angle = 0, const eeFloat &Scale = 1.0f, const eeColorA& Color0 = eeColorA(255,255,255,255), const eeColorA& Color1 = eeColorA(255,255,255,255), const eeColorA& Color2 = eeColorA(255,255,255,255), const eeColorA& Color3 = eeColorA(255,255,255,255), const EE_RENDERALPHAS &blend = ALPHA_NORMAL, const EE_RENDERTYPE &Effect = RN_NORMAL, const bool &ScaleCentered = true, const eeRecti& texSector = eeRecti(0,0,0,0) );
|
||||
void DrawEx( const eeFloat &x, const eeFloat &y, const eeFloat &width = 0.0f, const eeFloat &height = 0.0f, const eeFloat &Angle = 0, const eeFloat &Scale = 1.0f, const eeColorA& Color0 = eeColorA(255,255,255,255), const eeColorA& Color1 = eeColorA(255,255,255,255), const eeColorA& Color2 = eeColorA(255,255,255,255), const eeColorA& Color3 = eeColorA(255,255,255,255), const EE_PRE_BLEND_FUNC &blend = ALPHA_NORMAL, const EE_RENDERTYPE &Effect = RN_NORMAL, const bool &ScaleCentered = true, const eeRecti& texSector = eeRecti(0,0,0,0) );
|
||||
|
||||
/** Render a GL_QUAD on Screen
|
||||
* @param Q The eeQuad2f
|
||||
@@ -185,7 +185,7 @@ class EE_API cTexture : public cImage {
|
||||
* @param blend Set the Blend Mode ( default ALPHA_NORMAL )
|
||||
* @param texSector The texture sector to render. You can render only a part of the texture. ( default render all the texture )
|
||||
*/
|
||||
void DrawQuad( const eeQuad2f& Q, const eeFloat &offsetx = 0.0f, const eeFloat &offsety = 0.0f, const eeFloat &Angle = 0.0f, const eeFloat &Scale = 1.0f, const eeColorA& Color = eeColorA(255,255,255,255), const EE_RENDERALPHAS &blend = ALPHA_NORMAL, const eeRecti& texSector = eeRecti(0,0,0,0) );
|
||||
void DrawQuad( const eeQuad2f& Q, const eeFloat &offsetx = 0.0f, const eeFloat &offsety = 0.0f, const eeFloat &Angle = 0.0f, const eeFloat &Scale = 1.0f, const eeColorA& Color = eeColorA(255,255,255,255), const EE_PRE_BLEND_FUNC &blend = ALPHA_NORMAL, const eeRecti& texSector = eeRecti(0,0,0,0) );
|
||||
|
||||
/** Render a GL_QUAD on Screen
|
||||
* @param Q The eeQuad2f
|
||||
@@ -200,13 +200,13 @@ class EE_API cTexture : public cImage {
|
||||
* @param blend Set the Blend Mode ( default ALPHA_NORMAL )
|
||||
* @param texSector The texture sector to render. You can render only a part of the texture. ( default render all the texture )
|
||||
*/
|
||||
void DrawQuadEx( const eeQuad2f& Q, const eeFloat &offsetx = 0.0f, const eeFloat &offsety = 0.0f, const eeFloat &Angle = 0.0f, const eeFloat &Scale = 1.0f, const eeColorA& Color0 = eeColorA(255,255,255,255), const eeColorA& Color1 = eeColorA(255,255,255,255), const eeColorA& Color2 = eeColorA(255,255,255,255), const eeColorA& Color3 = eeColorA(255,255,255,255), const EE_RENDERALPHAS &blend = ALPHA_NORMAL, const eeRecti& texSector = eeRecti(0,0,0,0) );
|
||||
void DrawQuadEx( const eeQuad2f& Q, const eeFloat &offsetx = 0.0f, const eeFloat &offsety = 0.0f, const eeFloat &Angle = 0.0f, const eeFloat &Scale = 1.0f, const eeColorA& Color0 = eeColorA(255,255,255,255), const eeColorA& Color1 = eeColorA(255,255,255,255), const eeColorA& Color2 = eeColorA(255,255,255,255), const eeColorA& Color3 = eeColorA(255,255,255,255), const EE_PRE_BLEND_FUNC &blend = ALPHA_NORMAL, const eeRecti& texSector = eeRecti(0,0,0,0) );
|
||||
|
||||
/** Set the texture factory internal id of the texture */
|
||||
void TexId( const Uint32& id );
|
||||
void Id( const Uint32& id );
|
||||
|
||||
/** @return The texture factory internal id of the texture */
|
||||
const Uint32& TexId() const;
|
||||
const Uint32& Id() const;
|
||||
|
||||
/** Reload the texture from the current local copy. */
|
||||
void Reload();
|
||||
|
||||
@@ -1,20 +1,23 @@
|
||||
#include "ctexturefactory.hpp"
|
||||
#include "../window/cengine.hpp"
|
||||
#include "ctextureloader.hpp"
|
||||
#include "glhelper.hpp"
|
||||
|
||||
using namespace EE::Graphics::Private;
|
||||
|
||||
using namespace EE::Window;
|
||||
|
||||
namespace EE { namespace Graphics {
|
||||
|
||||
cTextureFactory::cTextureFactory() :
|
||||
mCurrentTexture(0),
|
||||
mIsCalcPowOfTwo(false),
|
||||
mMemSize(0)
|
||||
{
|
||||
mTextures.clear();
|
||||
mTextures.push_back( NULL );
|
||||
|
||||
mAppPath = AppPath();
|
||||
|
||||
memset( &mCurrentTexture[0], 0, EE_MAX_TEXTURE_UNITS );
|
||||
}
|
||||
|
||||
cTextureFactory::~cTextureFactory() {
|
||||
@@ -69,7 +72,7 @@ Uint32 cTextureFactory::PushTexture( const std::string& Filepath, const Uint32&
|
||||
Tex = mTextures[ Pos ] = eeNew( cTexture, () );
|
||||
|
||||
Tex->Create( TexId, Width, Height, MyWidth, MyHeight, Mipmap, Channels, FPath, ColorKey, ClampMode, CompressTexture, MemSize );
|
||||
Tex->TexId( Pos );
|
||||
Tex->Id( Pos );
|
||||
|
||||
if ( !ColorKey.voidRGB )
|
||||
Tex->CreateMaskFromColor( eeColor( ColorKey.R(), ColorKey.G(), ColorKey.B() ) , 0 );
|
||||
@@ -102,15 +105,22 @@ Uint32 cTextureFactory::FindFreeSlot() {
|
||||
return (Uint32)mTextures.size() - 1;
|
||||
}
|
||||
|
||||
void cTextureFactory::Bind( const cTexture* Tex ) {
|
||||
if( NULL != Tex && mCurrentTexture != (Int32)Tex->Texture() ) {
|
||||
glBindTexture( GL_TEXTURE_2D, Tex->Texture() );
|
||||
mCurrentTexture = Tex->Texture();
|
||||
void cTextureFactory::Bind( const cTexture* Tex, const Uint32& TextureUnit ) {
|
||||
if( NULL != Tex && mCurrentTexture[ TextureUnit ] != (Int32)Tex->Handle() ) {
|
||||
if ( cGL::instance()->IsExtension( EEGL_ARB_multitexture ) )
|
||||
glActiveTextureARB( GL_TEXTURE0_ARB + TextureUnit );
|
||||
|
||||
glBindTexture( GL_TEXTURE_2D, Tex->Handle() );
|
||||
|
||||
mCurrentTexture[ TextureUnit ] = Tex->Handle();
|
||||
|
||||
if ( cGL::instance()->IsExtension( EEGL_ARB_multitexture ) )
|
||||
glActiveTextureARB( GL_TEXTURE0_ARB );
|
||||
}
|
||||
}
|
||||
|
||||
void cTextureFactory::Bind( const Uint32& TexId ) {
|
||||
Bind( GetTexture( TexId ) );
|
||||
void cTextureFactory::Bind( const Uint32& TexId, const Uint32& TextureUnit ) {
|
||||
Bind( GetTexture( TexId ), TextureUnit );
|
||||
}
|
||||
|
||||
void cTextureFactory::UnloadTextures() {
|
||||
@@ -130,12 +140,14 @@ bool cTextureFactory::Remove( const Uint32& TexId ) {
|
||||
if ( TexId < mTextures.size() && NULL != mTextures[ TexId ] ) {
|
||||
mMemSize -= GetTexMemSize( TexId );
|
||||
|
||||
GLint glTexId = mTextures[ TexId ]->Texture();
|
||||
GLint glTexId = mTextures[ TexId ]->Handle();
|
||||
|
||||
eeSAFE_DELETE( mTextures[ TexId ] );
|
||||
|
||||
if ( mCurrentTexture == (Int32)glTexId )
|
||||
mCurrentTexture = 0;
|
||||
for ( Uint32 i = 0; i < EE_MAX_TEXTURE_UNITS; i++ ) {
|
||||
if ( mCurrentTexture[ i ] == (Int32)glTexId )
|
||||
mCurrentTexture[ i ] = 0;
|
||||
}
|
||||
|
||||
mVectorFreeSlots.push( TexId );
|
||||
|
||||
@@ -145,12 +157,14 @@ bool cTextureFactory::Remove( const Uint32& TexId ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
GLint cTextureFactory::GetCurrentTexture() const {
|
||||
return mCurrentTexture;
|
||||
GLint cTextureFactory::GetCurrentTexture( const Uint32& TextureUnit ) const {
|
||||
//assert( TextureUnit < MAX_TEXTURE_UNITS );
|
||||
return mCurrentTexture[ TextureUnit ];
|
||||
}
|
||||
|
||||
void cTextureFactory::SetCurrentTexture( const GLint& TexId ) {
|
||||
mCurrentTexture = TexId;
|
||||
void cTextureFactory::SetCurrentTexture( const GLint& TexId, const Uint32& TextureUnit ) {
|
||||
//assert( TextureUnit < MAX_TEXTURE_UNITS );
|
||||
mCurrentTexture[ TextureUnit ] = TexId;
|
||||
}
|
||||
|
||||
void cTextureFactory::ReloadAllTextures() {
|
||||
@@ -190,12 +204,21 @@ void cTextureFactory::UngrabTextures() {
|
||||
}
|
||||
}
|
||||
|
||||
void cTextureFactory::SetBlendFunc( const EE_RENDERALPHAS& blend, const bool& force ) {
|
||||
void cTextureFactory::SetBlendFunc( const EE_BLEND_FUNC& SrcFactor, const EE_BLEND_FUNC& DestFactor ) {
|
||||
glEnable( GL_BLEND );
|
||||
|
||||
glBlendFunc( (GLenum)SrcFactor, (GLenum)DestFactor );
|
||||
|
||||
mLastBlend = ALPHA_CUSTOM;
|
||||
}
|
||||
|
||||
void cTextureFactory::SetPreBlendFunc( const EE_PRE_BLEND_FUNC& blend, bool force ) {
|
||||
if ( mLastBlend != blend || force ) {
|
||||
if (blend == ALPHA_NONE)
|
||||
if (blend == ALPHA_NONE) {
|
||||
glDisable( GL_BLEND );
|
||||
else {
|
||||
} else {
|
||||
glEnable( GL_BLEND );
|
||||
|
||||
switch (blend) {
|
||||
case ALPHA_NORMAL:
|
||||
glBlendFunc(GL_SRC_ALPHA , GL_ONE_MINUS_SRC_ALPHA);
|
||||
@@ -223,29 +246,50 @@ void cTextureFactory::SetBlendFunc( const EE_RENDERALPHAS& blend, const bool& fo
|
||||
case ALPHA_NONE:
|
||||
// AVOID COMPILER WARNING
|
||||
break;
|
||||
case ALPHA_CUSTOM:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
mLastBlend = blend;
|
||||
}
|
||||
}
|
||||
|
||||
eeUint cTextureFactory::GetValidTextureSize(const eeUint& Size) {
|
||||
if (!mIsCalcPowOfTwo) {
|
||||
if ( cEngine::instance()->Running() ) { // This need the GL context initialized
|
||||
char *extensions = (char *)glGetString(GL_EXTENSIONS);
|
||||
void cTextureFactory::SetActiveTextureUnit( const Uint32& Unit ) {
|
||||
glActiveTextureARB( GL_TEXTURE0_ARB + Unit );
|
||||
}
|
||||
|
||||
if ( strstr(extensions, "GL_ARB_texture_non_power_of_two") )
|
||||
mPowOfTwo = false;
|
||||
else
|
||||
mPowOfTwo = true;
|
||||
void cTextureFactory::SetTextureConstantColor( const eeColorA& Color ) {
|
||||
SetTextureConstantColor( eeColorAf( (eeFloat)Color.R() / 255.f, (eeFloat)Color.G() / 255.f, (eeFloat)Color.B() / 255.f, (eeFloat)Color.A() / 255.f ) );
|
||||
}
|
||||
|
||||
mIsCalcPowOfTwo = true;
|
||||
} else
|
||||
mPowOfTwo = false;
|
||||
void cTextureFactory::SetTextureConstantColor( const eeColorAf& Color ) {
|
||||
glTexEnvfv( GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, (const GLfloat*)(&Color.Red) );
|
||||
}
|
||||
|
||||
void cTextureFactory::SetTextureEnv( const EE_TEXTURE_PARAM& Param, const Int32& Val ) {
|
||||
GLenum lParam = (GLenum)cGL::instance()->GetTextureParamEnum( Param );
|
||||
|
||||
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB );
|
||||
|
||||
if( Param == TEX_PARAM_COLOR_FUNC || Param == TEX_PARAM_ALPHA_FUNC ) {
|
||||
glTexEnvi( GL_TEXTURE_ENV, lParam, cGL::instance()->GetTextureFuncEnum( (EE_TEXTURE_FUNC)Val ) );
|
||||
} else if( Param >= TEX_PARAM_COLOR_SOURCE_0 && Param <= TEX_PARAM_ALPHA_SOURCE_2 ) {
|
||||
glTexEnvi( GL_TEXTURE_ENV, lParam, cGL::instance()->GetTextureSourceEnum( (EE_TEXTURE_SOURCE)Val ) );
|
||||
} else if( Param >= TEX_PARAM_COLOR_OP_0 && Param <= TEX_PARAM_ALPHA_OP_2 ) {
|
||||
glTexEnvi( GL_TEXTURE_ENV, lParam, cGL::instance()->GetTextureOpEnum( (EE_TEXTURE_OP)Val ) );
|
||||
} else {
|
||||
glTexEnvi( GL_TEXTURE_ENV, lParam, Val );
|
||||
}
|
||||
}
|
||||
|
||||
if ( !mPowOfTwo )
|
||||
const EE_PRE_BLEND_FUNC& cTextureFactory::GetPreBlendFunc() const {
|
||||
return mLastBlend;
|
||||
}
|
||||
|
||||
eeUint cTextureFactory::GetValidTextureSize(const eeUint& Size) {
|
||||
if ( cGL::instance()->IsExtension( EEGL_ARB_texture_non_power_of_two ) )
|
||||
return Size;
|
||||
else
|
||||
return NextPowOfTwo(Size);
|
||||
@@ -313,7 +357,7 @@ cTexture * cTextureFactory::GetByHash( const Uint32& Hash ) {
|
||||
for ( Uint32 i = (Uint32)mTextures.size() - 1; i > 0; i-- ) {
|
||||
tTex = mTextures[ i ];
|
||||
|
||||
if ( NULL != tTex && tTex->Id() == Hash )
|
||||
if ( NULL != tTex && tTex->HashName() == Hash )
|
||||
return mTextures[ i ];
|
||||
}
|
||||
|
||||
|
||||
@@ -88,13 +88,15 @@ class EE_API cTextureFactory: public tSingleton<cTextureFactory>, protected cMut
|
||||
|
||||
/** Bind the the internal Texture Id indicated. This is usefull if you are rendering a texture outside this class.
|
||||
* @param TexId The internal Texture Id
|
||||
* @param TextureUnit The Texture Unit binded
|
||||
*/
|
||||
void Bind( const Uint32& TexId );
|
||||
void Bind( const Uint32& TexId, const Uint32& TextureUnit = 0 );
|
||||
|
||||
/** Bind the the Texture indicated. This is usefull if you are rendering a texture outside this class.
|
||||
* @param Tex The Texture Pointer
|
||||
* @param TextureUnit The Texture Unit binded
|
||||
*/
|
||||
void Bind( const cTexture* Tex );
|
||||
void Bind( const cTexture* Tex, const Uint32& TextureUnit = 0 );
|
||||
|
||||
/**
|
||||
* @param TexId The internal Texture Id
|
||||
@@ -104,22 +106,48 @@ class EE_API cTextureFactory: public tSingleton<cTextureFactory>, protected cMut
|
||||
|
||||
/**
|
||||
* @return The real current texture id (OpenGL Texture Id)
|
||||
* @param TextureUnit The Texture Unit binded
|
||||
*/
|
||||
GLint GetCurrentTexture() const;
|
||||
GLint GetCurrentTexture( const Uint32& TextureUnit = 0 ) const;
|
||||
|
||||
/** Set the current internal texture id. This will set the TexId as the current texture binded.
|
||||
* @param TexId The internal Texture Id
|
||||
* @param TextureUnit The Texture Unit binded
|
||||
*/
|
||||
void SetCurrentTexture( const GLint& TexId );
|
||||
void SetCurrentTexture( const GLint& TexId, const Uint32& TextureUnit );
|
||||
|
||||
/** Returns the number of textures loaded */
|
||||
Uint32 GetNumTextures() const { return (Uint32)mTextures.size(); }
|
||||
|
||||
/** Set the Blend Function
|
||||
/** Set a blend function.
|
||||
* @SrcFactor Source Factor
|
||||
* @DestFactor Destination Factor
|
||||
*/
|
||||
void SetBlendFunc( const EE_BLEND_FUNC& SrcFactor, const EE_BLEND_FUNC& DestFactor );
|
||||
|
||||
/** Set a Predefined Blend Function
|
||||
* @param blend The Blend Mode
|
||||
* @param force If force to apply the blend ( no matters if the last blend was the same blend )
|
||||
*/
|
||||
void SetBlendFunc( const EE_RENDERALPHAS& blend, const bool& force = false );
|
||||
void SetPreBlendFunc( const EE_PRE_BLEND_FUNC& blend, bool force = false );
|
||||
|
||||
/** @return The last used predefined blend func */
|
||||
const EE_PRE_BLEND_FUNC& GetPreBlendFunc() const;
|
||||
|
||||
/** Set the texture enviroment
|
||||
* @Param The texture param
|
||||
* @Val The EE_TEXTURE_OP or EE_TEXTURE_FUNC or EE_TEXTURE_SOURCE
|
||||
*/
|
||||
void SetTextureEnv( const EE_TEXTURE_PARAM& Param, const Int32& Val );
|
||||
|
||||
/** Active a texture unit */
|
||||
void SetActiveTextureUnit( const Uint32& Unit );
|
||||
|
||||
/** Set a texture constant ( env ) color */
|
||||
void SetTextureConstantColor( const eeColorAf& Color );
|
||||
|
||||
/** Set a texture constant ( env ) color */
|
||||
void SetTextureConstantColor( const eeColorA& Color );
|
||||
|
||||
/**
|
||||
* @param Size
|
||||
@@ -186,11 +214,9 @@ class EE_API cTextureFactory: public tSingleton<cTextureFactory>, protected cMut
|
||||
protected:
|
||||
cTextureFactory();
|
||||
|
||||
GLint mCurrentTexture;
|
||||
GLint mCurrentTexture[ EE_MAX_TEXTURE_UNITS ];
|
||||
|
||||
EE_RENDERALPHAS mLastBlend;
|
||||
|
||||
bool mPowOfTwo, mIsCalcPowOfTwo;
|
||||
EE_PRE_BLEND_FUNC mLastBlend;
|
||||
|
||||
std::vector<cTexture*> mTextures;
|
||||
|
||||
|
||||
@@ -194,7 +194,7 @@ void cTextureGroupLoader::CreateShapes() {
|
||||
|
||||
eeRecti tRect( tSh->X, tSh->Y, tSh->X + tSh->Width, tSh->Y + tSh->Height );
|
||||
|
||||
cShape * tShape = eeNew( cShape, ( tTex->TexId(), tRect, tSh->DestWidth, tSh->DestHeight, tSh->OffsetX, tSh->OffsetY, ShapeName ) );
|
||||
cShape * tShape = eeNew( cShape, ( tTex->Id(), tRect, tSh->DestWidth, tSh->DestHeight, tSh->OffsetX, tSh->OffsetY, ShapeName ) );
|
||||
|
||||
//if ( tSh->Flags & HDR_SHAPE_FLAG_FLIPED )
|
||||
// Should rotate the shape, but.. shape rotation is not stored.
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
#define STBI_TYPE_SPECIFIC_FUNCTIONS
|
||||
#include "../helper/SOIL/stb_image.h"
|
||||
#include "../helper/SOIL/SOIL.h"
|
||||
#include "glhelper.hpp"
|
||||
|
||||
using namespace EE::Graphics::Private;
|
||||
|
||||
namespace EE { namespace Graphics {
|
||||
|
||||
@@ -155,7 +158,7 @@ void cTextureLoader::Start() {
|
||||
|
||||
void cTextureLoader::LoadFromPath() {
|
||||
if ( FileExists( mFilepath ) ) {
|
||||
if ( GLEW_EXT_texture_compression_s3tc )
|
||||
if ( cGL::instance()->IsExtension( EEGL_EXT_texture_compression_s3tc ) )
|
||||
mIsDDS = 0 != stbi_dds_test_filename( mFilepath.c_str() );
|
||||
|
||||
if ( mIsDDS ) {
|
||||
@@ -187,7 +190,7 @@ void cTextureLoader::LoadFromPack() {
|
||||
}
|
||||
|
||||
void cTextureLoader::LoadFromMemory() {
|
||||
if ( GLEW_EXT_texture_compression_s3tc )
|
||||
if ( cGL::instance()->IsExtension( EEGL_EXT_texture_compression_s3tc ) )
|
||||
mIsDDS = 0 != stbi_dds_test_memory( mImagePtr, mSize );
|
||||
|
||||
if ( mIsDDS ) {
|
||||
|
||||
@@ -19,13 +19,13 @@ cTTFFont::~cTTFFont() {
|
||||
hkFontManager::instance()->Destroy();
|
||||
}
|
||||
|
||||
bool cTTFFont::LoadFromPack( cPack* Pack, const std::string& FilePackPath, const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& VerticalDraw, const Uint16& NumCharsToGen, const eeColor& FontColor, const Uint8& OutlineSize, const eeColor& OutlineColor ) {
|
||||
bool cTTFFont::LoadFromPack( cPack* Pack, const std::string& FilePackPath, const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& VerticalDraw, const Uint16& NumCharsToGen, const eeColor& FontColor, const Uint8& OutlineSize, const eeColor& OutlineColor, const bool& AddPixelSeparator ) {
|
||||
std::vector<Uint8> TmpData;
|
||||
|
||||
if ( Pack->IsOpen() && Pack->ExtractFileToMemory( FilePackPath, TmpData ) ) {
|
||||
mFilepath = FilePackPath;
|
||||
|
||||
return LoadFromMemory( reinterpret_cast<Uint8*> (&TmpData[0]), (eeUint)TmpData.size(), Size, Style, VerticalDraw, NumCharsToGen, FontColor, OutlineSize, OutlineColor );
|
||||
return LoadFromMemory( reinterpret_cast<Uint8*> (&TmpData[0]), (eeUint)TmpData.size(), Size, Style, VerticalDraw, NumCharsToGen, FontColor, OutlineSize, OutlineColor, AddPixelSeparator );
|
||||
}
|
||||
|
||||
TmpData.clear();
|
||||
@@ -33,7 +33,7 @@ bool cTTFFont::LoadFromPack( cPack* Pack, const std::string& FilePackPath, const
|
||||
return false;
|
||||
}
|
||||
|
||||
bool cTTFFont::LoadFromMemory( Uint8* TTFData, const eeUint& TTFDataSize, const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& VerticalDraw, const Uint16& NumCharsToGen, const eeColor& FontColor, const Uint8& OutlineSize, const eeColor& OutlineColor ) {
|
||||
bool cTTFFont::LoadFromMemory( Uint8* TTFData, const eeUint& TTFDataSize, const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& VerticalDraw, const Uint16& NumCharsToGen, const eeColor& FontColor, const Uint8& OutlineSize, const eeColor& OutlineColor, const bool& AddPixelSeparator ) {
|
||||
if ( !mFilepath.size() )
|
||||
mFilepath = "from memory";
|
||||
|
||||
@@ -41,25 +41,32 @@ bool cTTFFont::LoadFromMemory( Uint8* TTFData, const eeUint& TTFDataSize, const
|
||||
|
||||
mFont = hkFontManager::instance()->OpenFromMemory( reinterpret_cast<uint8_t*>(&TTFData[0]), TTFDataSize, Size, 0, NumCharsToGen );
|
||||
|
||||
return iLoad( Size, Style, VerticalDraw, NumCharsToGen, FontColor, OutlineSize, OutlineColor );
|
||||
return iLoad( Size, Style, VerticalDraw, NumCharsToGen, FontColor, OutlineSize, OutlineColor, AddPixelSeparator );
|
||||
}
|
||||
|
||||
bool cTTFFont::Load( const std::string& Filepath, const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& VerticalDraw, const Uint16& NumCharsToGen, const eeColor& FontColor, const Uint8& OutlineSize, const eeColor& OutlineColor ) {
|
||||
bool cTTFFont::Load( const std::string& Filepath, const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& VerticalDraw, const Uint16& NumCharsToGen, const eeColor& FontColor, const Uint8& OutlineSize, const eeColor& OutlineColor, const bool& AddPixelSeparator ) {
|
||||
mFilepath = Filepath;
|
||||
mLoadedFromMemory = false;
|
||||
|
||||
mFont = hkFontManager::instance()->OpenFromFile( Filepath.c_str(), Size, 0, NumCharsToGen );
|
||||
|
||||
return iLoad( Size, Style, VerticalDraw, NumCharsToGen, FontColor, OutlineSize, OutlineColor );
|
||||
return iLoad( Size, Style, VerticalDraw, NumCharsToGen, FontColor, OutlineSize, OutlineColor, AddPixelSeparator );
|
||||
}
|
||||
|
||||
bool cTTFFont::iLoad( const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& VerticalDraw, const Uint16& NumCharsToGen, const eeColor& FontColor, const Uint8& OutlineSize, const eeColor& OutlineColor ) {
|
||||
bool cTTFFont::iLoad( const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& VerticalDraw, const Uint16& NumCharsToGen, const eeColor& FontColor, Uint8 OutlineSize, const eeColor& OutlineColor, const bool& AddPixelSeparator ) {
|
||||
eeRect CurrentPos;
|
||||
eeSize GlyphRect;
|
||||
|
||||
unsigned char * TempGlyphSurface;
|
||||
|
||||
eeFloat Top, Bottom;
|
||||
|
||||
// Change the outline size to add a pixel separating the character from the around characters to prevent ugly zooming of characters
|
||||
Uint32 PixelSep = 0;
|
||||
|
||||
if ( AddPixelSeparator )
|
||||
PixelSep = 1;
|
||||
|
||||
Uint8 OutlineTotal = OutlineSize * 2;
|
||||
Uint32 TexSize;
|
||||
|
||||
@@ -72,33 +79,49 @@ bool cTTFFont::iLoad( const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& Ve
|
||||
|
||||
mFont->Style( Style );
|
||||
|
||||
mVerticalDraw = VerticalDraw;
|
||||
mSize = Size;
|
||||
mNumChars = NumCharsToGen;
|
||||
|
||||
mFontColor = FontColor;
|
||||
mOutlineColor = OutlineColor;
|
||||
|
||||
mStyle = Style;
|
||||
mVerticalDraw = VerticalDraw;
|
||||
mSize = Size;
|
||||
mHeight = mFont->Height() + OutlineTotal;
|
||||
mNumChars = NumCharsToGen;
|
||||
mFontColor = FontColor;
|
||||
mOutlineColor = OutlineColor;
|
||||
mStyle = Style;
|
||||
mTexWidth = 128;
|
||||
mTexHeight = 128;
|
||||
|
||||
mGlyphs.clear();
|
||||
mGlyphs.resize( mNumChars );
|
||||
|
||||
mTexWidth = (eeFloat)NextPowOfTwo( mSize * 16 );
|
||||
mTexHeight = mTexWidth;
|
||||
bool lastWasWidth = false;
|
||||
Uint32 ReqSize;
|
||||
|
||||
// Find the best size for the texture ( aprox )
|
||||
|
||||
mSize += PixelSep;
|
||||
|
||||
do {
|
||||
ReqSize = mNumChars * mSize * mSize;
|
||||
TexSize = (Uint32)mTexWidth * (Uint32)mTexHeight;
|
||||
|
||||
if ( TexSize < ReqSize ) {
|
||||
if ( !lastWasWidth )
|
||||
mTexWidth *= 2;
|
||||
else
|
||||
mTexHeight *= 2;
|
||||
|
||||
lastWasWidth = !lastWasWidth;
|
||||
}
|
||||
} while ( TexSize < ReqSize );
|
||||
|
||||
mSize -= PixelSep;
|
||||
|
||||
TexSize = (Uint32)mTexWidth * (Uint32)mTexHeight;
|
||||
|
||||
if ( ( mSize >= 60 && mNumChars > 256 ) || ( OutlineSize > 2 && mNumChars >= 512 && mSize >= 24 ) )
|
||||
mTexHeight *= 2;
|
||||
|
||||
mHeight = mFont->Height() + OutlineTotal;
|
||||
|
||||
mPixels = eeNewArray( eeColorA, TexSize );
|
||||
memset( mPixels, 0x00000000, TexSize * 4 );
|
||||
|
||||
CurrentPos.Left = OutlineSize;
|
||||
CurrentPos.Top = OutlineSize;
|
||||
CurrentPos.Top = OutlineSize;
|
||||
|
||||
//Loop through all chars
|
||||
for ( eeUint i = 0; i < mNumChars; i++) {
|
||||
@@ -115,10 +138,10 @@ bool cTTFFont::iLoad( const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& Ve
|
||||
GlyphRect.y = mFont->Current()->Pixmap()->rows;
|
||||
|
||||
//Set size of current position rect
|
||||
CurrentPos.Right = CurrentPos.Left + TempGlyph.MaxX;
|
||||
CurrentPos.Bottom = CurrentPos.Top + TempGlyph.MaxY;
|
||||
CurrentPos.Right = CurrentPos.Left + TempGlyph.MaxX;
|
||||
CurrentPos.Bottom = CurrentPos.Top + TempGlyph.MaxY;
|
||||
|
||||
if (CurrentPos.Right >= mTexWidth) {
|
||||
if ( CurrentPos.Right >= mTexWidth ) {
|
||||
CurrentPos.Left = 0 + OutlineSize;
|
||||
CurrentPos.Top += mHeight;
|
||||
}
|
||||
@@ -144,8 +167,8 @@ bool cTTFFont::iLoad( const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& Ve
|
||||
}
|
||||
|
||||
// Fixes the width and height of the current pos
|
||||
CurrentPos.Right = GlyphRect.x;
|
||||
CurrentPos.Bottom = GlyphRect.y;
|
||||
CurrentPos.Right = GlyphRect.x;
|
||||
CurrentPos.Bottom = GlyphRect.y;
|
||||
|
||||
// Set texture coordinates to te list
|
||||
eeRectf tR;
|
||||
@@ -173,10 +196,10 @@ bool cTTFFont::iLoad( const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& Ve
|
||||
TempGlyph.GlyphH = GlyphRect.y + OutlineSize;
|
||||
|
||||
//Position xpos ready for next glyph
|
||||
CurrentPos.Left += GlyphRect.x + OutlineTotal;
|
||||
CurrentPos.Left += GlyphRect.x + OutlineTotal + PixelSep;
|
||||
|
||||
//If the next character will run off the edge of the glyph sheet, advance to next row
|
||||
if (CurrentPos.Left + CurrentPos.Right > mTexWidth) {
|
||||
if ( CurrentPos.Left + CurrentPos.Right > mTexWidth ) {
|
||||
CurrentPos.Left = 0 + OutlineSize;
|
||||
CurrentPos.Top += mHeight;
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ class EE_API cTTFFont : public cFont {
|
||||
* @param OutlineColor The Outline Color
|
||||
* @return If success
|
||||
*/
|
||||
bool Load( const std::string& Filepath, const eeUint& Size, EE_TTF_FONTSTYLE Style = EE_TTF_STYLE_NORMAL, const bool& VerticalDraw = false, const Uint16& NumCharsToGen = 512, const eeColor& FontColor = eeColor(), const Uint8& OutlineSize = 0, const eeColor& OutlineColor = eeColor(0,0,0) );
|
||||
bool Load( const std::string& Filepath, const eeUint& Size, EE_TTF_FONTSTYLE Style = EE_TTF_STYLE_NORMAL, const bool& VerticalDraw = false, const Uint16& NumCharsToGen = 512, const eeColor& FontColor = eeColor(), const Uint8& OutlineSize = 0, const eeColor& OutlineColor = eeColor(0,0,0), const bool& AddPixelSeparator = true );
|
||||
|
||||
/** Load Font from pack
|
||||
* @param Pack Pointer to the pack instance
|
||||
@@ -41,7 +41,7 @@ class EE_API cTTFFont : public cFont {
|
||||
* @param OutlineColor The Outline Color
|
||||
* @return If success
|
||||
*/
|
||||
bool LoadFromPack( cPack* Pack, const std::string& FilePackPath, const eeUint& Size, EE_TTF_FONTSTYLE Style = EE_TTF_STYLE_NORMAL, const bool& VerticalDraw = false, const Uint16& NumCharsToGen = 512, const eeColor& FontColor = eeColor(), const Uint8& OutlineSize = 0, const eeColor& OutlineColor = eeColor(0,0,0) );
|
||||
bool LoadFromPack( cPack* Pack, const std::string& FilePackPath, const eeUint& Size, EE_TTF_FONTSTYLE Style = EE_TTF_STYLE_NORMAL, const bool& VerticalDraw = false, const Uint16& NumCharsToGen = 512, const eeColor& FontColor = eeColor(), const Uint8& OutlineSize = 0, const eeColor& OutlineColor = eeColor(0,0,0), const bool& AddPixelSeparator = true );
|
||||
|
||||
/** Load a True Type Font from memory
|
||||
* @param TTFData The pointer to the data
|
||||
@@ -55,7 +55,7 @@ class EE_API cTTFFont : public cFont {
|
||||
* @param OutlineColor The Outline Color
|
||||
* @return If success
|
||||
*/
|
||||
bool LoadFromMemory( Uint8* TTFData, const eeUint& TTFDataSize, const eeUint& Size, EE_TTF_FONTSTYLE Style = EE_TTF_STYLE_NORMAL, const bool& VerticalDraw = false, const Uint16& NumCharsToGen = 512, const eeColor& FontColor = eeColor(), const Uint8& OutlineSize = 0, const eeColor& OutlineColor = eeColor(0,0,0) );
|
||||
bool LoadFromMemory( Uint8* TTFData, const eeUint& TTFDataSize, const eeUint& Size, EE_TTF_FONTSTYLE Style = EE_TTF_STYLE_NORMAL, const bool& VerticalDraw = false, const Uint16& NumCharsToGen = 512, const eeColor& FontColor = eeColor(), const Uint8& OutlineSize = 0, const eeColor& OutlineColor = eeColor(0,0,0), const bool& AddPixelSeparator = true );
|
||||
|
||||
/** Save the texture generated from the TTF file to disk */
|
||||
bool SaveTexture( const std::string& Filepath, const EE_SAVE_TYPE& Format = EE_SAVE_TYPE_PNG );
|
||||
@@ -94,7 +94,7 @@ class EE_API cTTFFont : public cFont {
|
||||
bool mThreadedLoading;
|
||||
bool mTexReady;
|
||||
|
||||
bool iLoad( const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& VerticalDraw, const Uint16& NumCharsToGen, const eeColor& FontColor, const Uint8& OutlineSize, const eeColor& OutlineColor );
|
||||
bool iLoad( const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& VerticalDraw, const Uint16& NumCharsToGen, const eeColor& FontColor, Uint8 OutlineSize, const eeColor& OutlineColor, const bool& AddPixelSeparator );
|
||||
void MakeOutline( Uint8 *in, Uint8 *out, Int16 w, Int16 h);
|
||||
void RebuildFromGlyphs();
|
||||
};
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace EE { namespace Graphics {
|
||||
|
||||
cTTFFontLoader::cTTFFontLoader( const std::string& FontName, const std::string& Filepath, const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& VerticalDraw, const Uint16& NumCharsToGen, const eeColor& FontColor, const Uint8& OutlineSize, const eeColor& OutlineColor ) :
|
||||
cTTFFontLoader::cTTFFontLoader( const std::string& FontName, const std::string& Filepath, const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& VerticalDraw, const Uint16& NumCharsToGen, const eeColor& FontColor, const Uint8& OutlineSize, const eeColor& OutlineColor, const bool& AddPixelSeparator ) :
|
||||
cObjectLoader( FontTTFLoader ),
|
||||
mLoadType( TTF_LT_PATH ),
|
||||
mFontName( FontName ),
|
||||
@@ -14,11 +14,12 @@ cTTFFontLoader::cTTFFontLoader( const std::string& FontName, const std::string&
|
||||
mFontColor( FontColor ),
|
||||
mOutlineSize( OutlineSize ),
|
||||
mOutlineColor( OutlineColor ),
|
||||
mAddPixelSeparator( AddPixelSeparator ),
|
||||
mFontLoaded( false )
|
||||
{
|
||||
}
|
||||
|
||||
cTTFFontLoader::cTTFFontLoader( const std::string& FontName, cPack * Pack, const std::string& FilePackPath, const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& VerticalDraw, const Uint16& NumCharsToGen, const eeColor& FontColor, const Uint8& OutlineSize, const eeColor& OutlineColor ) :
|
||||
cTTFFontLoader::cTTFFontLoader( const std::string& FontName, cPack * Pack, const std::string& FilePackPath, const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& VerticalDraw, const Uint16& NumCharsToGen, const eeColor& FontColor, const Uint8& OutlineSize, const eeColor& OutlineColor, const bool& AddPixelSeparator ) :
|
||||
cObjectLoader( FontTTFLoader ),
|
||||
mLoadType( TTF_LT_PACK ),
|
||||
mFontName( FontName ),
|
||||
@@ -30,12 +31,13 @@ cTTFFontLoader::cTTFFontLoader( const std::string& FontName, cPack * Pack, const
|
||||
mFontColor( FontColor ),
|
||||
mOutlineSize( OutlineSize ),
|
||||
mOutlineColor( OutlineColor ),
|
||||
mAddPixelSeparator( AddPixelSeparator ),
|
||||
mPack( Pack ),
|
||||
mFontLoaded( false )
|
||||
{
|
||||
}
|
||||
|
||||
cTTFFontLoader::cTTFFontLoader( const std::string& FontName, Uint8* TTFData, const eeUint& TTFDataSize, const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& VerticalDraw, const Uint16& NumCharsToGen, const eeColor& FontColor, const Uint8& OutlineSize, const eeColor& OutlineColor ) :
|
||||
cTTFFontLoader::cTTFFontLoader( const std::string& FontName, Uint8* TTFData, const eeUint& TTFDataSize, const eeUint& Size, EE_TTF_FONTSTYLE Style, const bool& VerticalDraw, const Uint16& NumCharsToGen, const eeColor& FontColor, const Uint8& OutlineSize, const eeColor& OutlineColor, const bool& AddPixelSeparator ) :
|
||||
cObjectLoader( FontTTFLoader ),
|
||||
mLoadType( TTF_LT_MEM ),
|
||||
mFontName( FontName ),
|
||||
@@ -46,6 +48,7 @@ cTTFFontLoader::cTTFFontLoader( const std::string& FontName, Uint8* TTFData, con
|
||||
mFontColor( FontColor ),
|
||||
mOutlineSize( OutlineSize ),
|
||||
mOutlineColor( OutlineColor ),
|
||||
mAddPixelSeparator( AddPixelSeparator ),
|
||||
mData( TTFData ),
|
||||
mDataSize( TTFDataSize ),
|
||||
mFontLoaded( false )
|
||||
@@ -88,15 +91,15 @@ const std::string& cTTFFontLoader::Id() const {
|
||||
}
|
||||
|
||||
void cTTFFontLoader::LoadFromPath() {
|
||||
mFont->Load( mFilepath, mSize, mStyle, mVerticalDraw, mNumCharsToGen, mFontColor, mOutlineSize, mOutlineColor );
|
||||
mFont->Load( mFilepath, mSize, mStyle, mVerticalDraw, mNumCharsToGen, mFontColor, mOutlineSize, mOutlineColor, mAddPixelSeparator );
|
||||
}
|
||||
|
||||
void cTTFFontLoader::LoadFromMemory() {
|
||||
mFont->LoadFromMemory( mData, mDataSize, mSize, mStyle, mVerticalDraw, mNumCharsToGen, mFontColor, mOutlineSize, mOutlineColor );
|
||||
mFont->LoadFromMemory( mData, mDataSize, mSize, mStyle, mVerticalDraw, mNumCharsToGen, mFontColor, mOutlineSize, mOutlineColor, mAddPixelSeparator );
|
||||
}
|
||||
|
||||
void cTTFFontLoader::LoadFromPack() {
|
||||
mFont->LoadFromPack( mPack, mFilepath, mSize, mStyle, mVerticalDraw, mNumCharsToGen, mFontColor, mOutlineSize, mOutlineColor );
|
||||
mFont->LoadFromPack( mPack, mFilepath, mSize, mStyle, mVerticalDraw, mNumCharsToGen, mFontColor, mOutlineSize, mOutlineColor, mAddPixelSeparator );
|
||||
}
|
||||
|
||||
cFont * cTTFFontLoader::Font() const {
|
||||
|
||||
@@ -14,11 +14,11 @@ namespace EE { namespace Graphics {
|
||||
|
||||
class EE_API cTTFFontLoader : public cObjectLoader {
|
||||
public:
|
||||
cTTFFontLoader( const std::string& FontName, const std::string& Filepath, const eeUint& Size, EE_TTF_FONTSTYLE Style = EE_TTF_STYLE_NORMAL, const bool& VerticalDraw = false, const Uint16& NumCharsToGen = 512, const eeColor& FontColor = eeColor(), const Uint8& OutlineSize = 0, const eeColor& OutlineColor = eeColor(0,0,0) );
|
||||
cTTFFontLoader( const std::string& FontName, const std::string& Filepath, const eeUint& Size, EE_TTF_FONTSTYLE Style = EE_TTF_STYLE_NORMAL, const bool& VerticalDraw = false, const Uint16& NumCharsToGen = 512, const eeColor& FontColor = eeColor(), const Uint8& OutlineSize = 0, const eeColor& OutlineColor = eeColor(0,0,0), const bool& AddPixelSeparator = true );
|
||||
|
||||
cTTFFontLoader( const std::string& FontName, cPack * Pack, const std::string& FilePackPath, const eeUint& Size, EE_TTF_FONTSTYLE Style = EE_TTF_STYLE_NORMAL, const bool& VerticalDraw = false, const Uint16& NumCharsToGen = 512, const eeColor& FontColor = eeColor(), const Uint8& OutlineSize = 0, const eeColor& OutlineColor = eeColor(0,0,0) );
|
||||
cTTFFontLoader( const std::string& FontName, cPack * Pack, const std::string& FilePackPath, const eeUint& Size, EE_TTF_FONTSTYLE Style = EE_TTF_STYLE_NORMAL, const bool& VerticalDraw = false, const Uint16& NumCharsToGen = 512, const eeColor& FontColor = eeColor(), const Uint8& OutlineSize = 0, const eeColor& OutlineColor = eeColor(0,0,0), const bool& AddPixelSeparator = true );
|
||||
|
||||
cTTFFontLoader( const std::string& FontName, Uint8* TTFData, const eeUint& TTFDataSize, const eeUint& Size, EE_TTF_FONTSTYLE Style = EE_TTF_STYLE_NORMAL, const bool& VerticalDraw = false, const Uint16& NumCharsToGen = 512, const eeColor& FontColor = eeColor(), const Uint8& OutlineSize = 0, const eeColor& OutlineColor = eeColor(0,0,0) );
|
||||
cTTFFontLoader( const std::string& FontName, Uint8* TTFData, const eeUint& TTFDataSize, const eeUint& Size, EE_TTF_FONTSTYLE Style = EE_TTF_STYLE_NORMAL, const bool& VerticalDraw = false, const Uint16& NumCharsToGen = 512, const eeColor& FontColor = eeColor(), const Uint8& OutlineSize = 0, const eeColor& OutlineColor = eeColor(0,0,0), const bool& AddPixelSeparator = true );
|
||||
|
||||
~cTTFFontLoader();
|
||||
|
||||
@@ -41,6 +41,7 @@ class EE_API cTTFFontLoader : public cObjectLoader {
|
||||
eeColor mFontColor;
|
||||
Uint8 mOutlineSize;
|
||||
eeColor mOutlineColor;
|
||||
bool mAddPixelSeparator;
|
||||
cPack * mPack;
|
||||
Uint8 * mData;
|
||||
eeUint mDataSize;
|
||||
|
||||
@@ -1,17 +1,20 @@
|
||||
#include "cvertexbuffer.hpp"
|
||||
#include "cvertexbufferogl.hpp"
|
||||
#include "cvertexbuffervbo.hpp"
|
||||
#include "glhelper.hpp"
|
||||
|
||||
using namespace EE::Graphics::Private;
|
||||
|
||||
namespace EE { namespace Graphics {
|
||||
|
||||
cVertexBuffer * cVertexBuffer::Create( const Uint32& VertexFlags, EE_DRAW_TYPE DrawType, const Int32& ReserveVertexSize, const Int32& ReserveIndexSize, EE_VBO_USAGE_TYPE UsageType ) {
|
||||
if ( GLEW_ARB_vertex_buffer_object )
|
||||
cVertexBuffer * cVertexBuffer::Create( const Uint32& VertexFlags, EE_DRAW_MODE DrawType, const Int32& ReserveVertexSize, const Int32& ReserveIndexSize, EE_VBO_USAGE_TYPE UsageType ) {
|
||||
if ( cGL::instance()->IsExtension( GLEW_ARB_vertex_buffer_object ) )
|
||||
return eeNew( cVertexBufferVBO, ( VertexFlags, DrawType, ReserveVertexSize, ReserveIndexSize, UsageType ) );
|
||||
|
||||
return eeNew( cVertexBufferOGL, ( VertexFlags, DrawType, ReserveVertexSize, ReserveIndexSize, UsageType ) );
|
||||
}
|
||||
|
||||
cVertexBuffer::cVertexBuffer( const Uint32& VertexFlags, EE_DRAW_TYPE DrawType, const Int32& ReserveVertexSize, const Int32& ReserveIndexSize, EE_VBO_USAGE_TYPE UsageType ) :
|
||||
cVertexBuffer::cVertexBuffer( const Uint32& VertexFlags, EE_DRAW_MODE DrawType, const Int32& ReserveVertexSize, const Int32& ReserveIndexSize, EE_VBO_USAGE_TYPE UsageType ) :
|
||||
mVertexFlags( VertexFlags ),
|
||||
mDrawType( DrawType ),
|
||||
mUsageType( UsageType ),
|
||||
@@ -140,15 +143,15 @@ const Int32& cVertexBuffer::GetElementNum() const {
|
||||
|
||||
void cVertexBuffer::Unbind() {
|
||||
if( !VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_POSITION ) ) {
|
||||
glEnableClientState( GL_VERTEX_ARRAY );
|
||||
//glEnableClientState( GL_VERTEX_ARRAY );
|
||||
}
|
||||
|
||||
if( !VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_COLOR ) ) {
|
||||
glEnableClientState( GL_COLOR_ARRAY );
|
||||
//glEnableClientState( GL_COLOR_ARRAY );
|
||||
}
|
||||
|
||||
if( !VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_TEXTURE0 ) ) {
|
||||
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
//glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
glEnable( GL_TEXTURE_2D );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,9 +8,9 @@ namespace EE { namespace Graphics {
|
||||
|
||||
class cVertexBuffer {
|
||||
public:
|
||||
static cVertexBuffer * Create( const Uint32& VertexFlags = VERTEX_FLAGS_DEFAULT, EE_DRAW_TYPE DrawType = EE_DT_QUADS, const Int32& ReserveVertexSize = 0, const Int32& ReserveIndexSize = 0, EE_VBO_USAGE_TYPE UsageType = VBO_USAGE_TYPE_STATIC );
|
||||
static cVertexBuffer * Create( const Uint32& VertexFlags = VERTEX_FLAGS_DEFAULT, EE_DRAW_MODE DrawType = DM_QUADS, const Int32& ReserveVertexSize = 0, const Int32& ReserveIndexSize = 0, EE_VBO_USAGE_TYPE UsageType = VBO_USAGE_TYPE_STATIC );
|
||||
|
||||
cVertexBuffer( const Uint32& VertexFlags = VERTEX_FLAGS_DEFAULT, EE_DRAW_TYPE DrawType = EE_DT_QUADS, const Int32& ReserveVertexSize = 0, const Int32& ReserveIndexSize = 0, EE_VBO_USAGE_TYPE UsageType = VBO_USAGE_TYPE_STATIC );
|
||||
cVertexBuffer( const Uint32& VertexFlags = VERTEX_FLAGS_DEFAULT, EE_DRAW_MODE DrawType = DM_QUADS, const Int32& ReserveVertexSize = 0, const Int32& ReserveIndexSize = 0, EE_VBO_USAGE_TYPE UsageType = VBO_USAGE_TYPE_STATIC );
|
||||
|
||||
virtual ~cVertexBuffer();
|
||||
|
||||
@@ -57,7 +57,7 @@ class cVertexBuffer {
|
||||
virtual bool Compile() = 0;
|
||||
protected:
|
||||
Uint32 mVertexFlags;
|
||||
EE_DRAW_TYPE mDrawType;
|
||||
EE_DRAW_MODE mDrawType;
|
||||
EE_VBO_USAGE_TYPE mUsageType;
|
||||
Int32 mElemDraw;
|
||||
std::vector<eeFloat> mVertexArray[ VERTEX_FLAGS_COUNT - 1 ];
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
#include "cvertexbufferogl.hpp"
|
||||
#include "glhelper.hpp"
|
||||
|
||||
using namespace EE::Graphics::Private;
|
||||
|
||||
namespace EE { namespace Graphics {
|
||||
|
||||
cVertexBufferOGL::cVertexBufferOGL( const Uint32& VertexFlags, EE_DRAW_TYPE DrawType, const Int32& ReserveVertexSize, const Int32& ReserveIndexSize, EE_VBO_USAGE_TYPE UsageType ) :
|
||||
cVertexBufferOGL::cVertexBufferOGL( const Uint32& VertexFlags, EE_DRAW_MODE DrawType, const Int32& ReserveVertexSize, const Int32& ReserveIndexSize, EE_VBO_USAGE_TYPE UsageType ) :
|
||||
cVertexBuffer( VertexFlags, DrawType, ReserveVertexSize, ReserveIndexSize, UsageType )
|
||||
{
|
||||
}
|
||||
@@ -37,7 +40,7 @@ void cVertexBufferOGL::SetVertexStates() {
|
||||
glEnableClientState( GL_VERTEX_ARRAY );
|
||||
glVertexPointer( eeVertexElements[ VERTEX_FLAG_POSITION ], GL_FLOAT, sizeof(float) * eeVertexElements[ VERTEX_FLAG_POSITION ], &mVertexArray[ VERTEX_FLAG_POSITION ][0] );
|
||||
} else {
|
||||
glDisableClientState( GL_VERTEX_ARRAY );
|
||||
//glDisableClientState( GL_VERTEX_ARRAY );
|
||||
}
|
||||
|
||||
/// COLOR
|
||||
@@ -45,22 +48,34 @@ void cVertexBufferOGL::SetVertexStates() {
|
||||
glEnableClientState( GL_COLOR_ARRAY );
|
||||
glColorPointer( eeVertexElements[ VERTEX_FLAG_COLOR ], GL_UNSIGNED_BYTE, sizeof(Uint8) * eeVertexElements[ VERTEX_FLAG_COLOR ], &mColorArray[0] );
|
||||
} else {
|
||||
glDisableClientState( GL_COLOR_ARRAY );
|
||||
//glDisableClientState( GL_COLOR_ARRAY );
|
||||
}
|
||||
|
||||
/// TEXTURES
|
||||
for ( Int32 i = 0; i < 5; i++ ) {
|
||||
if( VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_TEXTURE0 + i ) ) {
|
||||
glClientActiveTextureARB( GL_TEXTURE0_ARB );
|
||||
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
if ( cGL::instance()->IsExtension( EEGL_ARB_multitexture ) ) {
|
||||
for ( Int32 i = 0; i < 5; i++ ) {
|
||||
if( VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_TEXTURE0 + i ) ) {
|
||||
glClientActiveTextureARB( GL_TEXTURE0_ARB + i );
|
||||
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
|
||||
glTexCoordPointer( eeVertexElements[ VERTEX_FLAG_TEXTURE0 + i ], GL_FLOAT, sizeof(float) * eeVertexElements[ VERTEX_FLAG_TEXTURE0 + i ], &mVertexArray[ VERTEX_FLAG_TEXTURE0 + i ][0] );
|
||||
glTexCoordPointer( eeVertexElements[ VERTEX_FLAG_TEXTURE0 + i ], GL_FLOAT, sizeof(float) * eeVertexElements[ VERTEX_FLAG_TEXTURE0 + i ], &mVertexArray[ VERTEX_FLAG_TEXTURE0 + i ][0] );
|
||||
} else {
|
||||
//glDisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
glDisable( GL_TEXTURE_2D );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if ( VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_TEXTURE0 ) ) {
|
||||
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
glTexCoordPointer( eeVertexElements[ VERTEX_FLAG_TEXTURE0 ], GL_FLOAT, sizeof(float) * eeVertexElements[ VERTEX_FLAG_TEXTURE0 ], &mVertexArray[ VERTEX_FLAG_TEXTURE0 ][0] );
|
||||
} else {
|
||||
//glClientActiveTextureARB( GL_TEXTURE0_ARB );
|
||||
glDisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
//glDisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
glDisable( GL_TEXTURE_2D );
|
||||
}
|
||||
}
|
||||
|
||||
glActiveTextureARB( GL_TEXTURE0_ARB );
|
||||
glClientActiveTextureARB( GL_TEXTURE0_ARB );
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace EE { namespace Graphics {
|
||||
|
||||
class cVertexBufferOGL : public cVertexBuffer {
|
||||
public:
|
||||
cVertexBufferOGL( const Uint32& VertexFlags = VERTEX_FLAGS_DEFAULT, EE_DRAW_TYPE DrawType = EE_DT_QUADS, const Int32& ReserveVertexSize = 0, const Int32& ReserveIndexSize = 0, EE_VBO_USAGE_TYPE UsageType = VBO_USAGE_TYPE_STATIC );
|
||||
cVertexBufferOGL( const Uint32& VertexFlags = VERTEX_FLAGS_DEFAULT, EE_DRAW_MODE DrawType = DM_QUADS, const Int32& ReserveVertexSize = 0, const Int32& ReserveIndexSize = 0, EE_VBO_USAGE_TYPE UsageType = VBO_USAGE_TYPE_STATIC );
|
||||
|
||||
virtual ~cVertexBufferOGL();
|
||||
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
#include "cvertexbuffervbo.hpp"
|
||||
#include "glhelper.hpp"
|
||||
|
||||
using namespace EE::Graphics::Private;
|
||||
|
||||
namespace EE { namespace Graphics {
|
||||
|
||||
cVertexBufferVBO::cVertexBufferVBO( const Uint32& VertexFlags, EE_DRAW_TYPE DrawType, const Int32& ReserveVertexSize, const Int32& ReserveIndexSize, EE_VBO_USAGE_TYPE UsageType ) :
|
||||
cVertexBufferVBO::cVertexBufferVBO( const Uint32& VertexFlags, EE_DRAW_MODE DrawType, const Int32& ReserveVertexSize, const Int32& ReserveIndexSize, EE_VBO_USAGE_TYPE UsageType ) :
|
||||
cVertexBuffer( VertexFlags, DrawType, ReserveVertexSize, ReserveIndexSize, UsageType ),
|
||||
mCompiled( false ),
|
||||
mElementHandle( 0 )
|
||||
@@ -103,7 +106,7 @@ void cVertexBufferVBO::SetVertexStates() {
|
||||
glBindBufferARB( GL_ARRAY_BUFFER_ARB, mArrayHandle[ VERTEX_FLAG_POSITION ] );
|
||||
glVertexPointer( eeVertexElements[ VERTEX_FLAG_POSITION ], GL_FLOAT, 0, (char*)NULL );
|
||||
} else {
|
||||
glDisableClientState( GL_VERTEX_ARRAY );
|
||||
//glDisableClientState( GL_VERTEX_ARRAY );
|
||||
}
|
||||
|
||||
/// COLOR
|
||||
@@ -112,23 +115,36 @@ void cVertexBufferVBO::SetVertexStates() {
|
||||
glBindBufferARB( GL_ARRAY_BUFFER_ARB, mArrayHandle[ VERTEX_FLAG_COLOR ] );
|
||||
glColorPointer( eeVertexElements[ VERTEX_FLAG_COLOR ], GL_UNSIGNED_BYTE, 0, (char*)NULL );
|
||||
} else {
|
||||
glDisableClientState( GL_COLOR_ARRAY );
|
||||
//glDisableClientState( GL_COLOR_ARRAY );
|
||||
}
|
||||
|
||||
/// TEXTURES
|
||||
for ( Int32 i = 0; i < 5; i++ ) {
|
||||
if( VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_TEXTURE0 + i ) ) {
|
||||
glClientActiveTextureARB( GL_TEXTURE0_ARB );
|
||||
if ( cGL::instance()->IsExtension( EEGL_ARB_multitexture ) ) {
|
||||
for ( Int32 i = 0; i < 5; i++ ) {
|
||||
if( VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_TEXTURE0 + i ) ) {
|
||||
glClientActiveTextureARB( GL_TEXTURE0_ARB + i );
|
||||
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
glBindBufferARB( GL_ARRAY_BUFFER_ARB, mArrayHandle[ VERTEX_FLAG_TEXTURE0 + i ] );
|
||||
glTexCoordPointer( eeVertexElements[ VERTEX_FLAG_TEXTURE0 + i ], GL_FLOAT, 0, (char*)NULL );
|
||||
} else {
|
||||
//glDisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
glDisable( GL_TEXTURE_2D );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if ( VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_TEXTURE0 ) ) {
|
||||
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
glBindBufferARB( GL_ARRAY_BUFFER_ARB, mArrayHandle[ VERTEX_FLAG_TEXTURE0 + i ] );
|
||||
glTexCoordPointer( eeVertexElements[ VERTEX_FLAG_TEXTURE0 + i ], GL_FLOAT, 0, (char*)NULL );
|
||||
glBindBufferARB( GL_ARRAY_BUFFER_ARB, mArrayHandle[ VERTEX_FLAG_TEXTURE0 ] );
|
||||
glTexCoordPointer( eeVertexElements[ VERTEX_FLAG_TEXTURE0 ], GL_FLOAT, 0, (char*)NULL );
|
||||
} else {
|
||||
//glClientActiveTextureARB( GL_TEXTURE0_ARB );
|
||||
glDisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
//glDisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
glDisable( GL_TEXTURE_2D );
|
||||
}
|
||||
}
|
||||
|
||||
glActiveTextureARB( GL_TEXTURE0_ARB );
|
||||
glClientActiveTextureARB( GL_TEXTURE0_ARB );
|
||||
|
||||
glBindBufferARB( GL_ARRAY_BUFFER_ARB, 0 );
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace EE { namespace Graphics {
|
||||
|
||||
class cVertexBufferVBO : public cVertexBuffer {
|
||||
public:
|
||||
cVertexBufferVBO( const Uint32& VertexFlags = VERTEX_FLAGS_DEFAULT, EE_DRAW_TYPE DrawType = EE_DT_QUADS, const Int32& ReserveVertexSize = 0, const Int32& ReserveIndexSize = 0, EE_VBO_USAGE_TYPE UsageType = VBO_USAGE_TYPE_STATIC );
|
||||
cVertexBufferVBO( const Uint32& VertexFlags = VERTEX_FLAGS_DEFAULT, EE_DRAW_MODE DrawType = DM_QUADS, const Int32& ReserveVertexSize = 0, const Int32& ReserveIndexSize = 0, EE_VBO_USAGE_TYPE UsageType = VBO_USAGE_TYPE_STATIC );
|
||||
|
||||
virtual ~cVertexBufferVBO();
|
||||
|
||||
|
||||
@@ -26,17 +26,17 @@ inline Uint32 FontVAlignGet( Uint32 Flags ) {
|
||||
|
||||
|
||||
/** Basic Glyph structure used by the engine */
|
||||
typedef struct {
|
||||
typedef struct eeGlyphS {
|
||||
Int32 MinX, MaxX, MinY, MaxY, Advance;
|
||||
Uint16 CurX, CurY, CurW, CurH, GlyphH;
|
||||
} eeGlyph;
|
||||
|
||||
typedef struct {
|
||||
typedef struct eeVertexCoordsS {
|
||||
eeFloat TexCoords[2];
|
||||
eeFloat Vertex[2];
|
||||
} eeVertexCoords;
|
||||
|
||||
typedef struct {
|
||||
typedef struct eeTexCoordsS {
|
||||
eeFloat TexCoords[8];
|
||||
eeFloat Vertex[8];
|
||||
} eeTexCoords;
|
||||
|
||||
147
src/graphics/glhelper.cpp
Normal file
147
src/graphics/glhelper.cpp
Normal file
@@ -0,0 +1,147 @@
|
||||
#include "glhelper.hpp"
|
||||
|
||||
namespace EE { namespace Graphics { namespace Private {
|
||||
|
||||
static void _WriteBit( Uint32 * Key, Uint8 Pos, Uint32 BitWrite ) {
|
||||
if ( BitWrite )
|
||||
( * Key ) |= ( 1 << Pos );
|
||||
else {
|
||||
if ( ( * Key ) & ( 1 << Pos ) )
|
||||
( * Key ) &= ~( 1 << Pos );
|
||||
}
|
||||
}
|
||||
|
||||
cGL::cGL() :
|
||||
mExtensions(0)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
cGL::~cGL() {
|
||||
|
||||
}
|
||||
|
||||
void cGL::WriteExtension( Uint8 Pos, Uint32 BitWrite ) {
|
||||
_WriteBit( &mExtensions, Pos, BitWrite );
|
||||
}
|
||||
|
||||
void cGL::Init() {
|
||||
bool glewOn = false;
|
||||
|
||||
#ifdef EE_GLEW_AVAILABLE
|
||||
glewOn = ( GLEW_OK == glewInit() );
|
||||
|
||||
if ( glewOn ) {
|
||||
WriteExtension( EEGL_ARB_texture_non_power_of_two , GLEW_ARB_texture_non_power_of_two );
|
||||
WriteExtension( EEGL_ARB_point_parameters , GLEW_ARB_point_parameters );
|
||||
WriteExtension( EEGL_ARB_point_sprite , GLEW_ARB_point_sprite );
|
||||
WriteExtension( EEGL_ARB_shading_language_100 , GLEW_ARB_shading_language_100 );
|
||||
WriteExtension( EEGL_ARB_shader_objects , GLEW_ARB_shader_objects );
|
||||
WriteExtension( EEGL_ARB_vertex_shader , GLEW_ARB_vertex_shader );
|
||||
WriteExtension( EEGL_ARB_fragment_shader , GLEW_ARB_fragment_shader );
|
||||
WriteExtension( EEGL_EXT_framebuffer_object , GLEW_EXT_framebuffer_object );
|
||||
WriteExtension( EEGL_ARB_multitexture , GLEW_ARB_multitexture );
|
||||
WriteExtension( EEGL_EXT_texture_compression_s3tc , GLEW_EXT_texture_compression_s3tc );
|
||||
}
|
||||
#endif
|
||||
|
||||
if ( !glewOn ) {
|
||||
WriteExtension( EEGL_ARB_texture_non_power_of_two , GetExtension( "GL_ARB_texture_non_power_of_two" ) );
|
||||
WriteExtension( EEGL_ARB_point_parameters , GetExtension( "GL_ARB_point_parameters" ) );
|
||||
WriteExtension( EEGL_ARB_point_sprite , GetExtension( "GL_ARB_point_sprite" ) );
|
||||
WriteExtension( EEGL_ARB_shading_language_100 , GetExtension( "GL_ARB_shading_language_100" ) );
|
||||
WriteExtension( EEGL_ARB_shader_objects , GetExtension( "GL_ARB_shader_objects" ) );
|
||||
WriteExtension( EEGL_ARB_vertex_shader , GetExtension( "GL_ARB_vertex_shader" ) );
|
||||
WriteExtension( EEGL_ARB_fragment_shader , GetExtension( "GL_ARB_fragment_shader" ) );
|
||||
WriteExtension( EEGL_EXT_framebuffer_object , GetExtension( "GL_EXT_framebuffer_object" ) );
|
||||
WriteExtension( EEGL_ARB_multitexture , GetExtension( "GL_ARB_multitexture" ) );
|
||||
WriteExtension( EEGL_EXT_texture_compression_s3tc , GetExtension( "GL_EXT_texture_compression_s3tc" ) );
|
||||
}
|
||||
}
|
||||
|
||||
Uint32 cGL::GetExtension( const char * name ) {
|
||||
#ifdef EE_GLEW_AVAILABLE
|
||||
return glewIsSupported( name );
|
||||
#else
|
||||
char *Exts = (char *)glGetString(GL_EXTENSIONS);
|
||||
|
||||
if ( strstr( Exts, name ) )
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool cGL::IsExtension( Uint32 name ) {
|
||||
return 0 != ( mExtensions & ( 1 << name ) );
|
||||
}
|
||||
|
||||
bool cGL::PointSpriteSupported() {
|
||||
return IsExtension( EEGL_ARB_point_parameters ) && IsExtension( EEGL_ARB_point_sprite );
|
||||
}
|
||||
|
||||
bool cGL::ShadersSupported() {
|
||||
return IsExtension( EEGL_ARB_shading_language_100 ) && IsExtension( EEGL_ARB_shader_objects ) && IsExtension( EEGL_ARB_vertex_shader ) && IsExtension( EEGL_ARB_fragment_shader );
|
||||
}
|
||||
|
||||
Uint32 cGL::GetTextureParamEnum( const EE_TEXTURE_PARAM& Type ) {
|
||||
switch( Type ) {
|
||||
case TEX_PARAM_COLOR_FUNC: return GL_COMBINE_RGB_ARB;
|
||||
case TEX_PARAM_ALPHA_FUNC: return GL_COMBINE_ALPHA_ARB;
|
||||
case TEX_PARAM_COLOR_SOURCE_0: return GL_SOURCE0_RGB_ARB;
|
||||
case TEX_PARAM_COLOR_SOURCE_1: return GL_SOURCE1_RGB_ARB;
|
||||
case TEX_PARAM_COLOR_SOURCE_2: return GL_SOURCE2_RGB_ARB;
|
||||
case TEX_PARAM_ALPHA_SOURCE_0: return GL_SOURCE0_ALPHA_ARB;
|
||||
case TEX_PARAM_ALPHA_SOURCE_1: return GL_SOURCE1_ALPHA_ARB;
|
||||
case TEX_PARAM_ALPHA_SOURCE_2: return GL_SOURCE2_ALPHA_ARB;
|
||||
case TEX_PARAM_COLOR_OP_0: return GL_OPERAND0_RGB_ARB;
|
||||
case TEX_PARAM_COLOR_OP_1: return GL_OPERAND1_RGB_ARB;
|
||||
case TEX_PARAM_COLOR_OP_2: return GL_OPERAND2_RGB_ARB;
|
||||
case TEX_PARAM_ALPHA_OP_0: return GL_OPERAND0_ALPHA_ARB;
|
||||
case TEX_PARAM_ALPHA_OP_1: return GL_OPERAND1_ALPHA_ARB;
|
||||
case TEX_PARAM_ALPHA_OP_2: return GL_OPERAND2_ALPHA_ARB;
|
||||
case TEX_PARAM_COLOR_SCALE: return GL_RGB_SCALE_ARB;
|
||||
case TEX_PARAM_ALPHA_SCALE: return GL_ALPHA_SCALE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Uint32 cGL::GetTextureFuncEnum( const EE_TEXTURE_FUNC& Type ) {
|
||||
switch( Type ) {
|
||||
case TEX_FUNC_MODULATE: return GL_MODULATE;
|
||||
case TEX_FUNC_REPLACE: return GL_REPLACE;
|
||||
case TEX_FUNC_ADD: return GL_ADD;
|
||||
case TEX_FUNC_SUBSTRACT: return GL_SUBTRACT_ARB;
|
||||
case TEX_FUNC_ADD_SIGNED: return GL_ADD_SIGNED_ARB;
|
||||
case TEX_FUNC_INTERPOLATE: return GL_INTERPOLATE_ARB;
|
||||
case TEX_FUNC_DOT3_RGB: return GL_DOT3_RGB_ARB;
|
||||
case TEX_FUNC_DOT3_RGBA: return GL_DOT3_RGBA_ARB;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Uint32 cGL::GetTextureSourceEnum( const EE_TEXTURE_SOURCE& Type ) {
|
||||
switch( Type) {
|
||||
case TEX_SRC_TEXTURE: return GL_TEXTURE;
|
||||
case TEX_SRC_CONSTANT: return GL_CONSTANT_ARB;
|
||||
case TEX_SRC_PRIMARY: return GL_PRIMARY_COLOR_ARB;
|
||||
case TEX_SRC_PREVIOUS: return GL_PREVIOUS_ARB;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Uint32 cGL::GetTextureOpEnum( const EE_TEXTURE_OP& Type ) {
|
||||
switch( Type ) {
|
||||
case TEX_OP_COLOR: return GL_SRC_COLOR;
|
||||
case TEX_OP_ONE_MINUS_COLOR: return GL_ONE_MINUS_SRC_COLOR;
|
||||
case TEX_OP_ALPHA: return GL_SRC_ALPHA;
|
||||
case TEX_OP_ONE_MINUS_ALPHA: return GL_ONE_MINUS_SRC_ALPHA;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
}}}
|
||||
52
src/graphics/glhelper.hpp
Normal file
52
src/graphics/glhelper.hpp
Normal file
@@ -0,0 +1,52 @@
|
||||
#ifndef EE_GRAPHICSGLHELPER_HPP
|
||||
#define EE_GRAPHICSGLHELPER_HPP
|
||||
|
||||
#include "base.hpp"
|
||||
#include "renders.hpp"
|
||||
|
||||
namespace EE { namespace Graphics { namespace Private {
|
||||
|
||||
#define EEGL_ARB_texture_non_power_of_two (0)
|
||||
#define EEGL_ARB_point_parameters (1)
|
||||
#define EEGL_ARB_point_sprite (2)
|
||||
#define EEGL_ARB_shading_language_100 (3)
|
||||
#define EEGL_ARB_shader_objects (4)
|
||||
#define EEGL_ARB_vertex_shader (5)
|
||||
#define EEGL_ARB_fragment_shader (6)
|
||||
#define EEGL_EXT_framebuffer_object (7)
|
||||
#define EEGL_ARB_multitexture (8)
|
||||
#define EEGL_EXT_texture_compression_s3tc (9)
|
||||
|
||||
class cGL : public tSingleton<cGL> {
|
||||
friend class tSingleton<cGL>;
|
||||
public:
|
||||
cGL();
|
||||
|
||||
virtual ~cGL();
|
||||
|
||||
void Init();
|
||||
|
||||
Uint32 GetExtension( const char * name );
|
||||
|
||||
bool IsExtension( Uint32 name );
|
||||
|
||||
bool PointSpriteSupported();
|
||||
|
||||
bool ShadersSupported();
|
||||
|
||||
Uint32 GetTextureParamEnum( const EE_TEXTURE_PARAM& Type );
|
||||
|
||||
Uint32 GetTextureFuncEnum( const EE_TEXTURE_FUNC& Type );
|
||||
|
||||
Uint32 GetTextureSourceEnum( const EE_TEXTURE_SOURCE& Type );
|
||||
|
||||
Uint32 GetTextureOpEnum( const EE_TEXTURE_OP& Type );
|
||||
protected:
|
||||
Uint32 mExtensions;
|
||||
private:
|
||||
void WriteExtension( Uint8 Pos, Uint32 BitWrite );
|
||||
};
|
||||
|
||||
}}}
|
||||
|
||||
#endif
|
||||
@@ -3,28 +3,31 @@
|
||||
|
||||
namespace EE { namespace Graphics {
|
||||
|
||||
/** @enum EE_FILLMODE Defines the fill mode for the primitives. */
|
||||
enum EE_FILLMODE {
|
||||
DRAW_LINE, //!< Draw only lines
|
||||
DRAW_FILL //!< Draw filled objects
|
||||
#define EE_MAX_TEXTURE_UNITS 8
|
||||
|
||||
/** @enum EE_FILL_MODE Defines the fill mode for the primitives. */
|
||||
enum EE_FILL_MODE {
|
||||
EE_DRAW_LINE, //!< Draw only lines
|
||||
EE_DRAW_FILL //!< Draw filled objects
|
||||
};
|
||||
|
||||
/** @enum EE_TEX_FILTER Defines the texture filter used. */
|
||||
enum EE_TEX_FILTER {
|
||||
TEX_LINEAR, //!< Linear filtering (Smoothed Zoom)
|
||||
TEX_NEAREST //!< No filtering (Pixeled Zoom)
|
||||
EE_TEX_LINEAR, //!< Linear filtering (Smoothed Zoom)
|
||||
EE_TEX_NEAREST //!< No filtering (Pixeled Zoom)
|
||||
};
|
||||
|
||||
/** @enum EE_RENDERALPHAS Defines the Blend Function to use */
|
||||
enum EE_RENDERALPHAS {
|
||||
ALPHA_NONE, //!< Disable the GL_BLEND
|
||||
ALPHA_NORMAL, //!< glBlendFunc(GL_SRC_ALPHA , GL_ONE_MINUS_SRC_ALPHA);
|
||||
ALPHA_BLENDONE, //!< glBlendFunc(GL_SRC_ALPHA , GL_ONE);
|
||||
ALPHA_BLENDTWO, //!< glBlendFunc(GL_SRC_ALPHA , GL_SRC_ALPHA); \n glBlendFunc(GL_DST_ALPHA , GL_ONE);
|
||||
ALPHA_BLENDTHREE, //!< glBlendFunc(GL_SRC_ALPHA , GL_ONE); \n glBlendFunc(GL_DST_ALPHA , GL_SRC_ALPHA);
|
||||
ALPHA_ALPHACHANNELS, //!< glBlendFunc(GL_SRC_ALPHA , GL_SRC_ALPHA);
|
||||
ALPHA_DESTALPHA, //!< glBlendFunc(GL_SRC_ALPHA , GL_DST_ALPHA);
|
||||
ALPHA_MULTIPLY //!< glBlendFunc(GL_DST_COLOR,GL_ZERO);
|
||||
/** @enum EE_PRE_BLEND_FUNC Predefined blend functions */
|
||||
enum EE_PRE_BLEND_FUNC {
|
||||
ALPHA_NONE, //!< Disable the blend
|
||||
ALPHA_NORMAL, //!< src SRC_ALPHA dst ONE_MINUS_SRC_ALPHA
|
||||
ALPHA_BLENDONE, //!< src SRC_ALPHA dst ONE
|
||||
ALPHA_BLENDTWO, //!< src SRC_ALPHA dst SRC_ALPHA \n src DST_ALPHA dst ONE
|
||||
ALPHA_BLENDTHREE, //!< src SRC_ALPHA dst ONE \n src DST_ALPHA dst SRC_ALPHA
|
||||
ALPHA_ALPHACHANNELS, //!< src SRC_ALPHA dst SRC_ALPHA
|
||||
ALPHA_DESTALPHA, //!< src SRC_ALPHA dst DST_ALPHA
|
||||
ALPHA_MULTIPLY, //!< src DST_COLOR dst ZERO
|
||||
ALPHA_CUSTOM //!< Disable the Predefined blend function for the use of custom blend funcs.
|
||||
};
|
||||
|
||||
/** @enum EE_RENDERTYPE Defines the method to use to render a texture. */
|
||||
@@ -60,22 +63,95 @@ enum EE_CLAMP_MODE {
|
||||
EE_CLAMP_REPEAT
|
||||
};
|
||||
|
||||
/** @enum EE_DRAW_TYPE The batch renderer, rendering methods */
|
||||
enum EE_DRAW_TYPE {
|
||||
EE_DT_POINTS = 0x0000,
|
||||
EE_DT_LINES = 0x0001,
|
||||
EE_DT_LINE_LOOP = 0x0002,
|
||||
EE_DT_LINE_STRIP = 0x0003,
|
||||
EE_DT_TRIANGLES = 0x0004,
|
||||
EE_DT_TRIANGLE_STRIP = 0x0005,
|
||||
EE_DT_TRIANGLE_FAN = 0x0006,
|
||||
EE_DT_QUADS = 0x0007,
|
||||
EE_DT_QUAD_STRIP = 0x0008,
|
||||
EE_DT_POLYGON = 0x0009
|
||||
/** @enum EE_DRAW_MODE The batch renderer, rendering methods */
|
||||
enum EE_DRAW_MODE {
|
||||
DM_POINTS = 0x0000,
|
||||
DM_LINES = 0x0001,
|
||||
DM_LINE_LOOP = 0x0002,
|
||||
DM_LINE_STRIP = 0x0003,
|
||||
DM_TRIANGLES = 0x0004,
|
||||
DM_TRIANGLE_STRIP = 0x0005,
|
||||
DM_TRIANGLE_FAN = 0x0006,
|
||||
DM_QUADS = 0x0007,
|
||||
DM_QUAD_STRIP = 0x0008,
|
||||
DM_POLYGON = 0x0009
|
||||
};
|
||||
|
||||
}
|
||||
/** @enum EE_BLEND_FUNC Blend functions */
|
||||
enum EE_BLEND_FUNC {
|
||||
BF_ZERO = 0,
|
||||
BF_ONE = 1,
|
||||
BF_SRC_COLOR = 0x0300,
|
||||
BF_ONE_MINUS_SRC_COLOR = 0x0301,
|
||||
BF_SRC_ALPHA = 0x0302,
|
||||
BF_ONE_MINUS_SRC_ALPHA = 0x0303,
|
||||
BF_DST_ALPHA = 0x0304,
|
||||
BF_ONE_MINUS_DST_ALPHA = 0x0305,
|
||||
BF_DST_COLOR = 0x0306,
|
||||
BF_ONE_MINUS_DST_COLOR = 0x0307,
|
||||
BF_SRC_ALPHA_SATURATE = 0x0308
|
||||
};
|
||||
|
||||
}
|
||||
/** @enum EE_TEXTURE_PARAM Texture Params */
|
||||
enum EE_TEXTURE_PARAM {
|
||||
TEX_PARAM_COLOR_FUNC,
|
||||
TEX_PARAM_ALPHA_FUNC,
|
||||
TEX_PARAM_COLOR_SOURCE_0,
|
||||
TEX_PARAM_COLOR_SOURCE_1,
|
||||
TEX_PARAM_COLOR_SOURCE_2,
|
||||
TEX_PARAM_ALPHA_SOURCE_0,
|
||||
TEX_PARAM_ALPHA_SOURCE_1,
|
||||
TEX_PARAM_ALPHA_SOURCE_2,
|
||||
TEX_PARAM_COLOR_OP_0,
|
||||
TEX_PARAM_COLOR_OP_1,
|
||||
TEX_PARAM_COLOR_OP_2,
|
||||
TEX_PARAM_ALPHA_OP_0,
|
||||
TEX_PARAM_ALPHA_OP_1,
|
||||
TEX_PARAM_ALPHA_OP_2,
|
||||
TEX_PARAM_COLOR_SCALE,
|
||||
TEX_PARAM_ALPHA_SCALE
|
||||
};
|
||||
|
||||
/** @enum EE_TEXTURE_OP Texture Env Op */
|
||||
enum EE_TEXTURE_OP {
|
||||
TEX_OP_COLOR,
|
||||
TEX_OP_ONE_MINUS_COLOR,
|
||||
TEX_OP_ALPHA,
|
||||
TEX_OP_ONE_MINUS_ALPHA
|
||||
};
|
||||
|
||||
/** @enum EE_TEXTURE_FUNC Texture functions */
|
||||
enum EE_TEXTURE_FUNC {
|
||||
TEX_FUNC_MODULATE,
|
||||
TEX_FUNC_REPLACE,
|
||||
TEX_FUNC_ADD,
|
||||
TEX_FUNC_SUBSTRACT,
|
||||
TEX_FUNC_ADD_SIGNED,
|
||||
TEX_FUNC_INTERPOLATE,
|
||||
TEX_FUNC_DOT3_RGB,
|
||||
TEX_FUNC_DOT3_RGBA
|
||||
};
|
||||
|
||||
/** @enum EE_ALPHA_TEST_FUNC Alpha test functions */
|
||||
enum EE_ALPHA_TEST_FUNC {
|
||||
ALPHA_FUNC_NEVER,
|
||||
ALPHA_FUNC_LESS,
|
||||
ALPHA_FUNC_LEQUAL,
|
||||
ALPHA_FUNC_GREATER,
|
||||
ALPHA_FUNC_GEQUAL,
|
||||
ALPHA_FUNC_EQUAL,
|
||||
ALPHA_FUNC_NOTEQUAL,
|
||||
ALPHA_FUNC_ALWAYS
|
||||
};
|
||||
|
||||
/** @enum EE_TEXTURE_SOURCE The Texture Source */
|
||||
enum EE_TEXTURE_SOURCE {
|
||||
TEX_SRC_TEXTURE,
|
||||
TEX_SRC_CONSTANT,
|
||||
TEX_SRC_PRIMARY,
|
||||
TEX_SRC_PREVIOUS
|
||||
};
|
||||
|
||||
}}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
#include "../ee.h"
|
||||
|
||||
/**
|
||||
@TODO Add a memory manager ( and a STL Allocator implemented in all the engine ).
|
||||
@TODO Support multitexturing.
|
||||
@TODO Create a basic UI system ( add basic controls, add skinning support ).
|
||||
@TODO Add some Surface Grid class, to create special effects ( waved texture, and stuff like that ).
|
||||
@TODO Add Scripting support ( lua or squirrel ).
|
||||
@@ -168,6 +166,7 @@ class cEETest : private cThread {
|
||||
eeInt mHeight;
|
||||
|
||||
std::wstring mBuda;
|
||||
cTextCache * mBudaTC;
|
||||
|
||||
bool mTextureLoaded;
|
||||
cResourceLoader mResLoad;
|
||||
@@ -283,7 +282,7 @@ void cEETest::Init() {
|
||||
WP.Start();
|
||||
|
||||
Batch.AllocVertexs( 1024 );
|
||||
Batch.SetBlendFunc( ALPHA_BLENDONE );
|
||||
Batch.SetPreBlendFunc( ALPHA_BLENDONE );
|
||||
|
||||
mFB = cFrameBuffer::CreateNew( 256, 256, false );
|
||||
|
||||
@@ -293,7 +292,7 @@ void cEETest::Init() {
|
||||
|
||||
eePolygon2f Poly = CreateRoundedPolygon( 0.f, 0.f, 250.f, 50.f );
|
||||
|
||||
mVBO = cVertexBuffer::Create( VERTEX_FLAG_GET( VERTEX_FLAG_POSITION ) | VERTEX_FLAG_GET( VERTEX_FLAG_COLOR ), EE_DT_POLYGON );
|
||||
mVBO = cVertexBuffer::Create( VERTEX_FLAG_GET( VERTEX_FLAG_POSITION ) | VERTEX_FLAG_GET( VERTEX_FLAG_COLOR ), DM_POLYGON );
|
||||
|
||||
for ( Uint32 i = 0; i < Poly.Size(); i++ ) {
|
||||
mVBO->AddVertex( Poly[i] );
|
||||
@@ -313,7 +312,7 @@ void cEETest::Init() {
|
||||
void cEETest::LoadFonts() {
|
||||
mFontLoader.Add( eeNew( cTextureFontLoader, ( "conchars", eeNew( cTextureLoader, ( &PAK, "conchars.png", false, eeRGB(0,0,0) ) ), (eeUint)32 ) ) );
|
||||
mFontLoader.Add( eeNew( cTextureFontLoader, ( "ProggySquareSZ", eeNew( cTextureLoader, ( &PAK, "ProggySquareSZ.png" ) ), &PAK, "ProggySquareSZ.dat" ) ) );
|
||||
mFontLoader.Add( eeNew( cTTFFontLoader, ( "arial", &PAK, "arial.ttf", 12, EE_TTF_STYLE_NORMAL, false, 512, eeColor(255,255,255), 1, eeColor(0,0,0) ) ) );
|
||||
mFontLoader.Add( eeNew( cTTFFontLoader, ( "arial", &PAK, "arial.ttf", 12, EE_TTF_STYLE_NORMAL, false, 256, eeColor(255,255,255), 1, eeColor(0,0,0), true ) ) );
|
||||
mFontLoader.Load( boost::bind( &cEETest::OnFontLoaded, this, _1 ) );
|
||||
}
|
||||
|
||||
@@ -322,8 +321,6 @@ void cEETest::OnFontLoaded( cResourceLoader * ObjLoaded ) {
|
||||
FF2 = reinterpret_cast<cTextureFont*> ( cFontManager::instance()->GetByName( "ProggySquareSZ" ) );
|
||||
TTF = reinterpret_cast<cTTFFont*> ( cFontManager::instance()->GetByName( "arial" ) );
|
||||
|
||||
TF->GetTexture( TTF->GetTexId() )->SetTextureFilter( TEX_NEAREST );
|
||||
|
||||
Con.Create( FF, true );
|
||||
Con.IgnoreCharOnPrompt( 186 ); // L'º'
|
||||
|
||||
@@ -420,6 +417,8 @@ void cEETest::CreateUI() {
|
||||
|
||||
mBuda = L"El mono ve el pez en el agua y sufre. Piensa que su mundo es el único que existe, el mejor, el real. Sufre porque es bueno y tiene compasión, lo ve y piensa: \"Pobre se está ahogando no puede respirar\". Y lo saca, lo saca y se queda tranquilo, por fin lo salvé. Pero el pez se retuerce de dolor y muere. Por eso te mostré el sueño, es imposible meter el mar en tu cabeza, que es un balde.\nPowered by Text Shrinker =)";
|
||||
TTF->ShrinkText( mBuda, 400 );
|
||||
|
||||
mBudaTC = eeNew( cTextCache, ( TTF, mBuda, eeColorA(255,255,255,255) ) );
|
||||
}
|
||||
|
||||
void cEETest::CmdSetPartsNum ( const std::vector < std::wstring >& params ) {
|
||||
@@ -743,9 +742,9 @@ void cEETest::Screen2() {
|
||||
CL1.Draw();
|
||||
CL2.Draw();
|
||||
|
||||
PR.DrawRectangle( CL1.GetAABB(), 0.0f, 1.0f, DRAW_LINE );
|
||||
PR.DrawRectangle( CL1.GetAABB(), 0.0f, 1.0f, EE_DRAW_LINE );
|
||||
|
||||
PR.DrawQuad( CL1.GetQuad(), DRAW_LINE );
|
||||
PR.DrawQuad( CL1.GetQuad(), EE_DRAW_LINE );
|
||||
|
||||
Ang = Ang + EE->Elapsed() * 0.1f;
|
||||
if (Ang > 360.f) Ang = 1.f;
|
||||
@@ -766,14 +765,14 @@ void cEETest::Screen2() {
|
||||
else if (iL2)
|
||||
PR.SetColor( eeColorA(255, 255, 0, 255) );
|
||||
|
||||
PR.DrawCircle(Mousef.x, Mousef.y, 80.f, (Uint32)(Ang/3), DRAW_LINE);
|
||||
PR.DrawCircle(Mousef.x, Mousef.y, 80.f, (Uint32)(Ang/3), EE_DRAW_LINE);
|
||||
|
||||
PR.DrawTriangle( eeVector2f( Mousef.x, Mousef.y - 10.f ), eeVector2f( Mousef.x - 10.f, Mousef.y + 10.f ), eeVector2f( Mousef.x + 10.f, Mousef.y + 10.f ), DRAW_LINE );
|
||||
PR.DrawTriangle( eeVector2f( Mousef.x, Mousef.y - 10.f ), eeVector2f( Mousef.x - 10.f, Mousef.y + 10.f ), eeVector2f( Mousef.x + 10.f, Mousef.y + 10.f ), EE_DRAW_LINE );
|
||||
PR.DrawLine( eeVector2f(Mousef.x - 80.f, Mousef.y - 80.f), eeVector2f(Mousef.x + 80.f, Mousef.y + 80.f) );
|
||||
PR.DrawLine( eeVector2f(Mousef.x - 80.f, Mousef.y + 80.f), eeVector2f(Mousef.x + 80.f, Mousef.y - 80.f) );
|
||||
PR.DrawLine( eeVector2f((eeFloat)EE->GetWidth(), 0.f), eeVector2f( 0.f, (eeFloat)EE->GetHeight() ) );
|
||||
PR.DrawQuad( eeVector2f(0.f, 0.f), eeVector2f(0.f, 100.f), eeVector2f(150.f, 150.f), eeVector2f(200.f, 150.f), eeColorA(220, 240, 0, 125), eeColorA(100, 0, 240, 125), eeColorA(250, 50, 25, 125), eeColorA(50, 150, 150, 125) );
|
||||
PR.DrawRectangle(Mousef.x - 80.f, Mousef.y - 80.f, 160.f, 160.f, 45.f, 1.f, DRAW_LINE);
|
||||
PR.DrawRectangle(Mousef.x - 80.f, Mousef.y - 80.f, 160.f, 160.f, 45.f, 1.f, EE_DRAW_LINE);
|
||||
PR.DrawLine( eeVector2f(0.f, 0.f), eeVector2f( (eeFloat)EE->GetWidth(), (eeFloat)EE->GetHeight() ) );
|
||||
|
||||
TNP[3]->DrawQuadEx( eeQuad2f( eeVector2f(0.f, 0.f), eeVector2f(0.f, 100.f), eeVector2f(150.f, 150.f), eeVector2f(200.f, 150.f) ), 0.0f, 0.0f, ang, scale, eeColorA(220, 240, 0, 125), eeColorA(100, 0, 240, 125), eeColorA(250, 50, 25, 125), eeColorA(50, 150, 150, 125) );
|
||||
@@ -810,12 +809,12 @@ void cEETest::Render() {
|
||||
|
||||
if ( eeGetTicks() - lasttick >= 50 ) {
|
||||
lasttick = eeGetTicks();
|
||||
mInfo = StrFormated( "EE - FPS: %d Elapsed Time: %4.8f\nMouse X: %d Mouse Y: %d\nTexture Memory Size: %d",
|
||||
mInfo = StrFormated( "EE - FPS: %d Elapsed Time: %4.8f\nMouse X: %d Mouse Y: %d\nTexture Memory Size: %s",
|
||||
EE->FPS(),
|
||||
et,
|
||||
(Int32)Mouse.x,
|
||||
(Int32)Mouse.y,
|
||||
(Int32)TF->MemorySize()
|
||||
SizeToString( TF->MemorySize() ).c_str()
|
||||
);
|
||||
}
|
||||
|
||||
@@ -875,8 +874,7 @@ void cEETest::Render() {
|
||||
FF2->Draw( L"_", 6.f + FF2->GetTextWidth(), 24.f + (eeFloat)LineNum * (eeFloat)FF2->GetFontSize() );
|
||||
}
|
||||
|
||||
TTF->SetText( mBuda );
|
||||
TTF->Draw( 0.f, 50.f );
|
||||
mBudaTC->Draw( 0.f, 50.f );
|
||||
|
||||
cTexture * TexFace = TF->GetTexture( mFace );
|
||||
if ( TexFace )
|
||||
@@ -1157,6 +1155,7 @@ void cEETest::End() {
|
||||
eeSAFE_DELETE( mTGL );
|
||||
eeSAFE_DELETE( mFB );
|
||||
eeSAFE_DELETE( mVBO );
|
||||
eeSAFE_DELETE( mBudaTC );
|
||||
|
||||
cEngine::DestroySingleton();
|
||||
}
|
||||
|
||||
@@ -17,14 +17,14 @@ cUIBackground::cUIBackground( const cUIBackground& Back ) :
|
||||
mColor = b->Colors();
|
||||
}
|
||||
|
||||
cUIBackground::cUIBackground( const eeColorA& Color, const eeUint& Corners, const EE_RENDERALPHAS& BlendMode ) :
|
||||
cUIBackground::cUIBackground( const eeColorA& Color, const eeUint& Corners, const EE_PRE_BLEND_FUNC& BlendMode ) :
|
||||
mBlendMode( BlendMode ),
|
||||
mCorners( Corners )
|
||||
{
|
||||
mColor.push_back( Color );
|
||||
}
|
||||
|
||||
cUIBackground::cUIBackground( const eeColorA& TopLeftColor, const eeColorA& BottomLeftColor, const eeColorA& BottomRightColor, const eeColorA& TopRightColor, const eeUint& Corners, const EE_RENDERALPHAS& BlendMode ) :
|
||||
cUIBackground::cUIBackground( const eeColorA& TopLeftColor, const eeColorA& BottomLeftColor, const eeColorA& BottomRightColor, const eeColorA& TopRightColor, const eeUint& Corners, const EE_PRE_BLEND_FUNC& BlendMode ) :
|
||||
mBlendMode( BlendMode ),
|
||||
mCorners( Corners )
|
||||
{
|
||||
@@ -70,11 +70,11 @@ void cUIBackground::Color( const eeColorA& Col ) {
|
||||
mColor[0] = Col;
|
||||
}
|
||||
|
||||
const EE_RENDERALPHAS& cUIBackground::Blend() const {
|
||||
const EE_PRE_BLEND_FUNC& cUIBackground::Blend() const {
|
||||
return mBlendMode;
|
||||
}
|
||||
|
||||
void cUIBackground::Blend( const EE_RENDERALPHAS& blend ) {
|
||||
void cUIBackground::Blend( const EE_PRE_BLEND_FUNC& blend ) {
|
||||
mBlendMode = blend;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,9 +8,9 @@ namespace EE { namespace UI {
|
||||
class EE_API cUIBackground {
|
||||
public:
|
||||
cUIBackground();
|
||||
cUIBackground( const eeColorA& Color, const eeUint& Corners = 0, const EE_RENDERALPHAS& BlendMode = ALPHA_NORMAL );
|
||||
cUIBackground( const eeColorA& Color, const eeUint& Corners = 0, const EE_PRE_BLEND_FUNC& BlendMode = ALPHA_NORMAL );
|
||||
cUIBackground( const cUIBackground& Back );
|
||||
cUIBackground( const eeColorA& TopLeftColor, const eeColorA& BottomLeftColor, const eeColorA& BottomRightColor, const eeColorA& TopRightColor, const eeUint& Corners, const EE_RENDERALPHAS& BlendMode );
|
||||
cUIBackground( const eeColorA& TopLeftColor, const eeColorA& BottomLeftColor, const eeColorA& BottomRightColor, const eeColorA& TopRightColor, const eeUint& Corners, const EE_PRE_BLEND_FUNC& BlendMode );
|
||||
|
||||
eeColorA& Color( const eeUint& index = 0 );
|
||||
|
||||
@@ -22,15 +22,15 @@ class EE_API cUIBackground {
|
||||
|
||||
void ColorsTo( const eeColorA& Color );
|
||||
|
||||
const EE_RENDERALPHAS& Blend() const;
|
||||
void Blend( const EE_RENDERALPHAS& blend );
|
||||
const EE_PRE_BLEND_FUNC& Blend() const;
|
||||
void Blend( const EE_PRE_BLEND_FUNC& blend );
|
||||
|
||||
const eeUint& Corners() const;
|
||||
void Corners( const eeUint& corners );
|
||||
protected:
|
||||
std::vector<eeColorA> mColor;
|
||||
|
||||
EE_RENDERALPHAS mBlendMode;
|
||||
EE_PRE_BLEND_FUNC mBlendMode;
|
||||
eeUint mCorners;
|
||||
};
|
||||
|
||||
|
||||
@@ -353,11 +353,11 @@ void cUIControl::Flags( const Uint32& flags ) {
|
||||
mFlags |= flags;
|
||||
}
|
||||
|
||||
void cUIControl::Blend( const EE_RENDERALPHAS& blend ) {
|
||||
void cUIControl::Blend( const EE_PRE_BLEND_FUNC& blend ) {
|
||||
mBlend = blend;
|
||||
}
|
||||
|
||||
EE_RENDERALPHAS& cUIControl::Blend() {
|
||||
EE_PRE_BLEND_FUNC& cUIControl::Blend() {
|
||||
return mBlend;
|
||||
}
|
||||
|
||||
@@ -407,9 +407,9 @@ void cUIControl::BackgroundDraw() {
|
||||
P.SetColor( mBackground.Color() );
|
||||
|
||||
if ( 4 == mBackground.Colors().size() ) {
|
||||
P.DrawRectangle( (eeFloat)Pos.x, (eeFloat)Pos.y, (eeFloat)mSize.Width(), (eeFloat)mSize.Height(), mBackground.Colors()[0], mBackground.Colors()[1], mBackground.Colors()[2], mBackground.Colors()[3], 0.f, 1.f, DRAW_FILL, mBackground.Blend(), 1.0f, mBackground.Corners() );
|
||||
P.DrawRectangle( (eeFloat)Pos.x, (eeFloat)Pos.y, (eeFloat)mSize.Width(), (eeFloat)mSize.Height(), mBackground.Colors()[0], mBackground.Colors()[1], mBackground.Colors()[2], mBackground.Colors()[3], 0.f, 1.f, EE_DRAW_FILL, mBackground.Blend(), 1.0f, mBackground.Corners() );
|
||||
} else {
|
||||
P.DrawRectangle( (eeFloat)Pos.x, (eeFloat)Pos.y, (eeFloat)mSize.Width(), (eeFloat)mSize.Height(), 0.f, 1.f, DRAW_FILL, mBackground.Blend(), 1.0f, mBackground.Corners() );
|
||||
P.DrawRectangle( (eeFloat)Pos.x, (eeFloat)Pos.y, (eeFloat)mSize.Width(), (eeFloat)mSize.Height(), 0.f, 1.f, EE_DRAW_FILL, mBackground.Blend(), 1.0f, mBackground.Corners() );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -419,7 +419,11 @@ void cUIControl::BorderDraw() {
|
||||
|
||||
cPrimitives P;
|
||||
P.SetColor( mBorder.Color() );
|
||||
P.DrawRectangle( (eeFloat)Pos.x, (eeFloat)Pos.y, (eeFloat)mSize.Width(), (eeFloat)mSize.Height(), 0.f, 1.f, DRAW_LINE, mBlend, (eeFloat)mBorder.Width(), mBackground.Corners() );
|
||||
|
||||
if ( IsClipped() )
|
||||
P.DrawRectangle( (eeFloat)Pos.x + 0.1f, (eeFloat)Pos.y + 0.1f, (eeFloat)mSize.Width() - 0.1f, (eeFloat)mSize.Height() - 0.1f, 0.f, 1.f, EE_DRAW_LINE, mBlend, (eeFloat)mBorder.Width(), mBackground.Corners() );
|
||||
else
|
||||
P.DrawRectangle( (eeFloat)Pos.x, (eeFloat)Pos.y, (eeFloat)mSize.Width(), (eeFloat)mSize.Height(), 0.f, 1.f, EE_DRAW_LINE, mBlend, (eeFloat)mBorder.Width(), mBackground.Corners() );
|
||||
}
|
||||
|
||||
const Uint32& cUIControl::ControlFlags() const {
|
||||
@@ -491,8 +495,12 @@ void cUIControl::InternalDraw() {
|
||||
}
|
||||
|
||||
void cUIControl::ClipMe() {
|
||||
if ( IsClipped() )
|
||||
cUIManager::instance()->ClipEnable( mScreenPos.x, mScreenPos.y, mSize.Width(), mSize.Height() );
|
||||
if ( IsClipped() ) {
|
||||
if ( mFlags & UI_BORDER )
|
||||
cUIManager::instance()->ClipEnable( mScreenPos.x, mScreenPos.y, mSize.Width(), mSize.Height() + 1 );
|
||||
else
|
||||
cUIManager::instance()->ClipEnable( mScreenPos.x, mScreenPos.y, mSize.Width(), mSize.Height() );
|
||||
}
|
||||
}
|
||||
|
||||
void cUIControl::ClipDisable() {
|
||||
|
||||
@@ -25,7 +25,7 @@ class EE_API cUIControl {
|
||||
const eeVector2i& pos = eeVector2i( 0, 0 ),
|
||||
const eeSize& size = eeSize( -1, -1 ),
|
||||
const Uint32& flags = UI_HALIGN_LEFT | UI_VALIGN_CENTER,
|
||||
const EE_RENDERALPHAS& blend = ALPHA_NORMAL,
|
||||
const EE_PRE_BLEND_FUNC& blend = ALPHA_NORMAL,
|
||||
const cUIBackground& Back = cUIBackground(),
|
||||
const cUIBorder& Bord = cUIBorder()
|
||||
) :
|
||||
@@ -61,7 +61,7 @@ class EE_API cUIControl {
|
||||
Uint32 Flags;
|
||||
cUIBackground Background;
|
||||
cUIBorder Border;
|
||||
EE_RENDERALPHAS Blend;
|
||||
EE_PRE_BLEND_FUNC Blend;
|
||||
};
|
||||
|
||||
cUIControl( const CreateParams& Params );
|
||||
@@ -170,9 +170,9 @@ class EE_API cUIControl {
|
||||
|
||||
void Flags( const Uint32& flags );
|
||||
|
||||
void Blend( const EE_RENDERALPHAS& blend );
|
||||
void Blend( const EE_PRE_BLEND_FUNC& blend );
|
||||
|
||||
EE_RENDERALPHAS& Blend();
|
||||
EE_PRE_BLEND_FUNC& Blend();
|
||||
|
||||
void ToFront();
|
||||
|
||||
@@ -217,7 +217,7 @@ class EE_API cUIControl {
|
||||
cUIBorder mBorder;
|
||||
|
||||
Uint32 mControlFlags;
|
||||
EE_RENDERALPHAS mBlend;
|
||||
EE_PRE_BLEND_FUNC mBlend;
|
||||
|
||||
eeQuad2f mQuad;
|
||||
eeVector2f mCenter;
|
||||
|
||||
@@ -206,9 +206,9 @@ void cUIControlAnim::BackgroundDraw() {
|
||||
P.SetColor( GetColor( mBackground.Color() ) );
|
||||
|
||||
if ( 4 == mBackground.Colors().size() ) {
|
||||
P.DrawRectangle( (eeFloat)Pos.x, (eeFloat)Pos.y, (eeFloat)mSize.Width(), (eeFloat)mSize.Height(), GetColor( mBackground.Colors()[0] ), GetColor( mBackground.Colors()[1] ), GetColor( mBackground.Colors()[2] ), GetColor( mBackground.Colors()[3] ), 0.f, 1.f, DRAW_FILL, mBackground.Blend(), 1.0f, mBackground.Corners() );
|
||||
P.DrawRectangle( (eeFloat)Pos.x, (eeFloat)Pos.y, (eeFloat)mSize.Width(), (eeFloat)mSize.Height(), GetColor( mBackground.Colors()[0] ), GetColor( mBackground.Colors()[1] ), GetColor( mBackground.Colors()[2] ), GetColor( mBackground.Colors()[3] ), 0.f, 1.f, EE_DRAW_FILL, mBackground.Blend(), 1.0f, mBackground.Corners() );
|
||||
} else {
|
||||
P.DrawRectangle( (eeFloat)Pos.x, (eeFloat)Pos.y, (eeFloat)mSize.Width(), (eeFloat)mSize.Height(), 0.f, 1.f, DRAW_FILL, mBackground.Blend(), 1.0f, mBackground.Corners() );
|
||||
P.DrawRectangle( (eeFloat)Pos.x, (eeFloat)Pos.y, (eeFloat)mSize.Width(), (eeFloat)mSize.Height(), 0.f, 1.f, EE_DRAW_FILL, mBackground.Blend(), 1.0f, mBackground.Corners() );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -218,7 +218,11 @@ void cUIControlAnim::BorderDraw() {
|
||||
|
||||
cPrimitives P;
|
||||
P.SetColor( GetColor( mBorder.Color() ) );
|
||||
P.DrawRectangle( (eeFloat)Pos.x, (eeFloat)Pos.y, (eeFloat)mSize.Width(), (eeFloat)mSize.Height(), 0.f, 1.f, DRAW_LINE, mBlend, (eeFloat)mBorder.Width(), mBackground.Corners() );
|
||||
|
||||
if ( IsClipped() )
|
||||
P.DrawRectangle( (eeFloat)Pos.x + 0.1f, (eeFloat)Pos.y + 0.1f, (eeFloat)mSize.Width() - 0.1f, (eeFloat)mSize.Height() - 0.1f, 0.f, 1.f, EE_DRAW_LINE, mBlend, (eeFloat)mBorder.Width(), mBackground.Corners() );
|
||||
else
|
||||
P.DrawRectangle( (eeFloat)Pos.x, (eeFloat)Pos.y, (eeFloat)mSize.Width(), (eeFloat)mSize.Height(), 0.f, 1.f, EE_DRAW_LINE, mBlend, (eeFloat)mBorder.Width(), mBackground.Corners() );
|
||||
}
|
||||
|
||||
eeColorA cUIControlAnim::GetColor( const eeColorA& Col ) {
|
||||
|
||||
@@ -84,8 +84,9 @@ void cUITextBox::Alpha( const eeFloat& alpha ) {
|
||||
}
|
||||
|
||||
void cUITextBox::AutoShrink() {
|
||||
if ( Flags() & UI_AUTO_SHRINK_TEXT )
|
||||
if ( Flags() & UI_AUTO_SHRINK_TEXT ) {
|
||||
mTextCache.Font()->ShrinkText( mTextCache.Text(), mSize.Width() );
|
||||
}
|
||||
}
|
||||
|
||||
void cUITextBox::AutoSize() {
|
||||
@@ -127,6 +128,8 @@ void cUITextBox::OnSizeChange() {
|
||||
AutoAlign();
|
||||
|
||||
cUIControlAnim::OnSizeChange();
|
||||
|
||||
mTextCache.Cache();
|
||||
}
|
||||
|
||||
void cUITextBox::OnTextChanged() {
|
||||
|
||||
@@ -455,4 +455,26 @@ std::string SizeToString( const Uint32& MemSize ) {
|
||||
return std::string( toStr( mem ) + size );
|
||||
}
|
||||
|
||||
std::wstring SizeToWString( const Uint32& MemSize ) {
|
||||
std::wstring size = L" bytes";
|
||||
eeDouble mem = static_cast<eeDouble>( MemSize );
|
||||
Uint8 c = 0;
|
||||
|
||||
while ( mem > 1024 ) {
|
||||
c++;
|
||||
mem = mem / 1024;
|
||||
}
|
||||
|
||||
switch (c) {
|
||||
case 0: size = L" bytes"; break;
|
||||
case 1: size = L" KB"; break;
|
||||
case 2: size = L" MB"; break;
|
||||
case 3: size = L" GB"; break;
|
||||
case 4: size = L" TB"; break;
|
||||
default: size = L" WTF";
|
||||
}
|
||||
|
||||
return std::wstring( toWStr( mem ) + size );
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
@@ -97,6 +97,11 @@ namespace EE { namespace Utils {
|
||||
* @example 10485760 -> "10.0 MB"
|
||||
*/
|
||||
std::string SizeToString( const Uint32& MemSize );
|
||||
|
||||
/** Convert a size represented in bytes, to a wstring converted in byes/kb/mb/tb.
|
||||
* @example 10485760 -> "10.0 MB"
|
||||
*/
|
||||
std::wstring SizeToWString( const Uint32& MemSize );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,8 +8,10 @@
|
||||
#include "../graphics/cshapegroupmanager.hpp"
|
||||
#include "../ui/cuimanager.hpp"
|
||||
#include "../audio/caudiolistener.hpp"
|
||||
#include "../graphics/glhelper.hpp"
|
||||
|
||||
using namespace EE::Graphics;
|
||||
using namespace EE::Graphics::Private;
|
||||
|
||||
#define T(A, B, C, D) (int)((A<<24)|(B<<16)|(C<<8)|(D<<0))
|
||||
#define FORMAT_PREFIX "SDL_scrap_0x"
|
||||
@@ -105,6 +107,8 @@ cEngine::~cEngine() {
|
||||
|
||||
Audio::cAudioListener::DestroySingleton();
|
||||
|
||||
Graphics::Private::cGL::DestroySingleton();
|
||||
|
||||
cLog::DestroySingleton();
|
||||
|
||||
SDL_Quit();
|
||||
@@ -123,7 +127,6 @@ bool cEngine::Init(const Uint32& Width, const Uint32& Height, const Uint8& BitCo
|
||||
mVideoInfo.VSync = VSync;
|
||||
mVideoInfo.NoFrame = NoFrame;
|
||||
mVideoInfo.LineSmooth = true;
|
||||
mVideoInfo.SupShaders = false;
|
||||
mOldWinPos = eeVector2i( 0, 0 );
|
||||
|
||||
if ( SDL_Init(SDL_INIT_VIDEO) != 0 ) {
|
||||
@@ -209,14 +212,7 @@ bool cEngine::Init(const Uint32& Width, const Uint32& Height, const Uint8& BitCo
|
||||
if ( mVideoInfo.Windowed )
|
||||
mOldWinPos = GetWindowPosition();
|
||||
|
||||
mGLEWinit = glewInit();
|
||||
|
||||
if ( GLEW_OK == mGLEWinit ) {
|
||||
mVideoInfo.SupARB_point = GLEW_ARB_point_parameters && GLEW_ARB_point_sprite;
|
||||
mVideoInfo.SupShaders = GLEW_ARB_shading_language_100 && GLEW_ARB_shader_objects && GLEW_ARB_vertex_shader && GLEW_ARB_fragment_shader;
|
||||
} else {
|
||||
// die
|
||||
}
|
||||
cGL::instance()->Init();
|
||||
|
||||
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT );
|
||||
|
||||
@@ -225,7 +221,7 @@ bool cEngine::Init(const Uint32& Width, const Uint32& Height, const Uint8& BitCo
|
||||
mDefaultView.SetView( 0, 0, mVideoInfo.Width, mVideoInfo.Height );
|
||||
mCurrentView = &mDefaultView;
|
||||
|
||||
ResetGL2D();
|
||||
Setup2D();
|
||||
|
||||
SetWindowCaption("EEPP");
|
||||
|
||||
@@ -264,7 +260,7 @@ const cView& cEngine::GetView() const {
|
||||
return *mCurrentView;
|
||||
}
|
||||
|
||||
void cEngine::ResetGL2D( const bool& KeepView ) {
|
||||
void cEngine::Setup2D( const bool& KeepView ) {
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||
glPixelStorei(GL_PACK_ALIGNMENT, 1);
|
||||
|
||||
@@ -281,8 +277,8 @@ void cEngine::ResetGL2D( const bool& KeepView ) {
|
||||
glDisable( GL_DEPTH_TEST );
|
||||
glDisable( GL_LIGHTING );
|
||||
|
||||
cTextureFactory::instance()->SetBlendFunc( ALPHA_BLENDONE ); // This is to fix a little bug on windows when the resolution change. I don't know why it happens, but this line fix it.
|
||||
cTextureFactory::instance()->SetBlendFunc( ALPHA_NORMAL );
|
||||
cTextureFactory::instance()->SetPreBlendFunc( ALPHA_BLENDONE ); // This is to fix a little bug on windows when the resolution change. I don't know why it happens, but this line fix it.
|
||||
cTextureFactory::instance()->SetPreBlendFunc( ALPHA_NORMAL );
|
||||
|
||||
glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
|
||||
|
||||
@@ -371,7 +367,7 @@ void cEngine::ChangeRes( const Uint16& width, const Uint16& height, const bool&
|
||||
else
|
||||
mVideoInfo.Screen = SDL_SetVideoMode( mVideoInfo.Width, mVideoInfo.Height, mVideoInfo.ColorDepth, mVideoInfo.Flags | SDL_FULLSCREEN );
|
||||
|
||||
ResetGL2D();
|
||||
Setup2D();
|
||||
|
||||
#if EE_PLATFORM == EE_PLATFORM_WIN32 || EE_PLATFORM == EE_PLATFORM_MACOSX
|
||||
if ( Reload ) {
|
||||
@@ -510,6 +506,10 @@ std::vector< std::pair<unsigned int, unsigned int> > cEngine::GetPossibleResolut
|
||||
return result;
|
||||
}
|
||||
|
||||
bool cEngine::ShadersSupported() const {
|
||||
return cGL::instance()->ShadersSupported();
|
||||
}
|
||||
|
||||
void cEngine::SetGamma( const eeFloat& Red, const eeFloat& Green, const eeFloat& Blue ) {
|
||||
if ( Red >= 0.1f && Red <= 10.0f && Green >= 0.1f && Green <= 10.0f && Blue >= 0.1f && Blue <= 10.0f )
|
||||
SDL_SetGamma( Red, Green, Blue );
|
||||
@@ -523,8 +523,8 @@ void cEngine::SetLineSmooth( const bool& Enable ) {
|
||||
glDisable( GL_LINE_SMOOTH );
|
||||
}
|
||||
|
||||
void cEngine::SetPolygonMode( const EE_FILLMODE& Mode ) {
|
||||
if ( Mode == DRAW_FILL )
|
||||
void cEngine::SetPolygonMode( const EE_FILL_MODE& Mode ) {
|
||||
if ( Mode == EE_DRAW_FILL )
|
||||
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
|
||||
else
|
||||
glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
|
||||
@@ -552,7 +552,7 @@ std::string cEngine::GetVersion() {
|
||||
}
|
||||
|
||||
bool cEngine::GetExtension( const std::string& Ext ) {
|
||||
return 0 != glewIsSupported( Ext.c_str() );
|
||||
return 0 != cGL::instance()->GetExtension( Ext.c_str() );
|
||||
}
|
||||
|
||||
SDL_Cursor* cEngine::CreateCursor( const Uint32& TexId, const eeVector2i& HotSpot ) {
|
||||
|
||||
@@ -112,7 +112,7 @@ class EE_API cEngine : public tSingleton<cEngine> {
|
||||
void SetLineSmooth( const bool& Enable );
|
||||
|
||||
/** Set the polygon fill mode ( wireframe or filled ) */
|
||||
void SetPolygonMode( const EE_FILLMODE& Mode );
|
||||
void SetPolygonMode( const EE_FILL_MODE& Mode );
|
||||
|
||||
/** @return If the screen is windowed */
|
||||
bool Windowed() const;
|
||||
@@ -120,11 +120,8 @@ class EE_API cEngine : public tSingleton<cEngine> {
|
||||
/** @return If the extension passed is supported by the GPU */
|
||||
bool GetExtension( const std::string& Ext );
|
||||
|
||||
/** @return If "GL_ARB_point_parameters" is supported (added for Particle System, faster way to get this. */
|
||||
bool PointSpriteSuppported() const { return mVideoInfo.SupARB_point; };
|
||||
|
||||
/** @return True if shaders are supported by the GPU */
|
||||
bool ShadersSupported() const { return mVideoInfo.SupShaders; }
|
||||
bool ShadersSupported() const;
|
||||
|
||||
/** Set a Cursor from a Texture (B/W Cursor) */
|
||||
void SetCursor( const Uint32& TexId, const eeVector2i& HotSpot = eeVector2i() );
|
||||
@@ -170,9 +167,7 @@ class EE_API cEngine : public tSingleton<cEngine> {
|
||||
bool Windowed;
|
||||
bool DoubleBuffering;
|
||||
bool VSync;
|
||||
bool SupARB_point;
|
||||
bool LineSmooth;
|
||||
bool SupShaders;
|
||||
|
||||
Int32 WWidth;
|
||||
Int32 WHeight;
|
||||
@@ -205,7 +200,7 @@ class EE_API cEngine : public tSingleton<cEngine> {
|
||||
bool WindowVisible();
|
||||
|
||||
/** This will set the default rendering states and view to render in 2D mode */
|
||||
void ResetGL2D( const bool& KeepView = false );
|
||||
void Setup2D( const bool& KeepView = false );
|
||||
|
||||
/** Set the current active view
|
||||
@param View New view to use (pass GetDefaultView() to set the default view)
|
||||
@@ -275,8 +270,6 @@ class EE_API cEngine : public tSingleton<cEngine> {
|
||||
cView mDefaultView;
|
||||
const cView * mCurrentView;
|
||||
|
||||
GLenum mGLEWinit;
|
||||
|
||||
#if EE_PLATFORM == EE_PLATFORM_WIN32
|
||||
HGLRC mContext;
|
||||
#elif EE_PLATFORM == EE_PLATFORM_LINUX
|
||||
|
||||
Reference in New Issue
Block a user