a5872955f4
This library is a completely refactored and rewritten version of the original graphics hook. The code is more clean, readable, and has a variety of new features, such as scaling and forcing memory capture. Currently, only D3D9, 10, and 11 are implemented. (This commit may be updated on this branch)
153 lines
6.3 KiB
C
153 lines
6.3 KiB
C
#pragma once
|
|
|
|
typedef unsigned int GLenum;
|
|
typedef unsigned int GLbitfield;
|
|
typedef unsigned int GLuint;
|
|
typedef int GLint;
|
|
typedef int GLsizei;
|
|
typedef unsigned char GLboolean;
|
|
typedef signed char GLbyte;
|
|
typedef short GLshort;
|
|
typedef unsigned char GLubyte;
|
|
typedef unsigned short GLushort;
|
|
typedef unsigned long GLulong;
|
|
typedef float GLfloat;
|
|
typedef float GLclampf;
|
|
typedef double GLdouble;
|
|
typedef double GLclampd;
|
|
typedef void GLvoid;
|
|
typedef ptrdiff_t GLintptrARB;
|
|
typedef ptrdiff_t GLsizeiptrARB;
|
|
|
|
#define GL_FRONT 0x0404
|
|
#define GL_BACK 0x0405
|
|
|
|
#define GL_UNSIGNED_BYTE 0x1401
|
|
|
|
#define GL_RGB 0x1907
|
|
#define GL_RGBA 0x1908
|
|
|
|
#define GL_BGR 0x80E0
|
|
#define GL_BGRA 0x80E1
|
|
|
|
#define GL_NEAREST 0x2600
|
|
#define GL_LINEAR 0x2601
|
|
|
|
#define GL_READ_ONLY 0x88B8
|
|
#define GL_WRITE_ONLY 0x88B9
|
|
#define GL_READ_WRITE 0x88BA
|
|
#define GL_BUFFER_ACCESS 0x88BB
|
|
#define GL_BUFFER_MAPPED 0x88BC
|
|
#define GL_BUFFER_MAP_POINTER 0x88BD
|
|
#define GL_STREAM_DRAW 0x88E0
|
|
#define GL_STREAM_READ 0x88E1
|
|
#define GL_STREAM_COPY 0x88E2
|
|
#define GL_STATIC_DRAW 0x88E4
|
|
#define GL_STATIC_READ 0x88E5
|
|
#define GL_STATIC_COPY 0x88E6
|
|
#define GL_DYNAMIC_DRAW 0x88E8
|
|
#define GL_DYNAMIC_READ 0x88E9
|
|
#define GL_DYNAMIC_COPY 0x88EA
|
|
#define GL_PIXEL_PACK_BUFFER 0x88EB
|
|
#define GL_PIXEL_UNPACK_BUFFER 0x88EC
|
|
#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED
|
|
#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF
|
|
|
|
#define GL_TEXTURE_2D 0x0DE1
|
|
#define GL_TEXTURE_BINDING_2D 0x8069
|
|
#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6
|
|
|
|
#define WGL_ACCESS_READ_ONLY_NV 0x0000
|
|
#define WGL_ACCESS_READ_WRITE_NV 0x0001
|
|
#define WGL_ACCESS_WRITE_DISCARD_NV 0x0002
|
|
|
|
#define GL_READ_FRAMEBUFFER 0x8CA8
|
|
#define GL_DRAW_FRAMEBUFFER 0x8CA9
|
|
#define GL_COLOR_BUFFER_BIT 0x00004000
|
|
#define GL_COLOR_ATTACHMENT0 0x8CE0
|
|
#define GL_COLOR_ATTACHMENT1 0x8CE1
|
|
|
|
typedef void (WINAPI *GLTEXIMAGE2DPROC)(GLenum target, GLint level,
|
|
GLint internal_format, GLsizei width, GLsizei height,
|
|
GLint border, GLenum format, GLenum type, const GLvoid *data);
|
|
typedef void (WINAPI *GLGETTEXIMAGEPROC)(GLenum target, GLint level,
|
|
GLenum format, GLenum type, GLvoid *img);
|
|
typedef void (WINAPI *GLREADBUFFERPROC)(GLenum);
|
|
typedef void (WINAPI *GLDRAWBUFFERPROC)(GLenum mode);
|
|
typedef void (WINAPI *GLGETINTEGERVPROC)(GLenum pname, GLint *params);
|
|
typedef GLenum (WINAPI *GLGETERRORPROC)();
|
|
typedef BOOL (WINAPI *WGLSWAPLAYERBUFFERSPROC)(HDC, UINT);
|
|
typedef BOOL (WINAPI *WGLSWAPBUFFERSPROC)(HDC);
|
|
typedef BOOL (WINAPI *WGLDELETECONTEXTPROC)(HGLRC);
|
|
typedef PROC (WINAPI *WGLGETPROCADDRESSPROC)(LPCSTR);
|
|
typedef BOOL (WINAPI *WGLMAKECURRENTPROC)(HDC, HGLRC);
|
|
typedef HDC (WINAPI *WGLGETCURRENTDCPROC)();
|
|
typedef HGLRC (WINAPI *WGLGETCURRENTCONTEXTPROC)();
|
|
typedef HGLRC (WINAPI *WGLCREATECONTEXTPROC)(HDC);
|
|
typedef void (WINAPI *GLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size,
|
|
const GLvoid* data, GLenum usage);
|
|
typedef void (WINAPI *GLDELETEBUFFERSARBPROC)(GLsizei n, const GLuint* buffers);
|
|
typedef void (WINAPI *GLDELETETEXTURESPROC)(GLsizei n, const GLuint* buffers);
|
|
typedef void (WINAPI *GLGENBUFFERSARBPROC)(GLsizei n, GLuint* buffers);
|
|
typedef void (WINAPI *GLGENTEXTURESPROC)(GLsizei n, GLuint* textures);
|
|
typedef GLvoid* (WINAPI *GLMAPBUFFERPROC)(GLenum target, GLenum access);
|
|
typedef GLboolean (WINAPI *GLUNMAPBUFFERPROC)(GLenum target);
|
|
typedef void (WINAPI *GLBINDBUFFERPROC)(GLenum target, GLuint buffer);
|
|
typedef void (WINAPI *GLBINDTEXTUREPROC)(GLenum target, GLuint texture);
|
|
typedef void (WINAPI *GLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint* buffers);
|
|
typedef void (WINAPI *GLDELETEFRAMEBUFFERSPROC)(GLsizei n,
|
|
GLuint *framebuffers);
|
|
typedef void (WINAPI *GLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer);
|
|
typedef void (WINAPI *GLBLITFRAMEBUFFERPROC)(GLint srcX0, GLint srcY0,
|
|
GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0,
|
|
GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
|
typedef void (WINAPI *GLFRAMEBUFFERTEXTURE2DPROC)(GLenum target,
|
|
GLenum attachment, GLenum textarget, GLuint texture,
|
|
GLint level);
|
|
typedef BOOL (WINAPI *WGLSETRESOURCESHAREHANDLENVPROC)(void*, HANDLE);
|
|
typedef HANDLE (WINAPI *WGLDXOPENDEVICENVPROC)(void*);
|
|
typedef BOOL (WINAPI *WGLDXCLOSEDEVICENVPROC)(HANDLE);
|
|
typedef HANDLE (WINAPI *WGLDXREGISTEROBJECTNVPROC)(HANDLE, void *, GLuint, GLenum, GLenum);
|
|
typedef BOOL (WINAPI *WGLDXUNREGISTEROBJECTNVPROC)(HANDLE, HANDLE);
|
|
typedef BOOL (WINAPI *WGLDXOBJECTACCESSNVPROC)(HANDLE, GLenum);
|
|
typedef BOOL (WINAPI *WGLDXLOCKOBJECTSNVPROC)(HANDLE, GLint, HANDLE *);
|
|
typedef BOOL (WINAPI *WGLDXUNLOCKOBJECTSNVPROC)(HANDLE, GLint, HANDLE *);
|
|
|
|
static GLTEXIMAGE2DPROC glTexImage2D = NULL;
|
|
static GLGETTEXIMAGEPROC glGetTexImage = NULL;
|
|
static GLREADBUFFERPROC glReadBuffer = NULL;
|
|
static GLDRAWBUFFERPROC glDrawBuffer = NULL;
|
|
static GLGETINTEGERVPROC glGetIntegerv = NULL;
|
|
static GLGETERRORPROC glGetError = NULL;
|
|
static WGLSWAPLAYERBUFFERSPROC jimglSwapLayerBuffers = NULL;
|
|
static WGLSWAPBUFFERSPROC jimglSwapBuffers = NULL;
|
|
static WGLDELETECONTEXTPROC jimglDeleteContext = NULL;
|
|
static WGLGETPROCADDRESSPROC jimglGetProcAddress = NULL;
|
|
static WGLMAKECURRENTPROC jimglMakeCurrent = NULL;
|
|
static WGLGETCURRENTDCPROC jimglGetCurrentDC = NULL;
|
|
static WGLGETCURRENTCONTEXTPROC jimglGetCurrentContext = NULL;
|
|
static WGLCREATECONTEXTPROC jimglCreateContext = NULL;
|
|
static GLBUFFERDATAARBPROC glBufferData = NULL;
|
|
static GLDELETEBUFFERSARBPROC glDeleteBuffers = NULL;
|
|
static GLDELETETEXTURESPROC glDeleteTextures = NULL;
|
|
static GLGENBUFFERSARBPROC glGenBuffers = NULL;
|
|
static GLGENTEXTURESPROC glGenTextures = NULL;
|
|
static GLMAPBUFFERPROC glMapBuffer = NULL;
|
|
static GLUNMAPBUFFERPROC glUnmapBuffer = NULL;
|
|
static GLBINDBUFFERPROC glBindBuffer = NULL;
|
|
static GLBINDTEXTUREPROC glBindTexture = NULL;
|
|
static GLGENFRAMEBUFFERSPROC glGenFramebuffers = NULL;
|
|
static GLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers = NULL;
|
|
static GLBINDFRAMEBUFFERPROC glBindFramebuffer = NULL;
|
|
static GLBLITFRAMEBUFFERPROC glBlitFramebuffer = NULL;
|
|
static GLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D = NULL;
|
|
|
|
static WGLSETRESOURCESHAREHANDLENVPROC jimglDXSetResourceShareHandleNV = NULL;
|
|
static WGLDXOPENDEVICENVPROC jimglDXOpenDeviceNV = NULL;
|
|
static WGLDXCLOSEDEVICENVPROC jimglDXCloseDeviceNV = NULL;
|
|
static WGLDXREGISTEROBJECTNVPROC jimglDXRegisterObjectNV = NULL;
|
|
static WGLDXUNREGISTEROBJECTNVPROC jimglDXUnregisterObjectNV = NULL;
|
|
static WGLDXOBJECTACCESSNVPROC jimglDXObjectAccessNV = NULL;
|
|
static WGLDXLOCKOBJECTSNVPROC jimglDXLockObjectsNV = NULL;
|
|
static WGLDXUNLOCKOBJECTSNVPROC jimglDXUnlockObjectsNV = NULL;
|