.DDS DirectX 10, converter/viewer |
Добро пожаловать, гость ( Вход | Регистрация )
.DDS DirectX 10, converter/viewer |
-=CHE@TER=- |
Nov 1 2008, 19:50
Сообщение
#1
|
Walter Sullivan Группа: Root Admin Сообщений: 1,355 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 311 раз(а) |
Недалее как вчера пришло письмо с жалобой, на то что 3DMark2005 / 3DMark2006 unpacker криво распаковывает некоторые .DDS файлы из 3DMarkVista: Vantage. Оказывается он распаковывает нормально, просто у большинства .DDS файлов теперь формат DX10 и что-то, типа BCU4 (или типа того, не помню - удалил уже, снова распаковывать сейчас лень, однако, если кому-то понадобятся "образцы" - могу сделать).
Скачал последнюю версию XnView, InfraView и даже какую-то прогу из раздела SDK с сайта nVIDIA - ни одно из этих средств справиться с новым форматом не смогло. Внимание вопрос: кто-нибудь знает софт умеющий работать с этим, новым, форматом .DDS? |
Axsis |
Sep 24 2016, 15:39
Сообщение
#2
|
Advanced Member Группа: CTPAX-X Сообщений: 121 Регистрация: 6-February 08 Пользователь №: 374 Спасибо сказали: 149 раз(а) |
Я тогда написал bms для конвертирования в обычный DDS "обычных" текстур, который работал примерно на 90 процентах текстур которые мне попадались.
Под "обычными" я подразумеваю RGBA, DXT1, DXT3, DXT5 текстуры. Это основные форматы, а вообще их там довольно много бывает, и не у всех есть аналоги в DX9, то есть не любую текстуру DX10 можно сконвертировать в DX9 dx10_to_dds.bms CODE IDString "DDS " GoTo 0x54 GetDString FOURCC 4 If FOURCC == "DX10" Append Log MEMORY_FILE 0 0x80 Get DATA_SIZE asize Math DATA_SIZE -= 0x94 Log MEMORY_FILE 0x94 DATA_SIZE Math DATA_SIZE += 0x80 Append GoTo 0x80 Get DXGI_FORMAT long If DXGI_FORMAT == 0x1D Set FOURCC long 0x00000000 #RGBA PutVarChr MEMORY_FILE 0x50 0x00000041 long PutVarChr MEMORY_FILE 0x58 0x00000020 long PutVarChr MEMORY_FILE 0x5C 0x000000FF long PutVarChr MEMORY_FILE 0x60 0x0000FF00 long PutVarChr MEMORY_FILE 0x64 0x00FF0000 long PutVarChr MEMORY_FILE 0x68 0xFF000000 long ElseIf DXGI_FORMAT == 0x48 Set FOURCC long 0x31545844 #DXT1 ElseIf DXGI_FORMAT == 0x4B Set FOURCC long 0x33545844 #DXT3 ElseIf DXGI_FORMAT == 0x4E Set FOURCC long 0x35545844 #DXT5 Else Print "Unknown DXGI_FORMAT (%DXGI_FORMAT%)" CleanExit EndIf PutVarChr MEMORY_FILE 0x54 FOURCC long Get FNAME basename String FNAME += ".dx9.dds" Log FNAME 0 DATA_SIZE MEMORY_FILE Else Print "Not a DirectX 10 DDS file" EndIf dx10_to_dds.cmd CODE for /r %%I in (*.dds) do "quickbms.exe" dx10_to_dds.bms %%I %%~dpI >>dx10_to_dds.log Спасибо сказали:
|
Упрощённая версия | Сейчас: 28th May 2024 - 15:06 |