本文整理汇总了C++中CShader::Enable方法的典型用法代码示例。如果您正苦于以下问题:C++ CShader::Enable方法的具体用法?C++ CShader::Enable怎么用?C++ CShader::Enable使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CShader
的用法示例。
在下文中一共展示了CShader::Enable方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Render
void CSprite::Render(CShader::E_RENDER_MODE _eMode)
{
if(CSceneMgr::Instance()->Get_Camera()->Get_Frustum()->IsPointInFrustum(m_vPosition) == CFrustum::E_FRUSTUM_RESULT_OUTSIDE)
{
return;
}
INode::Render(_eMode);
ICamera* pCamera = CSceneMgr::Instance()->Get_Camera();
CShader* pShader = m_pMaterial->Get_Shader(_eMode);
switch (_eMode)
{
case CShader::E_RENDER_MODE_SIMPLE:
{
if(pShader == NULL)
{
std::cout<<"[CCrossBoxEffect::Render] Shader MODE_SIMPLE is NULL"<<std::endl;
return;
}
pShader->Set_Matrix(m_mWorld, CShader::E_ATTRIBUTE_MATRIX_WORLD);
pShader->Set_Matrix(pCamera->Get_Projection(), CShader::E_ATTRIBUTE_MATRIX_PROJECTION);
pShader->Set_Matrix(pCamera->Get_View(), CShader::E_ATTRIBUTE_MATRIX_VIEW);
pShader->Set_CustomVector2(m_vTexcoordOffset, "EXT_TexcoordOffset");
pShader->Set_CustomVector2(m_vTexcoordRepeat, "EXT_TexcoordRepeat");
for(unsigned int i = 0; i < k_TEXTURES_MAX_COUNT; ++i)
{
CTexture* pTexture = m_pMaterial->Get_Texture(i);
if(pTexture == NULL)
{
continue;
}
pShader->Set_Texture(pTexture->Get_Handle(), static_cast<CShader::E_TEXTURE_SLOT>(i));
}
}
break;
case CShader::E_RENDER_MODE_REFLECTION:
{
}
break;
case CShader::E_RENDER_MODE_REFRACTION:
{
}
break;
case CShader::E_RENDER_MODE_SCREEN_NORMAL_MAP:
{
if(pShader == NULL)
{
std::cout<<"[CCrossBoxEffect::Render] Shader MODE_SCREEN_NORMAL_MAP is NULL"<<std::endl;
return;
}
pShader->Enable();
pShader->Set_Matrix(m_mWorld, CShader::E_ATTRIBUTE_MATRIX_WORLD);
pShader->Set_Matrix(pCamera->Get_Projection(), CShader::E_ATTRIBUTE_MATRIX_PROJECTION);
pShader->Set_Matrix(pCamera->Get_View(), CShader::E_ATTRIBUTE_MATRIX_VIEW);
for(unsigned int i = 0; i < k_TEXTURES_MAX_COUNT; ++i)
{
CTexture* pTexture = m_pMaterial->Get_Texture(i);
if(pTexture == NULL)
{
continue;
}
pShader->Set_Texture(pTexture->Get_Handle(), static_cast<CShader::E_TEXTURE_SLOT>(i));
}
}
break;
default:
break;
}
m_pMesh->Get_VertexBufferRef()->Enable(_eMode);
m_pMesh->Get_IndexBufferRef()->Enable();
unsigned int iNumIndexes = m_pMesh->Get_IndexBufferRef()->Get_NumWorkingIndexes();
glDrawElements(GL_TRIANGLES, iNumIndexes, GL_UNSIGNED_SHORT, (void*) m_pMesh->Get_IndexBufferRef()->Get_SourceDataFromVRAM());
m_pMesh->Get_IndexBufferRef()->Disable();
m_pMesh->Get_VertexBufferRef()->Disable(_eMode);
pShader->Disable();
}