Add support for point_size_array. We use normal.X for storing the thickness, as long as we don't have a flexible vertex format.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@2387 dfc29bdd-3216-0410-991c-e03cc46cb475
master
hybrid 2009-05-11 09:28:22 +00:00
parent a296a13e19
commit ef3f4ed54c
2 changed files with 17 additions and 1 deletions

View File

@ -846,6 +846,10 @@ void COGLES1Driver::drawVertexPrimitiveList2d3d(const void* vertices, u32 vertex
glEnableClientState(GL_VERTEX_ARRAY);
if ((pType!=scene::EPT_POINTS) && (pType!=scene::EPT_POINT_SPRITES))
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
#ifdef GL_OES_point_size_array
else if (FeatureAvailable[IRR_OES_point_size_array] && (Material.Thickness==0.0f))
glEnableClientState(GL_POINT_SIZE_ARRAY_OES);
#endif
if (threed && (pType!=scene::EPT_POINTS) && (pType!=scene::EPT_POINT_SPRITES))
glEnableClientState(GL_NORMAL_ARRAY);
@ -857,6 +861,14 @@ void COGLES1Driver::drawVertexPrimitiveList2d3d(const void* vertices, u32 vertex
case EVT_STANDARD:
if (vertices)
{
#ifdef GL_OES_point_size_array
if ((pType==scene::EPT_POINTS) || (pType==scene::EPT_POINT_SPRITES))
{
if (FeatureAvailable[IRR_OES_point_size_array] && (Material.Thickness==0.0f))
glPointSizePointerOES(GL_FLOAT, sizeof(S3DVertex), &(static_cast<const S3DVertex*>(vertices))[0].Normal.X);
}
else
#endif
if (threed)
glNormalPointer(GL_FLOAT, sizeof(S3DVertex), &(static_cast<const S3DVertex*>(vertices))[0].Normal);
glTexCoordPointer(2, GL_FLOAT, sizeof(S3DVertex), &(static_cast<const S3DVertex*>(vertices))[0].TCoords);
@ -1044,6 +1056,10 @@ void COGLES1Driver::drawVertexPrimitiveList2d3d(const void* vertices, u32 vertex
}
extGlClientActiveTexture(GL_TEXTURE0);
}
#ifdef GL_OES_point_size_array
if (FeatureAvailable[IRR_OES_point_size_array] && (Material.Thickness==0.0f))
glDisableClientState(GL_POINT_SIZE_ARRAY_OES);
#endif
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);

View File

@ -259,7 +259,7 @@ public:
virtual void OnUnsetMaterial()
{
// default values
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_MODULATE );
glTexEnvf(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_TEXTURE );
glTexEnvf(GL_TEXTURE_ENV, GL_SRC1_ALPHA, GL_PREVIOUS );