Я пишу систему эффектов GL в своем приложении, поэтому у меня есть суперкласс
cEffect - который обрабатывает загрузку / анализ файла конфигурации для каждого эффекта
идругие унаследованные классы
cFX <<em> name > - для каждого добавляемого мной эффекта (размытие, цветение, хаос, ...).
код здесь упрощен, но выглядит следующим образом:
Class cEffect
{
public:
bool ParseString(...);
private:
int m_nStartFrame;
int m_nEndFrame;
float m_fSpeed;
};
// Blur effect
Class cFXBlur : public cEffect
{
public:
bool RenderFrame(...);
};
// Bloom effect
Class cFXBloom : public cEffect
{
public:
bool RenderFrame(...);
};
// Scene drawing effect
Class cFXScene : public cEffect
{
public:
bool RenderFrame(...);
};
// Clear the depth/color buffer
Class cFXClearBuffers : public cEffect
{
public
bool RenderFrame(...);
}
Теперь демонстрационный движок обрабатывает
std::vector<cEffect *> m_pvEffects;
Vector, к которому добавлен список эффектов.И когда к текущему времени добавляется эффект (скажем, я добавляю размытие), я добавляю его следующим образом:
// Blur to be added
cEffect *newEffect = new cFXBlur;
newEffect->SetStartTime(x);
newEffect->SetEndTime(y);
newEffect->SetPower(13.0f);
newEffect->SetTexture(...);
// Now add the effect to the effects list.
m_pvEffects.push_back(newEffect);
Теперь, когда я рендеринг, я перебираю список m_pvEffects - но также я хотел бы вызватьметод RenderFrame (который доступен для каждого CFX <<em> name > эффекта).
(*it)->RenderFrame(...)
Но компилятор говорит:
ошибка C2039: «RenderFrame»: не является членом «CEffect»
Я вроде понимаю, почему это происходит, но не могу придумать, как я могу это исправить, можете ли вы, ребята, помочь мнепожалуйста, похоже, что я потерял сюжет ...
Спасибо за любые предложения, что я могу сделать, чтобы добавить CFX к вектору cEffect и использовать его позже-> RenderFrame метод?