Kanıt
yapay zekaya yazdırdığım için hangisi titreme önlüyor bilmiyorum.
hepsine deneme yanılma yöntemiyle bakacak zamanım yok.

benim burda yapatığım çalışam dx8 olarak limitleme olmadan metin2yi en yüksek kaliteye getirmekdi bunu yapıncada titremelerde önlendi.
1- yapacağınız işlem
Standalone Application
bunu kurup.
şuraya geliceksiniz.
C:\Program Files\NVIDIA Corporation\NVIDIA Texture Tools
burda
nvbatchcompress.bat
bunu alttaki gibi düzenlicyeskiniz
alttkai kodda C:\ProjectX\1.Client\pack\yw_zone\ymir work.
gr2leriniz olduğu dizini seçiceksiniz.
sorna batı çalıştırcaksınız bat otomatik çeviricek.
Kod:
[/HEADING][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]@echo off[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]chcp 65001 >nul[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]setlocal enabledelayedexpansion[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set "NVCOMPRESS=C:\Program Files\NVIDIA Corporation\NVIDIA Texture Tools\nvcompress.exe"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]REM Klasör listesi (1'den 12'ye kadar)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set folders[9]=C:\ProjectX\1.Client\pack\yw_zone\ymir work[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo.[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo ============================================================[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo 📁 ALT KLASÖRLER DAHİL ÜZERİNE YAZMA İŞLEMİ BAŞLATILDI[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo ============================================================[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]if not exist "%NVCOMPRESS%" ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] echo ✗ HATA: nvcompress.exe bulunamadı![/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] echo Lütfen yolu kontrol edin: %NVCOMPRESS%[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] pause[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] exit /b 1[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2])[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set total_files=0[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set converted_files=0[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set error_files=0[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]REM Tanımlı 12 klasörü de taramak için (1,1,12) yaptık[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]for /l %%i in (1,1,12) do ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if defined folders[%%i] ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] echo.[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] echo 🟢 ANA DİZİN [%%i]: !folders[%%i]![/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if exist "!folders[%%i]!" ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] pushd "!folders[%%i]!"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] REM /R parametresi tüm alt klasörlere derinlemesine girer[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] for /r %%f in (*.png *.jpg *.jpeg *.dds *.tga *.tif *.tiff *.bmp) do ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] REM Geçici dosya ismini (temp_output.dds) kontrol et ki kendini tekrar işlemesin[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if /I not "%%~nxf"=="temp_output.dds" ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] set /a total_files+=1[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] call :ConvertFile "%%f"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] )[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] )[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] popd[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ) else ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] echo ✗ DİZİN BULUNAMADI: !folders[%%i]![/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] )[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] )[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2])[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo.[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo ============================================================[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo 📈 İŞLEM TAMAMLANDI[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo ============================================================[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo Toplam Taranan Dosya : %total_files%[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo Başarıyla Dönüştürülen: %converted_files%[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo Hata Alınan : %error_files%[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo ============================================================[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]pause[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]goto :EOF[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]:ConvertFile[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set "full_path=%~1"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set "file_dir=%~dp1"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set "file_name=%~n1"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set "file_ext=%~x1"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo 📄 İşleniyor: %file_name%%file_ext%[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]REM 1. Önce geçici bir dosya olarak BC3 formatında sıkıştır[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]"%NVCOMPRESS%" -bc3 -mip -kaiser "%full_path%" "%file_dir%temp_output.dds" >nul 2>&1[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]if errorlevel 1 ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] echo ❌ HATA: %file_name%%file_ext% dönüştürülemedi.[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] set /a error_files+=1[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if exist "%file_dir%temp_output.dds" del "%file_dir%temp_output.dds"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]) else ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] REM 2. Orijinal dosyayı sil (İster PNG olsun ister eski bir DDS)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if exist "%full_path%" del /f /q "%full_path%"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] REM 3. Eğer hedef isimde zaten bir .dds varsa (farklı uzantıdan geliyorsa) onu da temizle[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if exist "%file_dir%%file_name%.dds" del /f /q "%file_dir%%file_name%.dds"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] REM 4. Geçici dosyaya asıl ismi ver[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ren "%file_dir%temp_output.dds" "%file_name%.dds"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] echo ✅ Başarılı: %file_name%.dds[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] set /a converted_files+=1[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2])[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]exit /b[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][HEADING=2]
[/HEADING][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]@echo off[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]chcp 65001 >nul[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]setlocal enabledelayedexpansion[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set "NVCOMPRESS=C:\Program Files\NVIDIA Corporation\NVIDIA Texture Tools\nvcompress.exe"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]REM Klasör listesi (1'den 12'ye kadar)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set folders[9]=C:\ProjectX\1.Client\pack\yw_zone\ymir work[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo.[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo ============================================================[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo 📁 ALT KLASÖRLER DAHİL ÜZERİNE YAZMA İŞLEMİ BAŞLATILDI[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo ============================================================[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]if not exist "%NVCOMPRESS%" ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] echo ✗ HATA: nvcompress.exe bulunamadı![/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] echo Lütfen yolu kontrol edin: %NVCOMPRESS%[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] pause[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] exit /b 1[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2])[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set total_files=0[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set converted_files=0[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set error_files=0[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]REM Tanımlı 12 klasörü de taramak için (1,1,12) yaptık[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]for /l %%i in (1,1,12) do ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if defined folders[%%i] ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] echo.[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] echo 🟢 ANA DİZİN [%%i]: !folders[%%i]![/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if exist "!folders[%%i]!" ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] pushd "!folders[%%i]!"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] REM /R parametresi tüm alt klasörlere derinlemesine girer[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] for /r %%f in (*.png *.jpg *.jpeg *.dds *.tga *.tif *.tiff *.bmp) do ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] REM Geçici dosya ismini (temp_output.dds) kontrol et ki kendini tekrar işlemesin[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if /I not "%%~nxf"=="temp_output.dds" ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] set /a total_files+=1[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] call :ConvertFile "%%f"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] )[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] )[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] popd[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ) else ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] echo ✗ DİZİN BULUNAMADI: !folders[%%i]![/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] )[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] )[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2])[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo.[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo ============================================================[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo 📈 İŞLEM TAMAMLANDI[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo ============================================================[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo Toplam Taranan Dosya : %total_files%[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo Başarıyla Dönüştürülen: %converted_files%[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo Hata Alınan : %error_files%[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo ============================================================[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]pause[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]goto :EOF[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]:ConvertFile[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set "full_path=%~1"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set "file_dir=%~dp1"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set "file_name=%~n1"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]set "file_ext=%~x1"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]echo 📄 İşleniyor: %file_name%%file_ext%[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]REM 1. Önce geçici bir dosya olarak BC3 formatında sıkıştır[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]"%NVCOMPRESS%" -bc3 -mip -kaiser "%full_path%" "%file_dir%temp_output.dds" >nul 2>&1[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]if errorlevel 1 ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] echo ❌ HATA: %file_name%%file_ext% dönüştürülemedi.[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] set /a error_files+=1[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if exist "%file_dir%temp_output.dds" del "%file_dir%temp_output.dds"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]) else ([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] REM 2. Orijinal dosyayı sil (İster PNG olsun ister eski bir DDS)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if exist "%full_path%" del /f /q "%full_path%"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] REM 3. Eğer hedef isimde zaten bir .dds varsa (farklı uzantıdan geliyorsa) onu da temizle[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if exist "%file_dir%%file_name%.dds" del /f /q "%file_dir%%file_name%.dds"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] REM 4. Geçici dosyaya asıl ismi ver[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ren "%file_dir%temp_output.dds" "%file_name%.dds"[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] echo ✅ Başarılı: %file_name%.dds[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] set /a converted_files+=1[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2])[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]exit /b[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][HEADING=2]bu pack kısmıydı şimdi gelelim c++ olarak yüksek kalite yapma ve gpunun 15 den %40 a çıkma aşaması.
grpdevice.cpp
Kod:
[/HEADING][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]#include <cstring> // std::memset için eklendi[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]int CGraphicDevice::Create(HWND hWnd, int iHres, int iVres, bool Windowed, int /*iBit*/, int iReflashRate)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]{[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] int iRet = CREATE_OK;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] Destroy();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_iWidth = iHres;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_iHeight = iVres;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_hWnd = hWnd;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_hDC = GetDC(hWnd);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_lpd3d = Direct3DCreate8(D3D_SDK_VERSION);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (!ms_lpd3d)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return CREATE_NO_DIRECTX;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (!ms_kD3DDetector.Build(*ms_lpd3d, EL3D_ConfirmDevice))[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return CREATE_ENUM;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] std::string stDevList;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_kD3DDetector.GetString(&stDevList);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3D_CAdapterInfo * pkD3DAdapterInfo = ms_kD3DDetector.GetD3DAdapterInfop(ms_iD3DAdapterInfo);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (!pkD3DAdapterInfo)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] Tracenf("adapter %d is EMPTY", ms_iD3DAdapterInfo);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return CREATE_DETECT;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (__IsInDriverBlackList(*pkD3DAdapterInfo))[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] iRet |= CREATE_BAD_DRIVER;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] __WarningMessage(hWnd, CREATE_BAD_DRIVER);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3D_SModeInfo * pkD3DModeInfo = pkD3DAdapterInfo->GetD3DModeInfop(ms_iD3DDevInfo, ms_iD3DModeInfo);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (!pkD3DModeInfo)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] Tracenf("device %d, mode %d is EMPTY", ms_iD3DDevInfo, ms_iD3DModeInfo);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return CREATE_DETECT;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DADAPTER_IDENTIFIER8& rkD3DAdapterId=pkD3DAdapterInfo->GetIdentifier();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (Windowed &&[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] strnicmp(rkD3DAdapterId.Driver, "3dfx", 4)==0 &&[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] 22 == pkD3DAdapterInfo->GetDesktopD3DDisplayModer().Format)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return CREATE_FORMAT;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (pkD3DModeInfo->m_dwD3DBehavior==D3DCREATE_SOFTWARE_VERTEXPROCESSING)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] iRet |= CREATE_NO_TNL;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] std::string stModeInfo;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] pkD3DModeInfo->GetString(&stModeInfo);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] int ErrorCorrection = 0;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // --- LİMİT YOK: Desteklenen en yüksek MSAA'dan (16X) başlıyoruz ---[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DMULTISAMPLE_TYPE currentMSAA = D3DMULTISAMPLE_16_SAMPLES;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]RETRY:[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] std::memset(&ms_d3dPresentParameter, 0, sizeof(ms_d3dPresentParameter));[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.Windowed = Windowed;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.BackBufferWidth = iHres;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.BackBufferHeight = iVres;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.hDeviceWindow = hWnd;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.BackBufferCount = m_uBackBufferCount;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.SwapEffect = D3DSWAPEFFECT_DISCARD; // MSAA için DİSCARD zorunludur[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Kartın desteklediği maksimum MSAA'yı dayatıyoruz[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.MultiSampleType = currentMSAA;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (Windowed)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.BackBufferFormat = pkD3DAdapterInfo->GetDesktopD3DDisplayModer().Format;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.BackBufferFormat = pkD3DModeInfo->m_eD3DFmtPixel;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // --- FPS LİMİTİNİ KALDIR (VSYNC OFF) ---[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Tam ekran modunda ekran yenileme hızına (örn: 60fps) takılmanı engeller.[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.FullScreen_PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.EnableAutoDepthStencil = TRUE;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.AutoDepthStencilFormat = pkD3DModeInfo->m_eD3DFmtDepthStencil;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_dwD3DBehavior = pkD3DModeInfo->m_dwD3DBehavior;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (FAILED(ms_hLastResult = ms_lpd3d->CreateDevice([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_iD3DAdapterInfo,[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DDEVTYPE_HAL,[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] hWnd,[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] pkD3DModeInfo->m_dwD3DBehavior,[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] &ms_d3dPresentParameter,[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] &ms_lpd3dDevice)))[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // KADEMELİ DÜŞÜŞ: Kart üst seviyeyi desteklemiyorsa bir alt kaliteye geçer. Çökme engellenir.[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (currentMSAA == D3DMULTISAMPLE_16_SAMPLES) { currentMSAA = D3DMULTISAMPLE_8_SAMPLES; goto RETRY; }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else if (currentMSAA == D3DMULTISAMPLE_8_SAMPLES) { currentMSAA = D3DMULTISAMPLE_4_SAMPLES; goto RETRY; }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else if (currentMSAA == D3DMULTISAMPLE_4_SAMPLES) { currentMSAA = D3DMULTISAMPLE_2_SAMPLES; goto RETRY; }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else if (currentMSAA == D3DMULTISAMPLE_2_SAMPLES) { currentMSAA = D3DMULTISAMPLE_NONE; goto RETRY; }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (ErrorCorrection)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return CREATE_DEVICE;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] iReflashRate = 0;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ++ErrorCorrection;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] iRet = CREATE_REFRESHRATE;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] goto RETRY;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Check DXT Support Info[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if(ms_lpd3d->CheckDeviceFormat(ms_iD3DAdapterInfo, D3DDEVTYPE_HAL, ms_d3dPresentParameter.BackBufferFormat, 0, D3DRTYPE_TEXTURE, D3DFMT_DXT1) == D3DERR_NOTAVAILABLE) ms_bSupportDXT = false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if(ms_lpd3d->CheckDeviceFormat(ms_iD3DAdapterInfo, D3DDEVTYPE_HAL, ms_d3dPresentParameter.BackBufferFormat, 0, D3DRTYPE_TEXTURE, D3DFMT_DXT3) == D3DERR_NOTAVAILABLE) ms_bSupportDXT = false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if(ms_lpd3d->CheckDeviceFormat(ms_iD3DAdapterInfo, D3DDEVTYPE_HAL, ms_d3dPresentParameter.BackBufferFormat, 0, D3DRTYPE_TEXTURE, D3DFMT_DXT5) == D3DERR_NOTAVAILABLE) ms_bSupportDXT = false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (FAILED((ms_hLastResult = ms_lpd3dDevice->GetDeviceCaps(&ms_d3dCaps))))[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] Tracenf("IDirect3DDevice.GetDeviceCaps - ERROR %d", ms_hLastResult);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return CREATE_GET_DEVICE_CAPS2;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (!Windowed)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, iHres, iVres, SWP_SHOWWINDOW);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_lpd3dDevice->GetViewport(&ms_Viewport);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_pStateManager = new CStateManager(ms_lpd3dDevice);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXCreateMatrixStack(0, &ms_lpd3dMatStack);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_lpd3dMatStack->LoadIdentity();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_ptVS = CreatePTStreamVertexShader();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_pntVS = CreatePNTStreamVertexShader();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_pnt2VS = CreatePNT2StreamVertexShader();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&ms_matIdentity);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&ms_matView);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&ms_matProj);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&ms_matInverseView);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&ms_matInverseViewYAxis);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&ms_matScreen0);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&ms_matScreen1);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&ms_matScreen2);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_matScreen0._11 = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_matScreen0._22 = -1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_matScreen1._41 = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_matScreen1._42 = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_matScreen2._11 = static_cast<float>(iHres) / 2.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_matScreen2._22 = static_cast<float>(iVres) / 2.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXCreateSphere(ms_lpd3dDevice, 1.0f, 32, 32, &ms_lpSphereMesh, nullptr);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXCreateCylinder(ms_lpd3dDevice, 1.0f, 1.0f, 1.0f, 8, 8, &ms_lpCylinderMesh, nullptr);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_lpd3dDevice->Clear(0L, nullptr, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xff000000, 1.0f, 0);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (!__CreateDefaultIndexBufferList())[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (!__CreatePDTVertexBufferList())[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DWORD dwTexMemSize = GetAvailableTextureMemory();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (dwTexMemSize < 64 * 1024 * 1024)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_isLowTextureMemory = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_isLowTextureMemory = false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (dwTexMemSize > 100 * 1024 * 1024)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_isHighTextureMemory = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_isHighTextureMemory = false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (ms_d3dCaps.TextureAddressCaps & D3DPTADDRESSCAPS_BORDER)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] GRAPHICS_CAPS_CAN_NOT_TEXTURE_ADDRESS_BORDER=false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] GRAPHICS_CAPS_CAN_NOT_TEXTURE_ADDRESS_BORDER=true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (strnicmp(rkD3DAdapterId.Driver, "SIS", 3) == 0)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] GRAPHICS_CAPS_CAN_NOT_DRAW_LINE = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] GRAPHICS_CAPS_CAN_NOT_DRAW_SHADOW = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] GRAPHICS_CAPS_HALF_SIZE_IMAGE = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_isLowTextureMemory = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else if (strnicmp(rkD3DAdapterId.Driver, "3dfx", 4) == 0)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] GRAPHICS_CAPS_CAN_NOT_DRAW_SHADOW = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] GRAPHICS_CAPS_HALF_SIZE_IMAGE = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_isLowTextureMemory = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return (iRet);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]}[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][HEADING=2]
[/HEADING][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]#include <cstring> // std::memset için eklendi[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]int CGraphicDevice::Create(HWND hWnd, int iHres, int iVres, bool Windowed, int /*iBit*/, int iReflashRate)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]{[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] int iRet = CREATE_OK;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] Destroy();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_iWidth = iHres;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_iHeight = iVres;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_hWnd = hWnd;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_hDC = GetDC(hWnd);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_lpd3d = Direct3DCreate8(D3D_SDK_VERSION);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (!ms_lpd3d)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return CREATE_NO_DIRECTX;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (!ms_kD3DDetector.Build(*ms_lpd3d, EL3D_ConfirmDevice))[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return CREATE_ENUM;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] std::string stDevList;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_kD3DDetector.GetString(&stDevList);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3D_CAdapterInfo * pkD3DAdapterInfo = ms_kD3DDetector.GetD3DAdapterInfop(ms_iD3DAdapterInfo);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (!pkD3DAdapterInfo)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] Tracenf("adapter %d is EMPTY", ms_iD3DAdapterInfo);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return CREATE_DETECT;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (__IsInDriverBlackList(*pkD3DAdapterInfo))[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] iRet |= CREATE_BAD_DRIVER;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] __WarningMessage(hWnd, CREATE_BAD_DRIVER);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3D_SModeInfo * pkD3DModeInfo = pkD3DAdapterInfo->GetD3DModeInfop(ms_iD3DDevInfo, ms_iD3DModeInfo);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (!pkD3DModeInfo)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] Tracenf("device %d, mode %d is EMPTY", ms_iD3DDevInfo, ms_iD3DModeInfo);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return CREATE_DETECT;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DADAPTER_IDENTIFIER8& rkD3DAdapterId=pkD3DAdapterInfo->GetIdentifier();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (Windowed &&[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] strnicmp(rkD3DAdapterId.Driver, "3dfx", 4)==0 &&[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] 22 == pkD3DAdapterInfo->GetDesktopD3DDisplayModer().Format)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return CREATE_FORMAT;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (pkD3DModeInfo->m_dwD3DBehavior==D3DCREATE_SOFTWARE_VERTEXPROCESSING)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] iRet |= CREATE_NO_TNL;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] std::string stModeInfo;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] pkD3DModeInfo->GetString(&stModeInfo);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] int ErrorCorrection = 0;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // --- LİMİT YOK: Desteklenen en yüksek MSAA'dan (16X) başlıyoruz ---[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DMULTISAMPLE_TYPE currentMSAA = D3DMULTISAMPLE_16_SAMPLES;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]RETRY:[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] std::memset(&ms_d3dPresentParameter, 0, sizeof(ms_d3dPresentParameter));[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.Windowed = Windowed;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.BackBufferWidth = iHres;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.BackBufferHeight = iVres;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.hDeviceWindow = hWnd;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.BackBufferCount = m_uBackBufferCount;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.SwapEffect = D3DSWAPEFFECT_DISCARD; // MSAA için DİSCARD zorunludur[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Kartın desteklediği maksimum MSAA'yı dayatıyoruz[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.MultiSampleType = currentMSAA;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (Windowed)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.BackBufferFormat = pkD3DAdapterInfo->GetDesktopD3DDisplayModer().Format;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.BackBufferFormat = pkD3DModeInfo->m_eD3DFmtPixel;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // --- FPS LİMİTİNİ KALDIR (VSYNC OFF) ---[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Tam ekran modunda ekran yenileme hızına (örn: 60fps) takılmanı engeller.[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.FullScreen_PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.EnableAutoDepthStencil = TRUE;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_d3dPresentParameter.AutoDepthStencilFormat = pkD3DModeInfo->m_eD3DFmtDepthStencil;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_dwD3DBehavior = pkD3DModeInfo->m_dwD3DBehavior;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (FAILED(ms_hLastResult = ms_lpd3d->CreateDevice([/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_iD3DAdapterInfo,[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DDEVTYPE_HAL,[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] hWnd,[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] pkD3DModeInfo->m_dwD3DBehavior,[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] &ms_d3dPresentParameter,[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] &ms_lpd3dDevice)))[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // KADEMELİ DÜŞÜŞ: Kart üst seviyeyi desteklemiyorsa bir alt kaliteye geçer. Çökme engellenir.[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (currentMSAA == D3DMULTISAMPLE_16_SAMPLES) { currentMSAA = D3DMULTISAMPLE_8_SAMPLES; goto RETRY; }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else if (currentMSAA == D3DMULTISAMPLE_8_SAMPLES) { currentMSAA = D3DMULTISAMPLE_4_SAMPLES; goto RETRY; }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else if (currentMSAA == D3DMULTISAMPLE_4_SAMPLES) { currentMSAA = D3DMULTISAMPLE_2_SAMPLES; goto RETRY; }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else if (currentMSAA == D3DMULTISAMPLE_2_SAMPLES) { currentMSAA = D3DMULTISAMPLE_NONE; goto RETRY; }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (ErrorCorrection)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return CREATE_DEVICE;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] iReflashRate = 0;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ++ErrorCorrection;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] iRet = CREATE_REFRESHRATE;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] goto RETRY;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Check DXT Support Info[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if(ms_lpd3d->CheckDeviceFormat(ms_iD3DAdapterInfo, D3DDEVTYPE_HAL, ms_d3dPresentParameter.BackBufferFormat, 0, D3DRTYPE_TEXTURE, D3DFMT_DXT1) == D3DERR_NOTAVAILABLE) ms_bSupportDXT = false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if(ms_lpd3d->CheckDeviceFormat(ms_iD3DAdapterInfo, D3DDEVTYPE_HAL, ms_d3dPresentParameter.BackBufferFormat, 0, D3DRTYPE_TEXTURE, D3DFMT_DXT3) == D3DERR_NOTAVAILABLE) ms_bSupportDXT = false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if(ms_lpd3d->CheckDeviceFormat(ms_iD3DAdapterInfo, D3DDEVTYPE_HAL, ms_d3dPresentParameter.BackBufferFormat, 0, D3DRTYPE_TEXTURE, D3DFMT_DXT5) == D3DERR_NOTAVAILABLE) ms_bSupportDXT = false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (FAILED((ms_hLastResult = ms_lpd3dDevice->GetDeviceCaps(&ms_d3dCaps))))[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] Tracenf("IDirect3DDevice.GetDeviceCaps - ERROR %d", ms_hLastResult);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return CREATE_GET_DEVICE_CAPS2;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (!Windowed)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, iHres, iVres, SWP_SHOWWINDOW);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_lpd3dDevice->GetViewport(&ms_Viewport);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_pStateManager = new CStateManager(ms_lpd3dDevice);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXCreateMatrixStack(0, &ms_lpd3dMatStack);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_lpd3dMatStack->LoadIdentity();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_ptVS = CreatePTStreamVertexShader();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_pntVS = CreatePNTStreamVertexShader();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_pnt2VS = CreatePNT2StreamVertexShader();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&ms_matIdentity);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&ms_matView);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&ms_matProj);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&ms_matInverseView);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&ms_matInverseViewYAxis);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&ms_matScreen0);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&ms_matScreen1);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&ms_matScreen2);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_matScreen0._11 = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_matScreen0._22 = -1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_matScreen1._41 = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_matScreen1._42 = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_matScreen2._11 = static_cast<float>(iHres) / 2.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_matScreen2._22 = static_cast<float>(iVres) / 2.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXCreateSphere(ms_lpd3dDevice, 1.0f, 32, 32, &ms_lpSphereMesh, nullptr);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXCreateCylinder(ms_lpd3dDevice, 1.0f, 1.0f, 1.0f, 8, 8, &ms_lpCylinderMesh, nullptr);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_lpd3dDevice->Clear(0L, nullptr, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xff000000, 1.0f, 0);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (!__CreateDefaultIndexBufferList())[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (!__CreatePDTVertexBufferList())[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DWORD dwTexMemSize = GetAvailableTextureMemory();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (dwTexMemSize < 64 * 1024 * 1024)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_isLowTextureMemory = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_isLowTextureMemory = false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (dwTexMemSize > 100 * 1024 * 1024)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_isHighTextureMemory = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_isHighTextureMemory = false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (ms_d3dCaps.TextureAddressCaps & D3DPTADDRESSCAPS_BORDER)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] GRAPHICS_CAPS_CAN_NOT_TEXTURE_ADDRESS_BORDER=false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] GRAPHICS_CAPS_CAN_NOT_TEXTURE_ADDRESS_BORDER=true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (strnicmp(rkD3DAdapterId.Driver, "SIS", 3) == 0)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] GRAPHICS_CAPS_CAN_NOT_DRAW_LINE = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] GRAPHICS_CAPS_CAN_NOT_DRAW_SHADOW = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] GRAPHICS_CAPS_HALF_SIZE_IMAGE = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_isLowTextureMemory = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else if (strnicmp(rkD3DAdapterId.Driver, "3dfx", 4) == 0)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] GRAPHICS_CAPS_CAN_NOT_DRAW_SHADOW = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] GRAPHICS_CAPS_HALF_SIZE_IMAGE = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] ms_isLowTextureMemory = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] return (iRet);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]}[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][HEADING=2]statemanager.cpp
Kod:
[/HEADING][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]#include <cstring> // std::memset için eklendi[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]void CStateManager::SetDefaultState()[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]{[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DCAPS8 d3dCaps;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_lpD3DDev->GetDeviceCaps(&d3dCaps);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // SINIRSIZ DOKU NETLİĞİ: Donanımın desteklediği MAKSİMUM Anisotropy seviyesini kullan (örn. 16X, 32X, 64X)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (d3dCaps.TextureFilterCaps & D3DPTFILTERCAPS_MAGFANISOTROPIC)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_dwBestMagFilter = D3DTEXF_ANISOTROPIC;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_dwBestMagFilter = D3DTEXF_LINEAR;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (d3dCaps.TextureFilterCaps & D3DPTFILTERCAPS_MINFANISOTROPIC)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_dwBestMinFilter = D3DTEXF_ANISOTROPIC;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_dwBestMinFilter = D3DTEXF_LINEAR;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Kartın çipi neyi destekliyorsa sonuna kadar köklüyoruz[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DWORD dwMaxAnisotropy = d3dCaps.MaxAnisotropy;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_CurrentState.ResetState();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_CopyState.ResetState();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_ChipState.ResetState();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_bScene = false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_bForce = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMATRIX Identity;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&Identity);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTransform(D3DTS_WORLD, &Identity);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTransform(D3DTS_VIEW, &Identity);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTransform(D3DTS_PROJECTION, &Identity);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DMATERIAL8 DefaultMat;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] std::memset(&DefaultMat, 0, sizeof(D3DMATERIAL8));[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Diffuse.r = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Diffuse.g = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Diffuse.b = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Diffuse.a = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Ambient.r = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Ambient.g = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Ambient.b = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Ambient.a = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Emissive.r = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Emissive.g = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Emissive.b = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Emissive.a = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Specular.r = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Specular.g = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Specular.b = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Specular.a = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Power = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetMaterial(&DefaultMat);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // -------------------------------------------------------------[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // --- ÖZEL DX8 RENDER STATE (KALİTE VE PERFORMANS YAMASI) ---[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // -------------------------------------------------------------[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Temel Işık ve Materyal Ayarları[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_MATERIAL);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_SPECULARMATERIALSOURCE, D3DMCS_MATERIAL);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_AMBIENTMATERIALSOURCE, D3DMCS_MATERIAL);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_EMISSIVEMATERIALSOURCE, D3DMCS_MATERIAL);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Çizgi ve Piksel Kalitesi[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_LINEPATTERN, 0xFFFFFFFF);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_LASTPIXEL, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_EDGEANTIALIAS, TRUE); // MSAA'nın yetmediği poligon köşelerini yumuşatır[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Gelişmiş Alpha Testi (Ağaçlar ve Çimenler için ciddi FPS artışı sağlar)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ALPHATESTENABLE, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ALPHAREF, 0x20); // 32 ve altı şeffaflıktaki pikselleri GPU'dan at[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Z-Buffer (Derinlik) Ayarları[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ZENABLE, TRUE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ZWRITEENABLE, TRUE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ZVISIBLE, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ZBIAS, 0);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Gerçekçi Sis (Radyal Sis) Ayarları[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_FOGENABLE, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_FOGCOLOR, 0xFF000000);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_FOGTABLEMODE, D3DFOG_NONE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_FOGVERTEXMODE, D3DFOG_LINEAR);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_RANGEFOGENABLE, TRUE); // Düz duvar sisini iptal eder, gerçekçi dairesel sis oluşturur![/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Kaliteli Işıklandırma ve Parlamalar (Specular)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_LIGHTING, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_LOCALVIEWER, TRUE); // Parlamaları (Silah/Zırh) kamera açısına göre kusursuz hesaplar[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_NORMALIZENORMALS, TRUE); // Büyütülmüş Boss'ların ve Metin Taşlarının ışık bug'ını çözer[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_SPECULARENABLE, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Çizim, Gölge ve Renk Blend Ayarları[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD); // Yumuşak ışık geçişleri[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_CULLMODE, D3DCULL_CW);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_DITHERENABLE, TRUE); // Renk geçişlerindeki bantlanmayı (Color Banding) önler[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_COLORWRITEENABLE, 0x0000000F); // Tüm renk kanallarına izin ver[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Alpha Blend[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Kullanılmayan/Gereksiz Eski Ayarları Kapat[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_STENCILENABLE, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_STENCILWRITEMASK, 0xFFFFFFFF);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_SOFTWAREVERTEXPROCESSING, FALSE); // İşlemciyi (CPU) kullanmayı yasakla, her şey GPU'da[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_INDEXEDVERTEXBLENDENABLE, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_VERTEXBLEND, D3DVBF_DISABLE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_CLIPPLANEENABLE, 0);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_COLORVERTEX, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Çoklu Örnekleme (MSAA) Maskeleri[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_MULTISAMPLEANTIALIAS, TRUE); // GrpDevice'da açılan MSAA'yı Engine'e yansıt[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_MULTISAMPLEMASK, 0xFFFFFFFF);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // -------------------------------------------------------------[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // --- KOD TEKRARLARINI KALDIRAN OPTİMİZE DÖNGÜ ---[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Orijinaldeki onlarca satırlık spagetti kodları tek bir for döngüsüne topladık[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // -------------------------------------------------------------[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] for (int i = 0; i < 8; ++i)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(static_cast<D3DRENDERSTATETYPE>(D3DRS_WRAP0 + i), 0);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_MAXANISOTROPY, dwMaxAnisotropy);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_MINFILTER, m_dwBestMinFilter);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_MAGFILTER, m_dwBestMagFilter);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_MIPFILTER, D3DTEXF_LINEAR); // MipMap geçişleri hep Linear kalmalı[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_ADDRESSU, D3DTADDRESS_WRAP);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_ADDRESSV, D3DTADDRESS_WRAP);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_COLOROP, D3DTOP_DISABLE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_COLORARG1, D3DTA_TEXTURE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_COLORARG2, D3DTA_DIFFUSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_ALPHAOP, D3DTOP_DISABLE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_TEXCOORDINDEX, i);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_TEXTURETRANSFORMFLAGS, 0);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTexture(i, nullptr);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // İlk aşama (Stage 0) için özel renk blend (Orijinal yapıyı koruyoruz)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_CURRENT);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_CURRENT);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetPixelShader(0);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetVertexShader(D3DFVF_XYZ);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXVECTOR4 av4Null[STATEMANAGER_MAX_VCONSTANTS];[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] std::memset(av4Null, 0, sizeof(av4Null));[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetVertexShaderConstant(0, av4Null, STATEMANAGER_MAX_VCONSTANTS);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetPixelShaderConstant(0, av4Null, STATEMANAGER_MAX_PCONSTANTS);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_bForce = false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]#ifdef _DEBUG[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] for (int i = 0; i < STATEMANAGER_MAX_RENDERSTATES; i++)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_bRenderStateSavingFlag[i] = FALSE;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] for (int j = 0; j < STATEMANAGER_MAX_TRANSFORMSTATES; j++)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_bTransformSavingFlag[j] = FALSE;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] for (int j = 0; j < STATEMANAGER_MAX_STAGES; ++j)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] for (int i = 0; i < STATEMANAGER_MAX_TEXTURESTATES; ++i)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_bTextureStageStateSavingFlag[j][i] = FALSE;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]#endif[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]}[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]
[/HEADING][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]#include <cstring> // std::memset için eklendi[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]void CStateManager::SetDefaultState()[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]{[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DCAPS8 d3dCaps;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_lpD3DDev->GetDeviceCaps(&d3dCaps);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // SINIRSIZ DOKU NETLİĞİ: Donanımın desteklediği MAKSİMUM Anisotropy seviyesini kullan (örn. 16X, 32X, 64X)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (d3dCaps.TextureFilterCaps & D3DPTFILTERCAPS_MAGFANISOTROPIC)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_dwBestMagFilter = D3DTEXF_ANISOTROPIC;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_dwBestMagFilter = D3DTEXF_LINEAR;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] if (d3dCaps.TextureFilterCaps & D3DPTFILTERCAPS_MINFANISOTROPIC)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_dwBestMinFilter = D3DTEXF_ANISOTROPIC;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] else[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_dwBestMinFilter = D3DTEXF_LINEAR;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Kartın çipi neyi destekliyorsa sonuna kadar köklüyoruz[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DWORD dwMaxAnisotropy = d3dCaps.MaxAnisotropy;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_CurrentState.ResetState();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_CopyState.ResetState();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_ChipState.ResetState();[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_bScene = false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_bForce = true;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMATRIX Identity;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXMatrixIdentity(&Identity);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTransform(D3DTS_WORLD, &Identity);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTransform(D3DTS_VIEW, &Identity);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTransform(D3DTS_PROJECTION, &Identity);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DMATERIAL8 DefaultMat;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] std::memset(&DefaultMat, 0, sizeof(D3DMATERIAL8));[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Diffuse.r = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Diffuse.g = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Diffuse.b = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Diffuse.a = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Ambient.r = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Ambient.g = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Ambient.b = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Ambient.a = 1.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Emissive.r = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Emissive.g = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Emissive.b = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Emissive.a = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Specular.r = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Specular.g = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Specular.b = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Specular.a = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] DefaultMat.Power = 0.0f;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetMaterial(&DefaultMat);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // -------------------------------------------------------------[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // --- ÖZEL DX8 RENDER STATE (KALİTE VE PERFORMANS YAMASI) ---[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // -------------------------------------------------------------[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Temel Işık ve Materyal Ayarları[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_MATERIAL);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_SPECULARMATERIALSOURCE, D3DMCS_MATERIAL);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_AMBIENTMATERIALSOURCE, D3DMCS_MATERIAL);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_EMISSIVEMATERIALSOURCE, D3DMCS_MATERIAL);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Çizgi ve Piksel Kalitesi[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_LINEPATTERN, 0xFFFFFFFF);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_LASTPIXEL, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_EDGEANTIALIAS, TRUE); // MSAA'nın yetmediği poligon köşelerini yumuşatır[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Gelişmiş Alpha Testi (Ağaçlar ve Çimenler için ciddi FPS artışı sağlar)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ALPHATESTENABLE, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ALPHAREF, 0x20); // 32 ve altı şeffaflıktaki pikselleri GPU'dan at[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Z-Buffer (Derinlik) Ayarları[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ZENABLE, TRUE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ZWRITEENABLE, TRUE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ZVISIBLE, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ZBIAS, 0);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Gerçekçi Sis (Radyal Sis) Ayarları[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_FOGENABLE, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_FOGCOLOR, 0xFF000000);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_FOGTABLEMODE, D3DFOG_NONE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_FOGVERTEXMODE, D3DFOG_LINEAR);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_RANGEFOGENABLE, TRUE); // Düz duvar sisini iptal eder, gerçekçi dairesel sis oluşturur![/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Kaliteli Işıklandırma ve Parlamalar (Specular)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_LIGHTING, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_LOCALVIEWER, TRUE); // Parlamaları (Silah/Zırh) kamera açısına göre kusursuz hesaplar[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_NORMALIZENORMALS, TRUE); // Büyütülmüş Boss'ların ve Metin Taşlarının ışık bug'ını çözer[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_SPECULARENABLE, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Çizim, Gölge ve Renk Blend Ayarları[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD); // Yumuşak ışık geçişleri[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_CULLMODE, D3DCULL_CW);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_DITHERENABLE, TRUE); // Renk geçişlerindeki bantlanmayı (Color Banding) önler[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_COLORWRITEENABLE, 0x0000000F); // Tüm renk kanallarına izin ver[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Alpha Blend[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Kullanılmayan/Gereksiz Eski Ayarları Kapat[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_STENCILENABLE, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_STENCILWRITEMASK, 0xFFFFFFFF);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_SOFTWAREVERTEXPROCESSING, FALSE); // İşlemciyi (CPU) kullanmayı yasakla, her şey GPU'da[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_INDEXEDVERTEXBLENDENABLE, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_VERTEXBLEND, D3DVBF_DISABLE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_CLIPPLANEENABLE, 0);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_COLORVERTEX, FALSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Çoklu Örnekleme (MSAA) Maskeleri[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_MULTISAMPLEANTIALIAS, TRUE); // GrpDevice'da açılan MSAA'yı Engine'e yansıt[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(D3DRS_MULTISAMPLEMASK, 0xFFFFFFFF);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // -------------------------------------------------------------[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // --- KOD TEKRARLARINI KALDIRAN OPTİMİZE DÖNGÜ ---[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // Orijinaldeki onlarca satırlık spagetti kodları tek bir for döngüsüne topladık[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // -------------------------------------------------------------[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] for (int i = 0; i < 8; ++i)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] {[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetRenderState(static_cast<D3DRENDERSTATETYPE>(D3DRS_WRAP0 + i), 0);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_MAXANISOTROPY, dwMaxAnisotropy);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_MINFILTER, m_dwBestMinFilter);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_MAGFILTER, m_dwBestMagFilter);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_MIPFILTER, D3DTEXF_LINEAR); // MipMap geçişleri hep Linear kalmalı[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_ADDRESSU, D3DTADDRESS_WRAP);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_ADDRESSV, D3DTADDRESS_WRAP);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_COLOROP, D3DTOP_DISABLE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_COLORARG1, D3DTA_TEXTURE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_COLORARG2, D3DTA_DIFFUSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_ALPHAOP, D3DTOP_DISABLE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] [/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_TEXCOORDINDEX, i);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(i, D3DTSS_TEXTURETRANSFORMFLAGS, 0);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTexture(i, nullptr);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] }[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] // İlk aşama (Stage 0) için özel renk blend (Orijinal yapıyı koruyoruz)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_CURRENT);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_CURRENT);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetPixelShader(0);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetVertexShader(D3DFVF_XYZ);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] D3DXVECTOR4 av4Null[STATEMANAGER_MAX_VCONSTANTS];[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] std::memset(av4Null, 0, sizeof(av4Null));[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetVertexShaderConstant(0, av4Null, STATEMANAGER_MAX_VCONSTANTS);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] SetPixelShaderConstant(0, av4Null, STATEMANAGER_MAX_PCONSTANTS);[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_bForce = false;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]#ifdef _DEBUG[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] for (int i = 0; i < STATEMANAGER_MAX_RENDERSTATES; i++)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_bRenderStateSavingFlag[i] = FALSE;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] for (int j = 0; j < STATEMANAGER_MAX_TRANSFORMSTATES; j++)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_bTransformSavingFlag[j] = FALSE;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] for (int j = 0; j < STATEMANAGER_MAX_STAGES; ++j)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] for (int i = 0; i < STATEMANAGER_MAX_TEXTURESTATES; ++i)[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2] m_bTextureStageStateSavingFlag[j][i] = FALSE;[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]#endif[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]}[/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2]
hazır dosyalar
grpdevice.cppdeki
int CGraphicDevice::Create(HWND hWnd, int iHres, int iVres, bool Windowed, int /*iBit*/, int iReflashRate){
değişcek.
statemanager.cppdeki.
void CStateManager::SetDefaultState()
değilcek.
.batın tamamı değişcek
gerisi üstte analttığım gibi


