コード例 #1
0
ファイル: GLCgShader.cpp プロジェクト: St0l3nID/ethanon
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;
}
コード例 #2
0
ファイル: GLES2Shader.cpp プロジェクト: angeltown/ethanon
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;
	}
}