123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315 |
- #pragma once
- #ifndef __spoutGLextensions__
- #define __spoutGLextensions__
- #define USE_FBO_EXTENSIONS
- #include <windows.h>
- #include <stdio.h>
- #ifdef USE_GLEW
- #include <GL\glew.h>
- #include <GL\wglew.h>
- #endif
- #ifndef USE_GLEW
- #include <GL\GL.h>
- #ifndef USE_FBO_EXTENSIONS
- #include "jit.gl.h"
- #define glDeleteFramebuffersEXT (_jit_gl_get_proctable()->DeleteFramebuffersEXT)
- #endif
- #endif
- #ifndef GL_CLAMP_TO_EDGE
- #define GL_CLAMP_TO_EDGE 0x812F
- #endif
- #ifndef GL_READ_FRAMEBUFFER_EXT
- #define GL_READ_FRAMEBUFFER_EXT 0x8CA8
- #endif
- #ifndef GL_DRAW_FRAMEBUFFER_EXT
- #define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9
- #endif
- #ifndef GL_DRAW_FRAMEBUFFER_BINDING_EXT
- #define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6
- #endif
- #ifndef GL_READ_FRAMEBUFFER_BINDING_EXT
- #define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA
- #endif
- #ifndef GL_INVALID_FRAMEBUFFER_OPERATION_EXT
- #define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
- #endif
- #define GLEXT_SUPPORT_NVINTEROP 1
- #define GLEXT_SUPPORT_FBO 2
- #define GLEXT_SUPPORT_FBO_BLIT 4
- #define GLEXT_SUPPORT_PBO 8
- #define GLEXT_SUPPORT_SWAP 16
- #define GL_TEXTURE_2D_MULTISAMPLE 0x9100
- #define WGL_ACCESS_READ_ONLY_NV 0x0000
- #define WGL_ACCESS_READ_WRITE_NV 0x0001
- #define WGL_ACCESS_WRITE_DISCARD_NV 0x0002
- #define GL_CLAMP_TO_EDGE 0x812F
- #define GL_BGR 0x80E0
- #ifndef USE_GLEW
- #define GL_GPU_MEM_INFO_TOTAL_AVAILABLE_MEM_NVX 0x9048
- #define GL_GPU_MEM_INFO_CURRENT_AVAILABLE_MEM_NVX 0x9049
- typedef HANDLE (WINAPI * PFNWGLDXOPENDEVICENVPROC) (void* dxDevice);
- typedef BOOL (WINAPI * PFNWGLDXCLOSEDEVICENVPROC) (HANDLE hDevice);
- typedef HANDLE (WINAPI * PFNWGLDXREGISTEROBJECTNVPROC) (HANDLE hDevice, void* dxObject, GLuint name, GLenum type, GLenum access);
- typedef BOOL (WINAPI * PFNWGLDXUNREGISTEROBJECTNVPROC) (HANDLE hDevice, HANDLE hObject);
- typedef BOOL (WINAPI * PFNWGLDXSETRESOURCESHAREHANDLENVPROC) (void *dxResource, HANDLE shareHandle);
- typedef BOOL (WINAPI * PFNWGLDXLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE *hObjects);
- typedef BOOL (WINAPI * PFNWGLDXUNLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE *hObjects);
- extern PFNWGLDXOPENDEVICENVPROC wglDXOpenDeviceNV;
- extern PFNWGLDXCLOSEDEVICENVPROC wglDXCloseDeviceNV;
- extern PFNWGLDXREGISTEROBJECTNVPROC wglDXRegisterObjectNV;
- extern PFNWGLDXUNREGISTEROBJECTNVPROC wglDXUnregisterObjectNV;
- extern PFNWGLDXSETRESOURCESHAREHANDLENVPROC wglDXSetResourceShareHandleNV;
- extern PFNWGLDXLOCKOBJECTSNVPROC wglDXLockObjectsNV;
- extern PFNWGLDXUNLOCKOBJECTSNVPROC wglDXUnlockObjectsNV;
- #ifdef USE_FBO_EXTENSIONS
- #define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
- #define GL_FRAMEBUFFER_UNDEFINED_EXT 0x8219
- #define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8
- #define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6
- #define GL_RENDERBUFFER_BINDING_EXT 0x8CA7
- #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0
- #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1
- #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2
- #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3
- #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4
- #define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5
- #define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6
- #define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7
- #define GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT 0x8CD8
- #define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9
- #define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA
- #define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB
- #define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC
- #define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD
- #define GL_FRAMEBUFFER_STATUS_ERROR_EXT 0x8CDE
- #define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
- #define GL_COLOR_ATTACHMENT0_EXT 0x8CE0
- #define GL_COLOR_ATTACHMENT1_EXT 0x8CE1
- #define GL_COLOR_ATTACHMENT2_EXT 0x8CE2
- #define GL_COLOR_ATTACHMENT3_EXT 0x8CE3
- #define GL_COLOR_ATTACHMENT4_EXT 0x8CE4
- #define GL_COLOR_ATTACHMENT5_EXT 0x8CE5
- #define GL_COLOR_ATTACHMENT6_EXT 0x8CE6
- #define GL_COLOR_ATTACHMENT7_EXT 0x8CE7
- #define GL_COLOR_ATTACHMENT8_EXT 0x8CE8
- #define GL_COLOR_ATTACHMENT9_EXT 0x8CE9
- #define GL_COLOR_ATTACHMENT10_EXT 0x8CEA
- #define GL_COLOR_ATTACHMENT11_EXT 0x8CEB
- #define GL_COLOR_ATTACHMENT12_EXT 0x8CEC
- #define GL_COLOR_ATTACHMENT13_EXT 0x8CED
- #define GL_COLOR_ATTACHMENT14_EXT 0x8CEE
- #define GL_COLOR_ATTACHMENT15_EXT 0x8CEF
- #define GL_DEPTH_ATTACHMENT_EXT 0x8D00
- #define GL_STENCIL_ATTACHMENT_EXT 0x8D20
- #define GL_FRAMEBUFFER_EXT 0x8D40
- #define GL_RENDERBUFFER_EXT 0x8D41
- #define GL_RENDERBUFFER_WIDTH_EXT 0x8D42
- #define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43
- #define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44
- #define GL_STENCIL_INDEX_EXT 0x8D45
- #define GL_STENCIL_INDEX1_EXT 0x8D46
- #define GL_STENCIL_INDEX4_EXT 0x8D47
- #define GL_STENCIL_INDEX8_EXT 0x8D48
- #define GL_STENCIL_INDEX16_EXT 0x8D49
- #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
- #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
- typedef void (APIENTRY *glBindFramebufferEXTPROC) (GLenum target, GLuint framebuffer);
- typedef void (APIENTRY *glBindRenderbufferEXTPROC) (GLenum target, GLuint renderbuffer);
- typedef GLenum (APIENTRY *glCheckFramebufferStatusEXTPROC) (GLenum target);
- typedef void (APIENTRY *glDeleteFramebuffersEXTPROC) (GLsizei n, const GLuint* framebuffers);
- typedef void (APIENTRY *glDeleteRenderBuffersEXTPROC) (GLsizei n, const GLuint* renderbuffers);
- typedef void (APIENTRY *glFramebufferRenderbufferEXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
- typedef void (APIENTRY *glFramebufferTexture1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
- typedef void (APIENTRY *glFramebufferTexture2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
- typedef void (APIENTRY *glFramebufferTexture3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
- typedef void (APIENTRY *glGenFramebuffersEXTPROC) (GLsizei n, GLuint* framebuffers);
- typedef void (APIENTRY *glGenRenderbuffersEXTPROC) (GLsizei n, GLuint* renderbuffers);
- typedef void (APIENTRY *glGenerateMipmapEXTPROC) (GLenum target);
- typedef void (APIENTRY *glGetFramebufferAttachmentParameterivEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params);
- typedef void (APIENTRY *glGetRenderbufferParameterivEXTPROC) (GLenum target, GLenum pname, GLint* params);
- typedef GLboolean (APIENTRY *glIsFramebufferEXTPROC) (GLuint framebuffer);
- typedef GLboolean (APIENTRY *glIsRenderbufferEXTPROC) (GLuint renderbuffer);
- typedef void (APIENTRY *glRenderbufferStorageEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
- extern glBindFramebufferEXTPROC glBindFramebufferEXT;
- extern glBindRenderbufferEXTPROC glBindRenderbufferEXT;
- extern glCheckFramebufferStatusEXTPROC glCheckFramebufferStatusEXT;
- extern glDeleteFramebuffersEXTPROC glDeleteFramebuffersEXT;
- extern glDeleteRenderBuffersEXTPROC glDeleteRenderBuffersEXT;
- extern glFramebufferRenderbufferEXTPROC glFramebufferRenderbufferEXT;
- extern glFramebufferTexture1DEXTPROC glFramebufferTexture1DEXT;
- extern glFramebufferTexture2DEXTPROC glFramebufferTexture2DEXT;
- extern glFramebufferTexture3DEXTPROC glFramebufferTexture3DEXT;
- extern glGenFramebuffersEXTPROC glGenFramebuffersEXT;
- extern glGenRenderbuffersEXTPROC glGenRenderbuffersEXT;
- extern glGenerateMipmapEXTPROC glGenerateMipmapEXT;
- extern glGetFramebufferAttachmentParameterivEXTPROC glGetFramebufferAttachmentParameterivEXT;
- extern glGetRenderbufferParameterivEXTPROC glGetRenderbufferParameterivEXT;
- extern glIsFramebufferEXTPROC glIsFramebufferEXT;
- extern glIsRenderbufferEXTPROC glIsRenderbufferEXT;
- extern glRenderbufferStorageEXTPROC glRenderbufferStorageEXT;
- #endif
- #define READ_FRAMEBUFFER_EXT 0x8CA8
- #define DRAW_FRAMEBUFFER_EXT 0x8CA9
- typedef void (APIENTRY *glBlitFramebufferEXTPROC) (GLint srcX0,GLint srcY0,GLint srcX1,GLint srcY1,GLint dstX0,GLint dstY0,GLint dstX1,GLint dstY1,GLbitfield mask,GLenum filter);
- extern glBlitFramebufferEXTPROC glBlitFramebufferEXT;
- #ifdef USE_FBO_EXTENSIONS
- typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval);
- typedef int (WINAPI * PFNWGLGETSWAPINTERVALEXTPROC) (void);
- extern PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT;
- extern PFNWGLGETSWAPINTERVALEXTPROC wglGetSwapIntervalEXT;
- #endif
- #ifdef USE_PBO_EXTENSIONS
- #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_STREAM_DRAW 0x88E0
- #define GL_WRITE_ONLY 0x88B9
- typedef ptrdiff_t GLsizeiptr;
- typedef void (APIENTRY *glGenBuffersPROC) (GLsizei n, const GLuint* buffers);
- typedef void (APIENTRY *glDeleteBuffersPROC) (GLsizei n, const GLuint* buffers);
- typedef void (APIENTRY *glBindBufferPROC) (GLenum target, const GLuint buffer);
- typedef void (APIENTRY *glBufferDataPROC) (GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage);
- typedef void * (APIENTRY *glMapBufferPROC) (GLenum target, GLenum access);
- typedef void (APIENTRY *glUnmapBufferPROC) (GLenum target);
- extern glGenBuffersPROC glGenBuffers;
- extern glDeleteBuffersPROC glDeleteBuffers;
- extern glBindBufferPROC glBindBuffer;
- extern glBufferDataPROC glBufferData;
- extern glMapBufferPROC glMapBuffer;
- extern glUnmapBufferPROC glUnmapBuffer;
- #endif
- #endif
- bool InitializeGlew();
- unsigned int loadGLextensions();
- bool loadInteropExtensions();
- bool loadFBOextensions();
- bool loadBLITextension();
- bool loadSwapExtensions();
- bool loadPBOextensions();
- #endif
|