Steamworks 文献库
ISteamScreenshots 接口
将截图添加入用户的截图库的函数。

参见 Steam 屏幕截图,了解更多信息。

成员函数

ISteamScreenshots 的成员函数通过全局访问器函数 SteamScreenshots() 调用。

AddScreenshotToLibrary

ScreenshotHandle AddScreenshotToLibrary( const char *pchFilename, const char *pchThumbnailFilename, int nWidth, int nHeight );
名称类型描述
pchFilenameconst char *JPG、PNG 及 TGA 截图的绝对文件路径。
pchThumbnailFilenameconst char *可选缩略图图像的绝对文件路径。 宽度必须为 k_ScreenshotThumbWidth 所定义的 200px 宽,且具有相同的宽高比。 如果沒有缩略图,则传入 NULL,将自动创建一个缩略图。
nWidthint截图的宽度。
nWidthint截图的高度。

从磁盘中添加截图至用户的 Steam 截图库。

返回: ScreenshotHandle
触发 ScreenshotReady_t 回调。
在游戏进程期间有效且能用来进行标记的截图句柄。
如果无法保存文件,则返回 INVALID_SCREENSHOT_HANDLE

此调用为异步调用,截图写入磁盘后会发送 ScreenshotReady_t 回调。

AddVRScreenshotToLibrary

ScreenshotHandle AddVRScreenshotToLibrary( EVRScreenshotType eType, const char *pchFilename, const char *pchVRFilename );
名称类型描述
eTypeEVRScreenshotTypeVR 截图类型。
pchFilenameconst char *截图的 2D JPG、PNG 或 TGA 版本的绝对文件路径,用于库视图。
pchVRFilenameconst char *VR 截图的绝对文件路径,应与 eType 中指定的截图类型相同。

从磁盘中以支持的类型添加一张 VR 截图至用户的 Steam 截图库。

返回: ScreenshotHandle
触发 ScreenshotReady_t 回调。
在游戏进程期间有效且能用来进行标记的截图句柄。
如果文件无法保存,则返回 INVALID_SCREENSHOT_HANDLE

此调用为异步调用,截图写入磁盘后会发送 ScreenshotReady_t 回调。

HookScreenshots

void HookScreenshots( bool bHook );
名称类型描述
bHookbool启动(true)或禁用(false)挂钩?

用户按下截图热键时,切换选择是否由界面来处理截图,或者由游戏进行处理。

默认为禁用挂钩,只有使用此函数方可启用。

如果启用挂钩,则用户按下热键或 TriggerScreenshot 被调用时,ScreenshotRequested_t 回调会发送,随后游戏应调用 WriteScreenshotAddScreenshotToLibrary 进行响应。

您可以使用 IsScreenshotsHooked 检查挂钩是否启用。

IsScreenshotsHooked

bool IsScreenshotsHooked();
检查应用是否正在与截图挂钩,或者是否 Steam 界面正在处理截图。

可用 HookScreenshots 进行切换。

返回: bool
true, 表示游戏正在与截图挂钩且会预计对截图进行处理;否则返回 false

SetLocation

bool SetLocation( ScreenshotHandle hScreenshot, const char *pchLocation );
名称类型描述
hScreenshotScreenshotHandle要标记的截图的句柄。
pchLocationconst char *图片在游戏中截取的位置。 不可比 k_cubUFSTagValueMax 中指定的长。

设置截图位置的可选元数据。 例如,截图所截自的地图的名称。

ScreenshotReady_t 回调或通过 WriteScreenshotAddScreenshotToLibraryAddVRScreenshotToLibrary 调用成功保存截图后,可获取句柄对截图进行标记。

返回: bool
true, 表示成功将位置添加至截图。
false, 表示 hScreenshot 为无效,或 pchLocation 无效或太长。

TagPublishedFile

bool TagPublishedFile( ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID );
名称类型描述
hScreenshotScreenshotHandle要标记的截图的句柄。
unPublishedFileIDPublishedFileId_t位于截图中的创意工坊物品的 ID。

将已发布文件标记为在截图中可见。

您在单张截图中可标记的最大数量为 k_nScreenshotMaxTaggedPublishedFiles 所声明的值。 对超量的物品进行的标记操作会被舍弃。

本函数具有内置延迟,可在保存标记前允许您对每个物品反复调用。

ScreenshotReady_t 回调或通过 WriteScreenshotAddScreenshotToLibraryAddVRScreenshotToLibrary 调用成功保存截图后,可获取句柄对截图进行标记。

