İlan
04 Haz 2026 19 çevrimiçi üye Duyurular
Ana Sayfa C++ / C# / Python
Ana Sayfa Forum C++ / C# / Python kalite yükseltme.görsel ve donanım olarak fark yok...
İlan Yan banner placeholder

kalite yükseltme.görsel ve donanım olarak fark yok.

veysiyavas 24.04.2026 16:20 773 görüntüleme 3 cevap
Son Mesaj
veysiyavas
Üye
Üye
Katılım30 Mar 2026
Konular12
Mesajlar57
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
24.04.2026 16:20 #1
cpu gpu ramda fark olmuyor
oyundada görsel olarak fark olmuyor.

upscale yapmak daha mantıklı

grpimagetexture.cpp

Kod:
#include "StdAfx.h"
#include "../eterBase/MappedFile.h"
#include "../eterPack/EterPackManager.h"
#include "GrpImageTexture.h"

bool CGraphicImageTexture::Lock(int* pRetPitch, void** ppRetPixels, int level)
{
    D3DLOCKED_RECT lockedRect;
    if (FAILED(m_lpd3dTexture->LockRect(level, &lockedRect, nullptr, 0)))
        return false;

    *pRetPitch = lockedRect.Pitch;
    *ppRetPixels = static_cast<void*>(lockedRect.pBits);
    return true;
}

void CGraphicImageTexture::Unlock(int level)
{
    if (m_lpd3dTexture) [[likely]]
        m_lpd3dTexture->UnlockRect(level);
}

void CGraphicImageTexture::Initialize()
{
    CGraphicTexture::Initialize();
    m_stFileName = "";
    m_d3dFmt = D3DFMT_UNKNOWN;
    m_dwFilter = 0;
}

void CGraphicImageTexture::Destroy()
{
    CGraphicTexture::Destroy();
    Initialize();
}

bool CGraphicImageTexture::CreateDeviceObjects()
{
    assert(ms_lpd3dDevice != nullptr);
    assert(m_lpd3dTexture == nullptr);

    if (m_stFileName.empty())
    {
        if (FAILED(ms_lpd3dDevice->CreateTexture(m_width, m_height, 1, 0, m_d3dFmt, D3DPOOL_MANAGED, &m_lpd3dTexture)))
            return false;
    }
    else
    {
        CMappedFile mappedFile;
        LPCVOID c_pvMap;

        if (!CEterPackManager::Instance().Get(mappedFile, m_stFileName.c_str(), &c_pvMap))
            return false;

        if (!CreateFromMemoryFile(mappedFile.Size(), c_pvMap, m_d3dFmt, m_dwFilter))
        {
            TraceError("CGraphicImageTexture::CreateDeviceObjects: texture not found(%s)", m_stFileName.c_str());
            return false;
        }
        return true;
    }

    m_bEmpty = false;
    return true;
}

bool CGraphicImageTexture::Create(UINT width, UINT height, D3DFORMAT d3dFmt, DWORD dwFilter)
{
    assert(ms_lpd3dDevice != nullptr);
    Destroy();

    m_width = width;
    m_height = height;
    m_d3dFmt = d3dFmt;
    m_dwFilter = dwFilter;

    return CreateDeviceObjects();
}

void CGraphicImageTexture::CreateFromTexturePointer(const CGraphicTexture* c_pSrcTexture)
{
    if (m_lpd3dTexture)
        m_lpd3dTexture->Release();

    m_width = c_pSrcTexture->GetWidth();
    m_height = c_pSrcTexture->GetHeight();
    m_lpd3dTexture = c_pSrcTexture->GetD3DTexture();

    if (m_lpd3dTexture)
        m_lpd3dTexture->AddRef();

    m_bEmpty = false;
}

