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

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

apikomt2

Level 6
Uzman
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,155
DevLira
381
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!

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();
}
 
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?
 
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.
 
Elinize sağlık. Öncesi ve sonrası olarak görsel paylaşılırsa daha güzel olur.
 

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

Geri
Üst