- Katılım
- 11 May 2023
- Konular
- 237
- Mesajlar
- 1,032
- Online süresi
- 1ay 23g
- Reaksiyon Skoru
- 678
- Altın Konu
- 1
- Başarım Puanı
- 176
- TM Yaşı
- 2 Yıl 11 Ay 14 Gün
- MmoLira
- 503
- DevLira
- 315
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.
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
- Online süresi
- 1ay 17g
- Reaksiyon Skoru
- 85
- Altın Konu
- 0
- Başarım Puanı
- 106
- TM Yaşı
- 7 Yıl 4 Ay 13 Gün
- MmoLira
- 7,590
- DevLira
- 0
Paylaşım için teşekkürler
- Katılım
- 16 Tem 2019
- Konular
- 714
- Mesajlar
- 3,540
- Online süresi
- 6ay 20g
- Reaksiyon Skoru
- 2,107
- Altın Konu
- 34
- Başarım Puanı
- 309
- TM Yaşı
- 6 Yıl 9 Ay 9 Gün
- MmoLira
- 26,209
- DevLira
- 122
Paylaşım için teşekkürler.
Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)
Benzer konular
- Cevaplar
- 3
- Görüntüleme
- 213
- Cevaplar
- 9
- Görüntüleme
- 497









