[C++] Client'in 1997-2001 Arası çıkmış grafik kartları desteğini kaldırın

Kaptan Yosun

Co-Co Admin
Moderatör
Geliştirici
Yardımsever Üye
Usta Üye
Mesaj
1.455
Çözümler
54
Beğeni
2.295
Puan
1.839
Ticaret Puanı
0
:mmt-hakkinda:
Daha önce de hep belirttiğim gibi, her türlü kod kalabalığı beni rahatsız ediyor, bu yüzden kaynak kodunu olabildiğince arı-duru hale getirmeye çalışıyorum. Metin2 Client kaynak kodunda bugün en düşük özellikli sayılan bilgisayarların dahi yanlarında süperbilgisayar gibi kaldığı donanımlarda oyunun çalışabilmesi için eklenmiş birtakım kodlar var.

Şuraya bir bakın. SIS ve 3dfx driveri kontrol ediyor. SIS ve 3dfx mi kaldı?
C++:
Genişlet Daralt Kopyala
    if (strnicmp (rkD3DAdapterId.Driver, "SIS", 3) == 0)
    {
        GRAPHICS_CAPS_CAN_NOT_DRAW_LINE = true;
        GRAPHICS_CAPS_CAN_NOT_DRAW_SHADOW = true;
        GRAPHICS_CAPS_HALF_SIZE_IMAGE = true;
        ms_isLowTextureMemory = true;
    }
    else if (strnicmp (rkD3DAdapterId.Driver, "3dfx", 4) == 0)
    {
        GRAPHICS_CAPS_CAN_NOT_DRAW_SHADOW = true;
        GRAPHICS_CAPS_HALF_SIZE_IMAGE = true;
        ms_isLowTextureMemory = true;
    }

Bir de buraya bakın. Ekran kartında 64mb'dan düşük veya 100mb'dan yüksek bellek var mı diye kontrol ediyor. 64 - 100 mb VRAM mi kaldı?
C++:
Genişlet Daralt Kopyala
    if (dwTexMemSize < 64 * 1024 * 1024)
    {
        ms_isLowTextureMemory = true;
    }
    else
    {
        ms_isLowTextureMemory = false;
    }

    if (dwTexMemSize > 100 * 1024 * 1024)
    {
        ms_isHighTextureMemory = true;
    }
    else
    {
        ms_isHighTextureMemory = false;
    }

O yüzden ben bu kodları kaldırdım. 64mb VRAM'li bir 3dfx Voodoo 5 5500 ekran kartı kullanıyorsanız kusura bakmayın :D

voodoo.webp

Bir de burada hiçbir kontrol olmaksızın, durduk yere 32bit full ve 24bit alpha formatını 16bit'e düşürüyor. Muhtemelen antik ekran kartlarını da desteklemek içindir, günümüzde bunu desteklemeye gerek yok. Görüntü kalitesine zarar verir.
C++:
Genişlet Daralt Kopyala
        D3DFORMAT format = imageInfo.Format;
        switch (imageInfo.Format)
        {
            case D3DFMT_A8R8G8B8:
                format = D3DFMT_A4R4G4B4;
                break;

            case D3DFMT_X8R8G8B8:
            case D3DFMT_R8G8B8:
                format = D3DFMT_A1R5G5B5;
                break;
        }

ms_bSupportDXT kontrolleri de gereksiz. DirectX 6'dan beri ekran kartları DXT formatlarını destekliyor. Bu kontrol de çok antik.

IsFastTNL kontrolüne de gerek yok 2010'da çıkan Intel HD grafikler bile TNL destekler.

Son olarak da günümüzde en düşük seviye laptop iGPU'larının bile desteklediği, 2006 sonrası bilgisayarların da tamamına yakınının desteklediği D3DCREATE_SOFTWARE_VERTEXPROCESSING, D3DDEVCAPS_PUREDEVICE ve D3DCREATE_MIXED_VERTEXPROCESSING gibi artık kullanılmayan yöntemleri de kaldırdım.

Gelelim nasıl yapılacağına. İndirme linkindeki Remove_Old_Graphics_Support.diff dosyasını 'ye yükleyip, gerekli satırları kendi projenizin kaynak kodu içinde düzenlemelisiniz.

Tabiki yorumlar her türlü fikir ve tartışmaya açıktır.

Kaldıracağımız fonksiyon ve tanımlar:
  • GRAPHICS_CAPS_CAN_NOT_DRAW_LINE
  • GRAPHICS_CAPS_CAN_NOT_TEXTURE_ADDRESS_BORDER
  • GRAPHICS_CAPS_CAN_NOT_DRAW_SHADOW
  • GRAPHICS_CAPS_HALF_SIZE_IMAGE
  • IsLowTextureMemory
  • IsHighTextureMemory
  • IsFastTNL
  • IsTLVertexClipping
  • isHAL
  • IsSupportDXT
  • PutImage16
  • uTexBias
  • CREATE_FORMAT checks
  • unused image format downgrade
  • Dx7-Dx8 era depth stencil formats

Nasıl Yapılır:
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.
 
Son düzenleme:
Konuyu güncelledim arkadaşlar, diff yerine rehber ekledim, kolayca takip ederek uygulamanız için.
 
Geri
Üst