glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); ( if my understanding of this is correct it tells textures to be processed per vertex rather then over the spread of the texture) so I added this line of code sadly it made no difference. Now I have backtracked through some tutorial I originally read to double check my code. I believe all my declarations are correct so I think I might be doing something in the wrong order??
heres some code of my code
startup function
bool MainWnd::InitGL()
{
//Set clear color
//glClearColor( 0, 0, 0, 0 );
glClearColor( 0.0f, 0.0f, 0.0f, 1.0f );
//Set projection
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective( 45.0, (double)Initialize::SCREEN_WIDTH / (double)Initialize::SCREEN_HEIGHT, 1.0, 200.0 );
glViewport( 0, 0, Initialize::SCREEN_WIDTH, Initialize::SCREEN_HEIGHT );
SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
glEnable( GL_BLEND );
glBlendFunc( GL_ONE, GL_ONE_MINUS_SRC_ALPHA );
//lighting and shading
glEnable( GL_LIGHTING );
glEnable( GL_LIGHT0 );
glEnable( GL_LIGHT1 );
glShadeModel( GL_SMOOTH );
glEnable( GL_COLOR_MATERIAL );
glEnable( GL_DEPTH_TEST );
glEnable( GL_NORMALIZE );
//Initialize modelview matrix
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
//If there was any errors
if( glGetError() != GL_NO_ERROR )
{
ErrorSystem::instance().WriteError( "MainWnd GL load Fail" );
return false;
}
//If everything initialized
return true;
}
Lighting setup
void LogicEngine::DoDrawing()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glLoadIdentity();
_Camera->Render();
//Add ambient light
GLfloat ambientColor[] = {1.0f, 1.0f, 1.0f, 1.0f}; //Color (0.2, 0.2, 0.2)
glLightModelfv( GL_LIGHT_MODEL_AMBIENT, ambientColor );
//Add positioned light
GLfloat lightColor0[] = {0.5f, 0.5f, 0.5f, 0.0f};
GLfloat lightPos0[] = {4.0f, 0.0f, 8.0f, 1.0f};
glLightfv( GL_LIGHT0, GL_DIFFUSE, lightColor0 );
glLightfv( GL_LIGHT0, GL_POSITION, lightPos0 );
//Add directed light
GLfloat lightColor1[] = {0.5f, 0.2f, 0.2f, 10.0f};
GLfloat lightPos1[] = {-1.0f, 0.5f, 0.5f, 1.0f};
glLightfv( GL_LIGHT1, GL_DIFFUSE, lightColor1 );
glLightfv( GL_LIGHT1, GL_POSITION, lightPos1 );
DrawBoxes();
//DrawTerrain();
SDL_GL_SwapBuffers();
}
DrawBox
void LogicEngine::DrawBoxes()
{
glPushMatrix();
glTranslatef(0.0f, 1.5f, -8.0f);
glRotatef(_Angle, 0.0f, 1.0f, 0.0f);
glColor4ub( 255,255,255,255 );
glEnable( GL_TEXTURE_2D );
glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
glBindTexture(GL_TEXTURE_2D, _pFace1->GetTexture());
float x = 0;
float y = 0;
glBegin(GL_QUADS);
//Front
x = GetClippingPercentage( 0, _pFace1->_TextureDimentions.width );
y = GetClippingPercentage( 0, _pFace1->_TextureDimentions.height );
//TL
glNormal3f(-1.0f, 0.0f, 1.0f);
glTexCoord2f( x, y );
glVertex3f(-1.5f, -1.0f, 1.5f);
x = GetClippingPercentage( _pFace1->_SpriteDimentions.width, _pFace1->_TextureDimentions.width );
y = GetClippingPercentage( 0, _pFace1->_TextureDimentions.height );
//TR
glNormal3f(1.0f, 0.0f, 1.0f);
glTexCoord2f( x, y );
glVertex3f(1.5f, -1.0f, 1.5f);
x = GetClippingPercentage( _pFace1->_SpriteDimentions.width, _pFace1->_TextureDimentions.width );
y = GetClippingPercentage( _pFace1->_SpriteDimentions.height, _pFace1->_TextureDimentions.height );
//BR
glNormal3f(1.0f, 0.0f, 1.0f);
glTexCoord2f( x, y );
glVertex3f(1.5f, 1.0f, 1.5f);
x = GetClippingPercentage( 0, _pFace1->_TextureDimentions.width );
y = GetClippingPercentage( _pFace1->_SpriteDimentions.height, _pFace1->_TextureDimentions.height );
//BL
glNormal3f(-1.0f, 0.0f, 1.0f);
glTexCoord2f( x, y );
glVertex3f(-1.5f, 1.0f, 1.5f);
glEnd();
//removed code for second box
glPopMatrix();
}
Here an image of the output
Thanks in advanced