bool CGraphicImageTexture::CreateDDSTexture(CDXTCImage& image, const BYTE* /*c_pbBuf*/)
{
    int mipmapCount = image.m_dwMipMapCount == 0 ? 1 : image.m_dwMipMapCount;

    D3DFORMAT format;
    if (image.m_CompFormat == PF_DXT5) format = D3DFMT_DXT5;
    else if (image.m_CompFormat == PF_DXT3) format = D3DFMT_DXT3;
    else format = D3DFMT_DXT1;

    // MAKSİMUM KALİTE: Texture Bias ve Düşük Bellek kontrolleri tamamen kaldırıldı.
    LPDIRECT3DTEXTURE8 lpd3dTexture;
    if (FAILED(D3DXCreateTexture(ms_lpd3dDevice, image.m_nWidth, image.m_nHeight,
                                    mipmapCount, 0, format, D3DPOOL_MANAGED, &lpd3dTexture)))
    {
        TraceError("CreateDDSTexture: Cannot create texture");
        return false;
    }

    for (DWORD i = 0; i < static_cast<DWORD>(mipmapCount); ++i)
    {
        D3DLOCKED_RECT lockedRect;
        if (SUCCEEDED(lpd3dTexture->LockRect(i, &lockedRect, nullptr, 0)))
        {
            image.Copy(i, reinterpret_cast<BYTE*>(lockedRect.pBits), lockedRect.Pitch);
            lpd3dTexture->UnlockRect(i);
        }
    }

    m_lpd3dTexture = lpd3dTexture;
    m_width = image.m_nWidth;
    m_height = image.m_nHeight;
    m_bEmpty = false;

    return true;
}

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

    static CDXTCImage image;

    if (image.LoadHeaderFromMemory(static_cast<const BYTE*>(c_pvBuf)))
    {
        return CreateDDSTexture(image, static_cast<const BYTE*>(c_pvBuf));
    }
    else
    {
        D3DXIMAGE_INFO imageInfo;
        // MAKSİMUM KALİTE: En iyi filtreleme ve tam boyut yükleme
        if (FAILED(D3DXCreateTextureFromFileInMemoryEx(
                    ms_lpd3dDevice,
                    c_pvBuf,
                    bufSize,
                    D3DX_DEFAULT, // Orijinal Genişlik
                    D3DX_DEFAULT, // Orijinal Yükseklik
                    D3DX_DEFAULT, // Tüm MipMap'ler
                    0,
                    d3dFmt,
                    D3DPOOL_MANAGED,
                    D3DX_FILTER_TRIANGLE | D3DX_FILTER_DITHER, // En iyi resample filtresi
                    D3DX_FILTER_TRIANGLE | D3DX_FILTER_DITHER,
                    0, // ColorKey devre dışı (veya 0xffff00ff)
                    &imageInfo,
                    nullptr,
                    &m_lpd3dTexture)))
        {
            TraceError("CreateFromMemoryFile: Cannot create texture from memory");
            return false;
        }

        m_width = imageInfo.Width;
         m_height = imageInfo.Height;
      
        // MAKSİMUM KALİTE: format düşürme (A8R8G8B8 -> A4R4G4B4) mantığı tamamen kaldırıldı.
        // Artık her zaman orijinal formatında kalır.
    }

    m_bEmpty = false;
    return true;
}

void CGraphicImageTexture::SetFileName(const char* c_szFileName)
{
    m_stFileName = c_szFileName;
}

bool CGraphicImageTexture::CreateFromDiskFile(const char* c_szFileName, D3DFORMAT d3dFmt, DWORD dwFilter)
{
    Destroy();
    SetFileName(c_szFileName);
    m_d3dFmt = d3dFmt;
    m_dwFilter = dwFilter;
    return CreateDeviceObjects();
}

CGraphicImageTexture::CGraphicImageTexture()
{
    Initialize();
}

CGraphicImageTexture::~CGraphicImageTexture()
{
    Destroy();
}
Samirnagizadeh
Üye
Üye
Katılım27 Şub 2026
Konular8
Mesajlar48
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
27.04.2026 17:45 #2
cpu gpu ramda fark olmuyor
oyundada görsel olarak fark olmuyor.

upscale yapmak daha mantıklı

grpimagetexture.cpp

