Fethi Polat 1
Fethi Polat
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Best Studio 1
Best Studio
Agora Metin2 1
Agora Metin2
raderde 1
raderde
Cannn6161 1
Cannn6161
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Mt2Hizmet 1
Mt2Hizmet
melankolıa18 1
melankolıa18
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

CAniImageBox Yüklemesini Optimize Etmek

  • Konuyu başlatan Konuyu başlatan hasanmacit™
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 9
  • Görüntüleme Görüntüleme 2K

hasanmacit™

emekli mareşal
TC Kimlik Numarası Doğrulanmış Üye
TM Üye
Katılım
14 Eki 2021
Konular
279
Mesajlar
1,455
Çözüm
12
Online süresi
4mo 28d
Reaksiyon Skoru
1,509
Altın Konu
5
TM Yaşı
4 Yıl 7 Ay 25 Gün
Başarım Puanı
227
MmoLira
3,445
DevLira
30
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

picture.gif


Selam beyler,

Bildiğimiz gibi, bir ani-image içinde çok fazla resim varsa, yüklenmesi gerçekten yavaş olabilir ve oyunun bir an için donmasına neden olabilir. Bu bizi gerçekten sınırlıyor çünkü kullanıcı deneyimi üzerinde kötü bir etkisi olacağından daha uzun bir görüntü dizisi kullanamıyoruz.

Bazı öğreticilerimizi birleştirerek 126 görüntüden oluşan bir dizi oluşturdum, işte eski (sol) ve yeni (sağ) sürümü gösteren bir karşılaştırma GIF'i.
[CODE title="EterPythonLib/PythonWindow.h"]arat

std::vector<CGraphicExpandedImageInstance*> m_ImageVector;

altına ekle

std::queue<std::string> m_ImageFileNames;
std::function<void(CGraphicExpandedImageInstance*)> m_SetRenderingRect, m_SetRenderingMode, m_SetDiffuseColor;[/CODE]

[CODE title="EterPythonLib/PythonWindow.cpp"]arat ve bu kod ile değiştir

void CAniImageBox::AppendImage(const char * c_szFileName)
{
m_ImageFileNames.push(c_szFileName);
}

tekrar arat

CAniImageBox::OnUpdate

kodun içine ekle

if (!m_ImageFileNames.empty())
{
const std::string& stFileName = m_ImageFileNames.front();

CResource* pResource = CResourceManager::Instance().GetResourcePointer(stFileName.c_str());
if (pResource->IsType(CGraphicImage::Type()))
{
CGraphicExpandedImageInstance* pImageInstance = CGraphicExpandedImageInstance::New();
pImageInstance->SetImagePointer(static_cast<CGraphicImage*>(pResource));

if (pImageInstance->IsEmpty())
{
CGraphicExpandedImageInstance::Delete(pImageInstance);
}
else
{
pImageInstance->SetPosition(m_rect.left, m_rect.top);

if (m_SetRenderingRect)
m_SetRenderingRect(pImageInstance);

if (m_SetRenderingMode)
m_SetRenderingMode(pImageInstance);

if (m_SetDiffuseColor)
m_SetDiffuseColor(pImageInstance);

m_ImageVector.push_back(pImageInstance);
}
}

m_ImageFileNames.pop();
}

arat ve değiştir

void CAniImageBox::SetRenderingRect(float fLeft, float fTop, float fRight, float fBottom)
{
m_SetRenderingRect = std::bind(&CGraphicExpandedImageInstance::SetRenderingRect, std::placeholders::_1, fLeft, fTop, fRight, fBottom);
std::for_each(m_ImageVector.begin(), m_ImageVector.end(), m_SetRenderingRect);
}

arat ve değiştir

void CAniImageBox::SetRenderingMode(int iMode)
{
m_SetRenderingMode = std::bind(&CGraphicExpandedImageInstance::SetRenderingMode, std::placeholders::_1, iMode);
std::for_each(m_ImageVector.begin(), m_ImageVector.end(), m_SetRenderingMode);
}

arat ve değiştir

void CAniImageBox::SetDiffuseColor(float fR, float fG, float fB, float fA)
{
m_SetDiffuseColor = std::bind(&CGraphicExpandedImageInstance::SetDiffuseColor, std::placeholders::_1, fR, fG, fB, fA);
std::for_each(m_ImageVector.begin(), m_ImageVector.end(), m_SetDiffuseColor);
}

arat ve değiştir

void CAniImageBox::OnChangePosition()
{
std::for_each(m_ImageVector.begin(), m_ImageVector.end(),
std::bind(&CGraphicExpandedImageInstance::SetPosition, std::placeholders::_1, m_rect.left, m_rect.top));
}[/CODE]

ve bu kadar. İyi forumlar.

Distraught'a Teşekkürler.
 

En Çok Reaksiyon Alan Mesajlar

Bu hali eksik, kullananlar sorun yaşar. ClearImages fonksiyonu da düzenlenmeli.

C++:
    void CAniImageBox::ClearImages()
    {
        while (!m_ImageFileNames.empty())
            m_ImageFileNames.pop();

        for_each(m_ImageVector.begin(), m_ImageVector.end(), CGraphicExpandedImageInstance::DeleteExpandedImageInstance);
        m_ImageVector.clear();
    }
Paylaşım için teşekkürler.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst