#include "..\..\include\TextureMapping\OAGCubeMultiMapping.h"
oag::OAGCubeMultiMapping::OAGCubeMultiMapping(void)
:oag::OAGCubeMapping(0, 0, 0)
{
}
oag::OAGCubeMultiMapping::OAGCubeMultiMapping(float nWidth, float nHeight, float nDepth)
:oag::OAGCubeMapping(nWidth, nHeight, nDepth)
{
}
oag::OAGCubeMultiMapping::~OAGCubeMultiMapping(void)
{
}
//Operations
//virtual
void oag::OAGCubeMultiMapping::OnDraw()
{
if ( m_listTextureObjects.size() < 2 )
{
oag::OAGCubeMapping::OnDraw();
}
else
{
oag::OAGTextureMappingObjects* textObj = m_listTextureObjects[0];
oag::OAGTextureMappingObjects* textObj1 = m_listTextureObjects[1];
if ( __GLEW_ARB_multitexture )//if ( m_pExtManagement != NULL && m_pExtManagement->IsSupported_GL_ARB_multitexture() )
{
BindListTexture();
::glPushMatrix();
::glColor4ubv( m_Color.GetColor4ubv() );
::glPolygonMode(m_PolygonFace, m_PolygonMode);
::glTranslated( m_position.m_X, m_position.m_Y, m_position.m_Z);
::glScalef( m_scale.m_X, m_scale.m_Y, m_scale.m_Z);
::glRotatef( m_rotation.m_X, 1.0, 0, 0);
::glRotatef( m_rotation.m_Y, 0, 1.0, 0);
::glRotatef( m_rotation.m_Z, 0, 0, 1.0);
glBegin(GL_QUADS);
//Front Face
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[0], textObj->m_nTextureCoordinates[1] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[0], textObj1->m_nTextureCoordinates[1] );
glVertex3d(m_CubeVertices[0].m_X, m_CubeVertices[0].m_Y, m_CubeVertices[0].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[6], textObj->m_nTextureCoordinates[7] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[6], textObj1->m_nTextureCoordinates[7] );
glVertex3d(m_CubeVertices[1].m_X, m_CubeVertices[1].m_Y, m_CubeVertices[1].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[4], textObj->m_nTextureCoordinates[5] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[4], textObj1->m_nTextureCoordinates[5] );
glVertex3d(m_CubeVertices[2].m_X, m_CubeVertices[2].m_Y, m_CubeVertices[2].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[2], textObj->m_nTextureCoordinates[3] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[2], textObj1->m_nTextureCoordinates[3] );
glVertex3d(m_CubeVertices[3].m_X, m_CubeVertices[3].m_Y, m_CubeVertices[3].m_Z );
//Back Face
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[6], textObj->m_nTextureCoordinates[7] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[6], textObj1->m_nTextureCoordinates[7] );
glVertex3d(m_CubeVertices[4].m_X, m_CubeVertices[4].m_Y, m_CubeVertices[4].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[4], textObj->m_nTextureCoordinates[5] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[4], textObj1->m_nTextureCoordinates[5] );
glVertex3d(m_CubeVertices[5].m_X, m_CubeVertices[5].m_Y, m_CubeVertices[5].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[2], textObj->m_nTextureCoordinates[3] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[2], textObj1->m_nTextureCoordinates[3] );
glVertex3d(m_CubeVertices[6].m_X, m_CubeVertices[6].m_Y, m_CubeVertices[6].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[0], textObj->m_nTextureCoordinates[1] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[0], textObj1->m_nTextureCoordinates[1] );
glVertex3d(m_CubeVertices[7].m_X, m_CubeVertices[7].m_Y, m_CubeVertices[7].m_Z );
//Right Face
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[0], textObj->m_nTextureCoordinates[1] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[0], textObj1->m_nTextureCoordinates[1] );
glVertex3d(m_CubeVertices[8].m_X, m_CubeVertices[8].m_Y, m_CubeVertices[8].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[6], textObj->m_nTextureCoordinates[7] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[6], textObj1->m_nTextureCoordinates[7] );
glVertex3d(m_CubeVertices[9].m_X, m_CubeVertices[9].m_Y, m_CubeVertices[9].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[4], textObj->m_nTextureCoordinates[5] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[4], textObj1->m_nTextureCoordinates[5] );
glVertex3d(m_CubeVertices[10].m_X, m_CubeVertices[10].m_Y, m_CubeVertices[10].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[2], textObj->m_nTextureCoordinates[3] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[2], textObj1->m_nTextureCoordinates[3] );
glVertex3d(m_CubeVertices[11].m_X, m_CubeVertices[11].m_Y, m_CubeVertices[11].m_Z );
//Left Face
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[6], textObj->m_nTextureCoordinates[7] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[6], textObj1->m_nTextureCoordinates[7] );
glVertex3d(m_CubeVertices[12].m_X, m_CubeVertices[12].m_Y, m_CubeVertices[12].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[4], textObj->m_nTextureCoordinates[5] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[4], textObj1->m_nTextureCoordinates[5] );
glVertex3d(m_CubeVertices[13].m_X, m_CubeVertices[13].m_Y, m_CubeVertices[13].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[2], textObj->m_nTextureCoordinates[3] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[2], textObj1->m_nTextureCoordinates[3] );
glVertex3d(m_CubeVertices[14].m_X, m_CubeVertices[14].m_Y, m_CubeVertices[14].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[0], textObj->m_nTextureCoordinates[1] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[0], textObj1->m_nTextureCoordinates[1] );
glVertex3d(m_CubeVertices[15].m_X, m_CubeVertices[15].m_Y, m_CubeVertices[15].m_Z );
//Bottom Face
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[6], textObj->m_nTextureCoordinates[7] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[6], textObj1->m_nTextureCoordinates[7] );
glVertex3d(m_CubeVertices[16].m_X, m_CubeVertices[16].m_Y, m_CubeVertices[16].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[4], textObj->m_nTextureCoordinates[5] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[4], textObj1->m_nTextureCoordinates[5] );
glVertex3d(m_CubeVertices[17].m_X, m_CubeVertices[17].m_Y, m_CubeVertices[17].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[2], textObj->m_nTextureCoordinates[3] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[2], textObj1->m_nTextureCoordinates[3] );
glVertex3d(m_CubeVertices[18].m_X, m_CubeVertices[18].m_Y, m_CubeVertices[18].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[0], textObj->m_nTextureCoordinates[1] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[0], textObj1->m_nTextureCoordinates[1] );
glVertex3d(m_CubeVertices[19].m_X, m_CubeVertices[19].m_Y, m_CubeVertices[19].m_Z );
//Top
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[2], textObj->m_nTextureCoordinates[3] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[2], textObj1->m_nTextureCoordinates[3] );
glVertex3d(m_CubeVertices[20].m_X, m_CubeVertices[20].m_Y, m_CubeVertices[20].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[4], textObj->m_nTextureCoordinates[5] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[4], textObj1->m_nTextureCoordinates[5] );
glVertex3d(m_CubeVertices[21].m_X, m_CubeVertices[21].m_Y, m_CubeVertices[21].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[6], textObj->m_nTextureCoordinates[7] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[6], textObj1->m_nTextureCoordinates[7] );
glVertex3d(m_CubeVertices[22].m_X, m_CubeVertices[22].m_Y, m_CubeVertices[22].m_Z );
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, textObj->m_nTextureCoordinates[0], textObj->m_nTextureCoordinates[1] );
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, textObj1->m_nTextureCoordinates[0], textObj1->m_nTextureCoordinates[1] );
glVertex3d(m_CubeVertices[23].m_X, m_CubeVertices[23].m_Y, m_CubeVertices[23].m_Z );
glEnd();
glDisable(GL_TEXTURE_2D);
__glewActiveTextureARB(GL_TEXTURE0_ARB);
::glPopMatrix();
}
}
}
void oag::OAGCubeMultiMapping::ReadNodeXML(CXmlNode *pNode)
{
oag::OAGCubeMapping::ReadNodeXML(pNode);
this->CreateCube();
}
void oag::OAGCubeMultiMapping::SaveNodeXML(CXmlNode *pNode)
{
oag::OAGCubeMapping::SaveNodeXML(pNode);
}