Kod:
#include "StdAfx.h"
#include "../eterBase/MappedFile.h"
#include "../eterPack/EterPackManager.h"
#include "GrpImageTexture.h"

bool CGraphicImageTexture::Lock(int* pRetPitch, void** ppRetPixels, int level)
{
    D3DLOCKED_RECT lockedRect;
    if (FAILED(m_lpd3dTexture->LockRect(level, &lockedRect, nullptr, 0)))
        return false;

    *pRetPitch = lockedRect.Pitch;
    *ppRetPixels = static_cast<void*>(lockedRect.pBits);
    return true;
}

void CGraphicImageTexture::Unlock(int level)
{
    if (m_lpd3dTexture) [[likely]]
        m_lpd3dTexture->UnlockRect(level);
}

void CGraphicImageTexture::Initialize()
{
    CGraphicTexture::Initialize();
    m_stFileName = "";
    m_d3dFmt = D3DFMT_UNKNOWN;
    m_dwFilter = 0;
}

void CGraphicImageTexture::Destroy()
{
    CGraphicTexture::Destroy();
    Initialize();
}

bool CGraphicImageTexture::CreateDeviceObjects()
{
    assert(ms_lpd3dDevice != nullptr);
    assert(m_lpd3dTexture == nullptr);

    if (m_stFileName.empty())
    {
        if (FAILED(ms_lpd3dDevice->CreateTexture(m_width, m_height, 1, 0, m_d3dFmt, D3DPOOL_MANAGED, &m_lpd3dTexture)))
            return false;
    }
    else
    {
        CMappedFile mappedFile;
        LPCVOID c_pvMap;

        if (!CEterPackManager::Instance().Get(mappedFile, m_stFileName.c_str(), &c_pvMap))
            return false;

        if (!CreateFromMemoryFile(mappedFile.Size(), c_pvMap, m_d3dFmt, m_dwFilter))
        {
            TraceError("CGraphicImageTexture::CreateDeviceObjects: texture not found(%s)", m_stFileName.c_str());
            return false;
        }
        return true;
    }

    m_bEmpty = false;
    return true;
}

bool CGraphicImageTexture::Create(UINT width, UINT height, D3DFORMAT d3dFmt, DWORD dwFilter)
{
    assert(ms_lpd3dDevice != nullptr);
    Destroy();

    m_width = width;
    m_height = height;
    m_d3dFmt = d3dFmt;
    m_dwFilter = dwFilter;

    return CreateDeviceObjects();
}

void CGraphicImageTexture::CreateFromTexturePointer(const CGraphicTexture* c_pSrcTexture)
{
    if (m_lpd3dTexture)
        m_lpd3dTexture->Release();

    m_width = c_pSrcTexture->GetWidth();
    m_height = c_pSrcTexture->GetHeight();
    m_lpd3dTexture = c_pSrcTexture->GetD3DTexture();

    if (m_lpd3dTexture)
        m_lpd3dTexture->AddRef();

    m_bEmpty = false;
}

