HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 13.03.2022, 08:57
gaZmanoV
Познающий
Регистрация: 18.09.2019
Сообщений: 31
С нами: 3502227

Репутация: 63
По умолчанию

trash.cpp:





Код:
void
TakeScreenshot
(
)
{
auto
pDevice
=
reinterpret_cast

(
RwD3D9GetCurrentD3DDevice
(
)
)
;
std
::
string sFileName
;
int
iCount
=
GetScreenshotFileName
(
sFileName
)
;
g_Log
.
Write
(
"sFileName: %s"
,
sFileName
.
c_str
(
)
)
;
//LPDIRECT3DTEXTURE9 pFrontBuff;
LPDIRECT3DSURFACE9 pTemp
;
//D3DXCreateTexture(pDevice, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), 1, NULL, D3DFMT_A8R8G8B8,
//D3DPOOL_SCRATCH, &pFrontBuff);
//pFrontBuff->GetSurfaceLevel(0, &pTemp);
pDevice
->
CreateOffscreenPlainSurface
(
GetSystemMetrics
(
SM_CXSCREEN
)
,
GetSystemMetrics
(
SM_CYSCREEN
)
,
D3DFMT_A8R8G8B8
,
D3DPOOL_SCRATCH
,
&
pTemp
,
NULL
)
;
if
(
SUCCEEDED
(
pDevice
->
GetFrontBufferData
(
0
,
pTemp
)
)
)
{
POINT point
{
}
;
ClientToScreen
(
*
*
(
HWND
*
*
)
0xC17054
,
&
point
)
;
RECT rect
;
GetClientRect
(
*
*
(
HWND
*
*
)
0xC17054
,
&
rect
)
;
rect
.
left
+=
point
.
x
;
rect
.
right
+=
point
.
x
;
rect
.
top
+=
point
.
y
;
rect
.
bottom
+=
point
.
y
;
//D3DXSaveTextureToFileA(sFileName.c_str(), D3DXIFF_PNG, pFrontBuff, nullptr);
D3DXSaveSurfaceToFileA
(
sFileName
.
c_str
(
)
,
D3DXIFF_PNG
,
pTemp
,
NULL
,
&
rect
)
;
// 
addChatMessage
(
0x99'00'00
,
"Скриншот сделан - sa-mp-%03i.png"
,
iCount
)
;
}
else
{
g_pSAMP
->
addChatMessage
(
0x99'00'00
,
"Не удалось сохранить скриншот."
)
;
}
pTemp
->
Release
(
)
;
*
LPBOOL
(
g_sampBase
.
getAddress
(
0x12DD3C
)
)
=
FALSE
;
// g_bTakeScreenshot
}


Если в качестве D3DXIMAGE_FILEFORMAT использовать D3DXIFF_PNG, то ничего толкового не сохраняется.



Но, если заменить на D3DXIFF_JPG, то изображение получается нормальным.



Мне jpg не нужен, нужен именно png. Как быть? Попробовал даже обновить DXSDK, но ничего не поменялось. Если использовать функу из SAMP(вызов импла, __imp_D3DXSaveSurfaceToFileA), то всё ок. что я делаю не так?😢
 
Ответить с цитированием
 



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.