Hikayeler

Reklam vermek için turkmmo@gmail.com

SOIL2 HIBRIT SİSTEM.

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!

grafikte yapabilirsiniz.

1767476338071.png


1767476166195.png



grpimagetexture.cpp


Kod:
bool CGraphicImageTexture::CreateFromMemoryFile(UINT bufSize, const void* c_pvBuf, D3DFORMAT d3dFmt, DWORD dwFilter)
{
    assert(ms_lpd3dDevice != NULL);
    assert(m_lpd3dTexture == NULL);

    bool bDDSLoaded = false;
    static CDXTCImage image;

    // 1. Önce DDS Dene
    if (image.LoadHeaderFromMemory((const BYTE*)c_pvBuf))
    {
        if (CreateDDSTexture(image, (const BYTE*)c_pvBuf))
            bDDSLoaded = true;
    }

    // 2. DDS Başarısızsa SOIL2 ile Devam Et
    if (!bDDSLoaded)
    {
        int width, height, channels;
        unsigned char* imgData = SOIL_load_image_from_memory(
            (const unsigned char*)c_pvBuf,
            bufSize,
            &width,
            &height,
            &channels,
            SOIL_LOAD_RGBA
        );

        if (!imgData) return false;

        if (FAILED(ms_lpd3dDevice->CreateTexture(width, height, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &m_lpd3dTexture)))
        {
            SOIL_free_image_data(imgData);
            return false;
        }

        // --- GELİŞMİŞ GRAFİK AYARLARI (Burayı Değiştirebilirsin) ---
        const float fSaturation = 1.35f;  // Renk Doygunluğu (1.0 normal, 1.35 canlı)
        const float fContrast   = 1.10f;  // Kontrast (1.0 normal)
        const float fBrightness = 1.05f;  // Parlaklık (1.0 normal)

        D3DLOCKED_RECT lockedRect;
        if (SUCCEEDED(m_lpd3dTexture->LockRect(0, &lockedRect, NULL, 0)))
        {
            unsigned char* pDst = (unsigned char*)lockedRect.pBits;
           
            for (int y = 0; y < height; ++y)
            {
                for (int x = 0; x < width; ++x)
                {
                    int i = (y * width + x) * 4;
                    int di = (y * lockedRect.Pitch) + (x * 4);

                    // Orijinal renkleri float formatına çek (0.0f - 255.0f)
                    float r = (float)imgData[i + 0];
                    float g = (float)imgData[i + 1];
                    float b = (float)imgData[i + 2];

                    // --- 1. PARLAKLIK (Brightness) ---
                    r *= fBrightness;
                    g *= fBrightness;
                    b *= fBrightness;

                    // --- 2. KONTRAST (Contrast) ---
                    // Renkleri orta noktadan (128) uzaklaştırır veya yaklaştırır
                    r = ((r - 128.0f) * fContrast) + 128.0f;
                    g = ((g - 128.0f) * fContrast) + 128.0f;
                    b = ((b - 128.0f) * fContrast) + 128.0f;

                    // --- 3. DOYGUNLUK (Saturation) ---
                    // Grilik değerini hesapla (Luminance)
                    float gray = r * 0.2126f + g * 0.7152f + b * 0.0722f;
                    r = gray + (r - gray) * fSaturation;
                    g = gray + (g - gray) * fSaturation;
                    b = gray + (b - gray) * fSaturation;

                    // --- 4. HATA ÖNLEME (Clamping) ---
                    // 0-255 dışına taşan değerleri sınırla
                    pDst[di + 2] = (unsigned char)(r < 0 ? 0 : (r > 255 ? 255 : r)); // R
                    pDst[di + 1] = (unsigned char)(g < 0 ? 0 : (g > 255 ? 255 : g)); // G
                    pDst[di + 0] = (unsigned char)(b < 0 ? 0 : (b > 255 ? 255 : b)); // B
                    pDst[di + 3] = imgData[i + 3]; // Alpha (Transparanlık korunur)
                }
            }
            m_lpd3dTexture->UnlockRect(0);
        }

        m_width = width;
        m_height = height;
        SOIL_free_image_data(imgData);
    }

    m_bEmpty = false;
    return true;
}
 
Paylaşım için teşekkürler
 
Paylaşım için teşekkürler.
 
teşekkürler
 
update eklendi
 

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

Geri
Üst