From: Oliver O. <fr...@us...> - 2007-06-17 10:56:32
|
Update of /cvsroot/simspark/simspark/spark/kerosin/materialserver In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv30941 Modified Files: Tag: projectx material2dtexture.cpp Log Message: - added methods to access names of the different textures used Index: material2dtexture.cpp =================================================================== RCS file: /cvsroot/simspark/simspark/spark/kerosin/materialserver/material2dtexture.cpp,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.2.2.1 diff -C2 -d -r1.1.2.2 -r1.1.2.2.2.1 *** material2dtexture.cpp 23 Feb 2007 19:21:09 -0000 1.1.2.2 --- material2dtexture.cpp 17 Jun 2007 10:56:28 -0000 1.1.2.2.2.1 *************** *** 33,37 **** using namespace std; ! Material2DTexture::Material2DTexture() : MaterialSolid() { } --- 33,38 ---- using namespace std; ! Material2DTexture::Material2DTexture() : MaterialSolid(), ! mTexDiffuseName(""), mTexNormalName(""), mTexSpecularName("") { } *************** *** 41,45 **** } ! bool Material2DTexture::LoadTexture(const std::string& texName, shared_ptr<Texture>& store) { shared_ptr<ScriptServer> scriptServer = GetCore()->GetScriptServer(); --- 42,47 ---- } ! bool ! Material2DTexture::LoadTexture(const std::string& texName, shared_ptr<Texture>& store) { shared_ptr<ScriptServer> scriptServer = GetCore()->GetScriptServer(); *************** *** 50,58 **** if (textureServer.get() == 0) ! { ! GetLog()->Error() ! << "(Material2DTexture) ERROR: cannot find TextureServer\n"; ! return false; ! } store = textureServer->GetTexture(texName); --- 52,60 ---- if (textureServer.get() == 0) ! { ! GetLog()->Error() ! << "(Material2DTexture) ERROR: cannot find TextureServer\n"; ! return false; ! } store = textureServer->GetTexture(texName); *************** *** 60,101 **** } ! bool Material2DTexture::SetDiffuseTexture(const std::string& texName) { return LoadTexture(texName,mTexDiffuse); } ! bool Material2DTexture::SetNormalTexture(const std::string& texName) { return LoadTexture(texName,mTexNormal); } ! bool Material2DTexture::SetSpecularTexture(const std::string& texName) { return LoadTexture(texName,mTexSpecular); } ! void Material2DTexture::Bind() { SetupMaterial(); if (mTexDiffuse.get() != 0) { OpenGLServer::glActiveTextureARB(GL_TEXTURE0_ARB); glEnable(GL_TEXTURE_2D); - mTexDiffuse->Bind(); } if (mTexNormal.get() != 0) { OpenGLServer::glActiveTextureARB(GL_TEXTURE1_ARB); glEnable(GL_TEXTURE_2D); - mTexNormal->Bind(); } if (mTexSpecular.get() != 0) { OpenGLServer::glActiveTextureARB(GL_TEXTURE2_ARB); glEnable(GL_TEXTURE_2D); - mTexSpecular->Bind(); } } --- 62,160 ---- } ! bool ! Material2DTexture::SetDiffuseTexture(const std::string& texName) { + mTexDiffuseName = texName; return LoadTexture(texName,mTexDiffuse); } ! const std::string& ! Material2DTexture::GetDiffuseTextureName() const ! { ! return mTexDiffuseName; ! } ! ! bool ! Material2DTexture::HasDiffuseTexture() const ! { ! return (!mTexDiffuseName.empty() && mTexDiffuse.get() != 0); ! } ! ! bool ! Material2DTexture::SetNormalTexture(const std::string& texName) { + mTexNormalName = texName; return LoadTexture(texName,mTexNormal); } ! const std::string& ! Material2DTexture::GetNormalTextureName() const { + return mTexNormalName; + } + + bool + Material2DTexture::HasNormalTexture() const + { + return (!mTexNormalName.empty() && mTexNormal.get() != 0); + } + + bool + Material2DTexture::SetSpecularTexture(const std::string& texName) + { + mTexSpecularName = texName; return LoadTexture(texName,mTexSpecular); } ! const std::string& ! Material2DTexture::GetSpecularTextureName() const { + return mTexSpecularName; + } + + bool + Material2DTexture::HasSpecularTexture() const + { + return (!mTexSpecularName.empty() && mTexSpecular.get() != 0); + } + + void + Material2DTexture::Bind() + { + shared_ptr<OpenGLServer> openGLServer = + shared_dynamic_cast<OpenGLServer>(GetCore()->Get("/sys/server/opengl")); + + bool use_gl = ((openGLServer.get() != 0) && (!openGLServer->IsGLLocked())); + SetupMaterial(); if (mTexDiffuse.get() != 0) + { + if (use_gl) { OpenGLServer::glActiveTextureARB(GL_TEXTURE0_ARB); glEnable(GL_TEXTURE_2D); } + mTexDiffuse->Bind(); + } if (mTexNormal.get() != 0) + { + if (use_gl) { OpenGLServer::glActiveTextureARB(GL_TEXTURE1_ARB); glEnable(GL_TEXTURE_2D); } + mTexNormal->Bind(); + } if (mTexSpecular.get() != 0) + { + if (use_gl) { OpenGLServer::glActiveTextureARB(GL_TEXTURE2_ARB); glEnable(GL_TEXTURE_2D); } + mTexSpecular->Bind(); + } } |