- Katılım
- 11 May 2023
- Konular
- 270
- Mesajlar
- 1,141
- Çözüm
- 2
- Online süresi
- 1mo 25d
- Reaksiyon Skoru
- 744
- Altın Konu
- 1
- Başarım Puanı
- 199
- MmoLira
- 1,170
- DevLira
- 381
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!
grafikte yapabilirsiniz.
grpimagetexture.cpp
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;
}
- Katılım
- 9 Ara 2018
- Konular
- 27
- Mesajlar
- 348
- Çözüm
- 4
- Online süresi
- 1mo 18d
- Reaksiyon Skoru
- 85
- Altın Konu
- 0
- TM Yaşı
- 7 Yıl 5 Ay 29 Gün
- Başarım Puanı
- 106
- MmoLira
- 7,725
- DevLira
- 0
Paylaşım için teşekkürler
- Katılım
- 16 Tem 2019
- Konular
- 715
- Mesajlar
- 3,551
- Çözüm
- 47
- Online süresi
- 6mo 20d
- Reaksiyon Skoru
- 2,109
- Altın Konu
- 34
- Başarım Puanı
- 309
- MmoLira
- 19,556
- DevLira
- 122
Paylaşım için teşekkürler.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 3
- Görüntüleme
- 384
- Cevaplar
- 3
- Görüntüleme
- 245
- Cevaplar
- 0
- Görüntüleme
- 265
- Cevaplar
- 9
- Görüntüleme
- 527
- Cevaplar
- 9
- Görüntüleme
- 431