bool CGraphicImageTexture::CreateDDSTexture(CDXTCImage& image, const BYTE* /*c_pbBuf*/)
{
    int mipmapCount = image.m_dwMipMapCount == 0 ? 1 : image.m_dwMipMapCount;

    D3DFORMAT format;
    if (image.m_CompFormat == PF_DXT5) format = D3DFMT_DXT5;
    else if (image.m_CompFormat == PF_DXT3) format = D3DFMT_DXT3;
    else format = D3DFMT_DXT1;

    // MAKSİMUM KALİTE: Texture Bias ve Düşük Bellek kontrolleri tamamen kaldırıldı.
    LPDIRECT3DTEXTURE8 lpd3dTexture;
    if (FAILED(D3DXCreateTexture(ms_lpd3dDevice, image.m_nWidth, image.m_nHeight,
                                    mipmapCount, 0, format, D3DPOOL_MANAGED, &lpd3dTexture)))
    {
        TraceError("CreateDDSTexture: Cannot create texture");
        return false;
    }

    for (DWORD i = 0; i < static_cast<DWORD>(mipmapCount); ++i)
    {
        D3DLOCKED_RECT lockedRect;
        if (SUCCEEDED(lpd3dTexture->LockRect(i, &lockedRect, nullptr, 0)))
        {
            image.Copy(i, reinterpret_cast<BYTE*>(lockedRect.pBits), lockedRect.Pitch);
            lpd3dTexture->UnlockRect(i);
        }
    }

    m_lpd3dTexture = lpd3dTexture;
    m_width = image.m_nWidth;
    m_height = image.m_nHeight;
    m_bEmpty = false;

    return true;
}

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

    static CDXTCImage image;

    if (image.LoadHeaderFromMemory(static_cast<const BYTE*>(c_pvBuf)))
    {
        return CreateDDSTexture(image, static_cast<const BYTE*>(c_pvBuf));
    }
    else
    {
        D3DXIMAGE_INFO imageInfo;
        // MAKSİMUM KALİTE: En iyi filtreleme ve tam boyut yükleme
        if (FAILED(D3DXCreateTextureFromFileInMemoryEx(
                    ms_lpd3dDevice,
                    c_pvBuf,
                    bufSize,
                    D3DX_DEFAULT, // Orijinal Genişlik
                    D3DX_DEFAULT, // Orijinal Yükseklik
                    D3DX_DEFAULT, // Tüm MipMap'ler
                    0,
                    d3dFmt,
                    D3DPOOL_MANAGED,
                    D3DX_FILTER_TRIANGLE | D3DX_FILTER_DITHER, // En iyi resample filtresi
                    D3DX_FILTER_TRIANGLE | D3DX_FILTER_DITHER,
                    0, // ColorKey devre dışı (veya 0xffff00ff)
                    &imageInfo,
                    nullptr,
                    &m_lpd3dTexture)))
        {
            TraceError("CreateFromMemoryFile: Cannot create texture from memory");
            return false;
        }

        m_width = imageInfo.Width;
         m_height = imageInfo.Height;
     
        // MAKSİMUM KALİTE: format düşürme (A8R8G8B8 -> A4R4G4B4) mantığı tamamen kaldırıldı.
        // Artık her zaman orijinal formatında kalır.
    }

    m_bEmpty = false;
    return true;
}

void CGraphicImageTexture::SetFileName(const char* c_szFileName)
{
    m_stFileName = c_szFileName;
}

bool CGraphicImageTexture::CreateFromDiskFile(const char* c_szFileName, D3DFORMAT d3dFmt, DWORD dwFilter)
{
    Destroy();
    SetFileName(c_szFileName);
    m_d3dFmt = d3dFmt;
    m_dwFilter = dwFilter;
    return CreateDeviceObjects();
}

CGraphicImageTexture::CGraphicImageTexture()
{
    Initialize();
}

CGraphicImageTexture::~CGraphicImageTexture()
{
    Destroy();
}
Yükleme sürelerinde fark oluyor mu? Denediniz mi?
veysiyavas
Üye
Üye
Katılım30 Mar 2026
Konular12
Mesajlar57
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
29.04.2026 14:50 #3
Yükleme sürelerinde fark oluyor mu? Denediniz mi?
hayır.bu biraz performans değilde görüntü kalitesini kırpmadan dokuyu yüklemek gibi birşey.
metin2 eski bir oyun olduğu için bir çok yerinde 64 128 mblik eski ekran kartları için limitlemeler mevcut.
burda sanırım yapay zeka bunu kaldırıyor ve dokuyu tam yüklüyor.
izciTR
Üye
Üye
Katılım16 Mar 2026
Konular3
Mesajlar40
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
01.05.2026 06:50 #4
Elinize sağlık. Öncesi ve sonrası olarak görsel paylaşılırsa daha güzel olur.
Bu konuyu görüntüleyenler
1 misafir
Cevap yazmak için giriş yapın.
Benzer Konular
6 cevap
2K görüntüleme
9 cevap
1.9K görüntüleme
4 cevap
1.9K görüntüleme
8 cevap
1.9K görüntüleme
İlan Yan banner placeholder