bool GLCgShader::SetTexture(const str_type::string& name, TextureWeakPtr pTexture) { if (m_focus != Shader::SF_PIXEL) { ShowMessage("Shader::SetTexture - textures can't be set as vertex shader parameter", GSMT_ERROR); return false; } CGparameter param = SeekParameter(name, m_params); if (!param) return ShowInvalidParameterWarning(m_shaderName, name); DisableIfEnabled(param); const GLTexture* textureObj = (GLTexture*)(pTexture.lock().get()); cgGLSetTextureParameter(param, textureObj->GetTextureInfo().m_texture); if (CheckForError("Shader::SetTexture", m_shaderName)) return false; cgGLEnableTextureParameter(param); if (CheckForError("Shader::SetTexture", m_shaderName)) return false; // add this param to the enabled texture parameter list so we can disable it with DisableTetureParams m_enabledTextures.push_back(param); return true; }
bool GLES2Shader::SetTexture(const str_type::string& name, TextureWeakPtr pTexture) { std::map<str_type::string, GLint>::iterator iter = m_texturePasses.find(name); if (iter == m_texturePasses.end()) { m_texturePasses[name] = m_texturePassCounter++; iter = m_texturePasses.find(name); } const GLint pass = iter->second; GLES2Texture* tex = static_cast<GLES2Texture*>(pTexture.lock().get()); if (tex) { //m_parameters[name] = GLES2UPTexturePtr(new GLES2UPTexture(GetEquivalentTexturePass(pass), tex->GetTextureID(), pass)); SetParameter(name, GLES2UPTexturePtr(new GLES2UPTexture(GetEquivalentTexturePass(pass), tex->GetTextureID(), pass, name)), m_parameters); /*if (name == DIFFUSE_TEXTURE_NAME) { m_parameters[name] = GLES2UPTexturePtr(new GLES2UPTexture(GL_TEXTURE0, tex->GetTextureID(), 0)); } else { m_parameters[name] = GLES2UPTexturePtr(new GLES2UPTexture(GL_TEXTURE1, tex->GetTextureID(), 1)); }*/ return true; } else { return false; } }