本文整理汇总了C++中ITexture::SetTextureRegenerator方法的典型用法代码示例。如果您正苦于以下问题:C++ ITexture::SetTextureRegenerator方法的具体用法?C++ ITexture::SetTextureRegenerator怎么用?C++ ITexture::SetTextureRegenerator使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ITexture
的用法示例。
在下文中一共展示了ITexture::SetTextureRegenerator方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
CCamoMaterialProxy::~CCamoMaterialProxy()
{
#if 0
InstanceData_t *curr = m_InstanceDataListHead;
while( curr )
{
InstanceData_t *next;
next = curr->next;
delete curr;
curr = next;
}
m_InstanceDataListHead = NULL;
#endif
// Disconnect the texture regenerator...
if (m_pCamoTextureVar)
{
ITexture *pCamoTexture = m_pCamoTextureVar->GetTextureValue();
if (pCamoTexture)
pCamoTexture->SetTextureRegenerator( NULL );
}
delete m_pCamoPatternImage;
delete m_pointsInNormalizedBox;
}
示例2: Init
//-----------------------------------------------------------------------------
// initialization, shutdown
//-----------------------------------------------------------------------------
bool CProceduralTexturePanel::Init( int nWidth, int nHeight, bool bAllocateImageBuffer )
{
m_nWidth = nWidth;
m_nHeight = nHeight;
if ( bAllocateImageBuffer )
{
m_pImageBuffer = new BGRA8888_t[nWidth * nHeight];
}
m_TextureSubRect.x = m_TextureSubRect.y = 0;
m_TextureSubRect.width = nWidth;
m_TextureSubRect.height = nHeight;
char pTemp[512];
Q_snprintf( pTemp, 512, "__%s", GetName() );
ITexture *pTex = MaterialSystem()->CreateProceduralTexture( pTemp, TEXTURE_GROUP_VGUI,
m_nWidth, m_nHeight, IMAGE_FORMAT_BGRX8888,
TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT | TEXTUREFLAGS_NOMIP |
TEXTUREFLAGS_NOLOD | TEXTUREFLAGS_PROCEDURAL | TEXTUREFLAGS_SINGLECOPY );
pTex->SetTextureRegenerator( this );
m_ProceduralTexture.Init( pTex );
KeyValues *pVMTKeyValues = new KeyValues( "UnlitGeneric" );
pVMTKeyValues->SetString( "$basetexture", pTemp );
pVMTKeyValues->SetInt( "$nocull", 1 );
pVMTKeyValues->SetInt( "$nodebug", 1 );
m_ProceduralMaterial.Init( MaterialSystem()->CreateMaterial( pTemp, pVMTKeyValues ));
m_nTextureID = MatSystemSurface()->CreateNewTextureID( false );
MatSystemSurface()->DrawSetTextureMaterial( m_nTextureID, m_ProceduralMaterial );
return true;
}
示例3: Init
bool CCamoMaterialProxy::Init( IMaterial *pMaterial, KeyValues *pKeyValues )
{
return false; // hack! Need to make sure that the TGA loader has a valid filesystem before trying
// to load the camo pattern.
#if 0
// set how big our instance data is.
SetInstanceDataSize( sizeof( CamoInstanceData_t ) );
#endif
// remember what material we belong to.
m_pMaterial = pMaterial;
// get pointers to material vars.
bool found;
m_pCamoTextureVar = m_pMaterial->FindVar( "$baseTexture", &found );
if( !found )
{
m_pCamoTextureVar = NULL;
return false;
}
ITexture *pCamoTexture = m_pCamoTextureVar->GetTextureValue();
if (pCamoTexture)
pCamoTexture->SetTextureRegenerator( &m_TextureRegen );
// Need to get the palettized texture to create the procedural texture from
// somewhere.
m_pCamoPatternTextureVar = m_pMaterial->FindVar( "$camoPatternTexture", &found );
if( !found )
{
m_pCamoTextureVar = NULL;
return false;
}
IMaterialVar *subBoundingBoxMinVar, *subBoundingBoxMaxVar;
subBoundingBoxMinVar = m_pMaterial->FindVar( "$camoBoundingBoxMin", &found, false );
if( !found )
{
m_SubBoundingBoxMin = Vector( 0.0f, 0.0f, 0.0f );
}
else
{
subBoundingBoxMinVar->GetVecValue( m_SubBoundingBoxMin.Base(), 3 );
}
subBoundingBoxMaxVar = m_pMaterial->FindVar( "$camoBoundingBoxMax", &found, false );
if( !found )
{
m_SubBoundingBoxMax = Vector( 1.0f, 1.0f, 1.0f );
}
else
{
subBoundingBoxMaxVar->GetVecValue( m_SubBoundingBoxMax.Base(), 3 );
}
LoadCamoPattern();
GenerateRandomPointsInNormalizedCube();
return true;
}
示例4: Release
void CZZMaterialProxy::Release()
{
// Disconnect the texture regenerator...
if (m_pTexture)
{
//ITexture *pTexture = m_pTextureVar->GetTextureValue(); <- powoduje access violation
if (m_pTexture)
m_pTexture->SetTextureRegenerator(NULL);
}
}
示例5:
CDensityMaterialProxy::~CDensityMaterialProxy()
{
// Disconnect the texture regenerator...
if (m_pFOWTextureVar)
{
ITexture *pFOWTexture = m_pFOWTextureVar->GetTextureValue();
if (pFOWTexture)
pFOWTexture->SetTextureRegenerator( NULL );
}
}
示例6: Init
bool CZZMaterialProxy::Init( IMaterial *pMaterial, KeyValues *pKeyValues )
{
// ZZ return false; // hack! Need to make sure that the TGA loader has a valid filesystem before trying
// to load the camo pattern.
m_pMaterial = pMaterial;
// get pointers to material vars.
bool found;
m_pTextureVar = pMaterial->FindVar( "$baseTexture", &found );
if( !found )
{
m_pTextureVar = NULL;
return false;
}
m_pTexture = m_pTextureVar->GetTextureValue();
if (m_pTexture)
m_pTexture->SetTextureRegenerator( &m_TextureRegen );
return true;
}
示例7: OnBind
void CPlayerTextureProxy::OnBind( C_BaseEntity *pEnt )
{
// Bail if no base variable
if ( !m_pBaseTextureVar )
return;
CTeamKitInfo *pKitInfo;
const char *teamFolder;
const char *kitFolder;
int skinIndex;
int shirtNumber;
const char *shirtName;
bool isKeeper;
ITexture *pDetailTexture;
CProceduralRegenerator **pProcReg;
if (dynamic_cast<C_SDKPlayer *>(pEnt))
{
C_SDKPlayer *pPl = dynamic_cast<C_SDKPlayer *>(pEnt);
C_Team *pTeam = GetGlobalTeam(g_PR->GetTeam(pPl->index));
teamFolder = pTeam->GetFolderName();
kitFolder = pTeam->GetKitFolderName();
pKitInfo = pTeam->GetKitInfo();
skinIndex = g_PR->GetSkinIndex(pPl->index);
shirtNumber = g_PR->GetShirtNumber(pPl->index);
shirtName = g_PR->GetShirtName(pPl->index);
isKeeper = g_PR->GetTeamPosType(pPl->index) == POS_GK;
int teamIndex = pTeam->GetTeamNumber() - TEAM_A;
int posIndex = g_PR->GetTeamPosIndex(pPl->index);
pDetailTexture = materials->FindTexture(VarArgs("models/player/default/detail_%d_%d", teamIndex, posIndex), NULL, true);
pProcReg = &m_pTextureRegen[teamIndex][posIndex];
}
else if (dynamic_cast<C_ReplayPlayer *>(pEnt))
{
C_ReplayPlayer *pReplayPl = dynamic_cast<C_ReplayPlayer *>(pEnt);
C_Team *pTeam = GetGlobalTeam(pReplayPl->m_nTeamNumber);
teamFolder = pTeam->GetFolderName();
kitFolder = pTeam->GetKitFolderName();
pKitInfo = pTeam->GetKitInfo();
skinIndex = pReplayPl->m_nSkinIndex;
shirtNumber = pReplayPl->m_nShirtNumber;
shirtName = pReplayPl->m_szShirtName;
isKeeper = pReplayPl->m_bIsKeeper;
int teamIndex = pReplayPl->m_nTeamNumber - TEAM_A;
int posIndex = pReplayPl->m_nTeamPosIndex;
pDetailTexture = materials->FindTexture(VarArgs("models/player/default/detail_%d_%d", teamIndex, posIndex), NULL, true);
pProcReg = &m_pTextureRegen[teamIndex][posIndex];
}
else if (dynamic_cast<C_BaseAnimatingOverlay *>(pEnt))
{
C_BaseAnimatingOverlay *pPlayerModelPreview = dynamic_cast<C_BaseAnimatingOverlay *>(pEnt);
CAppearanceSettingPanel *pPanel = (CAppearanceSettingPanel *)iosOptionsMenu->GetPanel()->GetSettingPanel(SETTING_PANEL_APPEARANCE);
pPanel->GetPlayerTeamInfo(&teamFolder, &kitFolder);
pKitInfo = CTeamInfo::FindTeamByKitName(VarArgs("%s/%s", teamFolder, kitFolder));
skinIndex = pPanel->GetPlayerSkinIndex();
shirtNumber = pPanel->GetPlayerOutfieldShirtNumber();
shirtName = pPanel->GetPlayerShirtName();
isKeeper = false;
pDetailTexture = materials->FindTexture("models/player/default/detail_preview", NULL, true);
pProcReg = &m_pPreviewTextureRegen;
}
else
{
return;
}
if (!Q_strcmp(m_szTextureType, "shirt") || !Q_strcmp(m_szTextureType, "keepershirt"))
{
if (!(*pProcReg))
*pProcReg = new CProceduralRegenerator();
pDetailTexture->SetTextureRegenerator(*pProcReg);
m_pDetailTextureVar->SetTextureValue(pDetailTexture);
bool needsUpdate;
if (isKeeper)
needsUpdate = (*pProcReg)->SetPlayerInfo(shirtName, shirtNumber, pKitInfo->m_KeeperShirtNameColor, pKitInfo->m_nKeeperShirtNameOffset, pKitInfo->m_KeeperShirtNumberColor, pKitInfo->m_nKeeperShirtNumberOffset, true, pKitInfo->m_pFontAtlas);
else
needsUpdate = (*pProcReg)->SetPlayerInfo(shirtName, shirtNumber, pKitInfo->m_OutfieldShirtNameColor, pKitInfo->m_nOutfieldShirtNameOffset, pKitInfo->m_OutfieldShirtNumberColor, pKitInfo->m_nOutfieldShirtNumberOffset, false, pKitInfo->m_pFontAtlas);
if (needsUpdate)
pDetailTexture->Download();
}
char texture[128];
if (Q_stricmp(m_szTextureType, "shirt") == 0)
//.........这里部分代码省略.........