返回: bool

TagUser

bool TagUser( ScreenshotHandle hScreenshot, CSteamID steamID );
名称类型说明
hScreenshotScreenshotHandle要标记的截图的句柄。
steamIDCSteamID截图中的用户的 ID。

对 Steam 用户标记为在截图中可见。

您在单张截图中可标记的最大数量为 k_nScreenshotMaxTaggedUsers 所声明的值。 对超量的用户进行的标记操作会被舍弃。

本函数具有内置延迟,可在保存标记前允许您对每个物品反复调用。

ScreenshotReady_t 回调或通过 WriteScreenshotAddScreenshotToLibraryAddVRScreenshotToLibrary 调用成功保存截图后,可获取句柄对截图进行标记。

返回: bool

TriggerScreenshot

void TriggerScreenshot();
或者导致 Steam 界面进行截图,或者告知您的截图管理器需要进行截图。 取决于 IsScreenshotsHooked 的值。

返回: void
触发 ScreenshotRequested_t 回调。
触发 ScreenshotReady_t 回调。
如果使用 HookScreenshots 启用挂钩,只会导致 ScreenshotRequested_t 。 否则如果截图已保存并添加至库,会调用 ScreenshotReady_t

WriteScreenshot

ScreenshotHandle WriteScreenshot( void *pubRGB, uint32 cubRGB, int nWidth, int nHeight );
名称类型描述
pubRGBvoid *包含来自截图的原始 RGB 数据的缓冲区。
cubRGBuint32pubRGB 的字节大小。
nWidthint截图的宽度,以像素表示。
nWidthint截图的高度,以像素表示。

将截图的原始图像数据写入用户的 Steam 截图库,必须为 RGB 格式。

返回: ScreenshotHandle
触发 ScreenshotReady_t 回调。
在游戏进程期间有效且能用来进行标记的截图句柄。
如果无法保存文件,则返回 INVALID_SCREENSHOT_HANDLE

此函数为异步调用,截图写入磁盘后会发送 ScreenshotReady_t 回调。

回调

以下是可以通过调用 SteamAPI_RunCallbacks 触发的回调。 其中许多将响应 ISteamScreenshots 的成员函数直接触发。

ScreenshotReady_t

截图成功写入或增加至库中,现在可以进行标记。

名称类型说明
m_hLocalScreenshotHandle已写入的截图句柄。
m_eResultEResult操作结果。 以下为可能值:

关联函数: WriteScreenshot, AddScreenshotToLibrary, TriggerScreenshot, AddVRScreenshotToLibrary

ScreenshotRequested_t

用户使用 Steam 截图热键请求截图。 只有在已启用 HookScreenshots 时才会调用,此时 Steam 不会自行截图。

此回调无字段。

关联函数: TriggerScreenshot

枚举

以下为经过定义来与 ISteamScreenshots 一起使用的枚举。

EVRScreenshotType

描述 VR 截图的类型。

名称描述
k_EVRScreenshotType_None0
k_EVRScreenshotType_Mono1
k_EVRScreenshotType_Stereo2
k_EVRScreenshotType_MonoCubemap3
k_EVRScreenshotType_MonoPanorama4
k_EVRScreenshotType_StereoPanorama5

Typedefs

以下是经过定义来与 ISteamScreenshots 一起使用的 typedefs。

名称基类型描述
ScreenshotHandleuint32截图句柄。 在您整个进程期间有效,之后无效。

常量

以下是经过定义来与 ISteamScreenshots 一起使用的常量。

名称类型描述
INVALID_SCREENSHOT_HANDLEint0无效截图句柄,在写入或添加截图失败时返回。
k_cubUFSTagTypeMaxint255未使用。
k_cubUFSTagValueMaxint255SetLocation 在截图上设置的位置元数据字符串的最大字节数。
k_nScreenshotMaxTaggedPublishedFilesuint3232能在截图中用 TagPublishedFile 进行标记的创意工坊物品的最大数量。
k_nScreenshotMaxTaggedUsersuint3232能在截图中用 TagUser 进行标记的用户的最大数量。
k_ScreenshotThumbWidthint200提供给 AddScreenshotToLibrary 的缩略图所需宽度。 如果您不提供缩略图,则缩略图会自动生成。
STEAMSCREENSHOTS_INTERFACE_VERSIONconst char *"STEAMSCREENSHOTS_INTERFACE_VERSION003"