⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defines.h

📁 基于GPU进行快速科学计算
💻 H
字号:
/******************************************************************************\

  Copyright 2005 The University of North Carolina at Chapel Hill.
  All Rights Reserved.

  Permission to use, copy, modify and distribute this software and its
  documentation for educational, research and non-profit purposes, without
  fee, and without a written agreement is hereby granted, provided that the
  above copyright notice and the following three paragraphs appear in all
  copies. Any use in a commercial organization requires a separate license.

  IN NO EVENT SHALL THE UNIVERSITY OF NORTH CAROLINA AT CHAPEL HILL BE LIABLE
  TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
  DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
  ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF NORTH CAROLINA HAVE BEEN
  ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.


  Permission to use, copy, modify and distribute this software and its
  documentation for educational, research and non-profit purposes, without
  fee, and without a written agreement is hereby granted, provided that the
  above copyright notice and the following three paragraphs appear in all
  copies.

  THE UNIVERSITY OF NORTH CAROLINA SPECIFICALLY DISCLAIM ANY WARRANTIES,
  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS ON AN
  "AS IS" BASIS, AND THE UNIVERSITY OF NORTH CAROLINA HAS NO OBLIGATION TO
  PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.


   ---------------------------------
  |Please send all BUG REPORTS to:  |
  |                                 |
  |   geom@cs.unc.edu               |
  |                                 |
   ---------------------------------


  The authors may be contacted via:

  US Mail:         N. Govindaraju 
                       Department of Computer Science
                       Sitterson Hall, CB #3175
                       University of North Carolina
                       Chapel Hill, NC 27599-3175

\*****************************************************************************/
#ifndef __DEFINES_H_
#define __DEFINES_H_

#if(defined _WIN64 || defined WIN32)
#include <windows.h>
#else

#ifndef APIENTRY
#define APIENTRY
#endif

#include <GL/glx.h>

#endif

typedef bool (APIENTRY * PFNIsRenderbufferEXT)(unsigned int renderbuffer);
typedef void (APIENTRY * PFNBindRenderbufferEXT)(int target, unsigned int renderbuffer);
typedef void (APIENTRY * PFNDeleteRenderbuffersEXT)(GLsizei n, const unsigned int *renderbuffers);
typedef void (APIENTRY * PFNGenRenderbuffersEXT)(GLsizei n, unsigned int *renderbuffers);

typedef void (APIENTRY * PFNRenderbufferStorageEXT)(int target, int internalformat,
							GLsizei width, GLsizei height);

typedef void (APIENTRY * PFNGetRenderbufferParameterivEXT)(int target, int pname, int* params);

typedef bool (APIENTRY * PFNIsFramebufferEXT)(unsigned int framebuffer);
typedef void (APIENTRY * PFNBindFramebufferEXT)(int target, unsigned int framebuffer);
typedef void (APIENTRY * PFNDeleteFramebuffersEXT)(GLsizei n, const unsigned int *framebuffers);
typedef void (APIENTRY * PFNGenFramebuffersEXT)(GLsizei n, unsigned int *framebuffers);
typedef void (APIENTRY * PFNFramebufferTexture1DEXT)(int target, int attachment,
							 int textarget, unsigned int texture,
							 int level);
typedef void (APIENTRY * PFNFramebufferTexture2DEXT)(int target, int attachment,
							 int textarget, unsigned int texture,
							 int level);
typedef void (APIENTRY * PFNFramebufferTexture3DEXT)(int target, int attachment,
							 int textarget, unsigned int texture,
							 int level, int zoffset);

typedef void (APIENTRY * PFNFramebufferRenderbufferEXT)(int target, int attachment,
								int renderbuffertarget, unsigned int renderbuffer);

typedef void (APIENTRY * PFNGetFramebufferAttachmentParameterivEXT)(unsigned int target, int attachment,
											int pname, int *params);

typedef void (APIENTRY * PFNGenerateMipmapEXT)(unsigned int target);
typedef void (APIENTRY * PFNGLDrawBuffersARB)(GLsizei n, unsigned int *bufs); 
typedef void (APIENTRY * PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
typedef void (APIENTRY * PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);

#define WGL_FRONT_LEFT_ARB 0x2083
#define WGL_BACK_LEFT_ARB 0x2085

#define GL_TEXTURE0_ARB 0x84C0
#define GL_TEXTURE1_ARB 0x84C1
#define GL_TEXTURE2_ARB 0x84C2
#define GL_TEXTURE3_ARB 0x84C3
#define GL_TEXTURE4_ARB 0x84C4
#define GL_TEXTURE5_ARB 0x84C5
#define GL_TEXTURE6_ARB 0x84C6
#define GL_TEXTURE7_ARB 0x84C7
#define GL_TEXTURE8_ARB 0x84C8
#define GL_TEXTURE9_ARB 0x84C9
#define GL_TEXTURE_RECTANGLE_NV 0x84F5
#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 
#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8
#define GL_FLOAT_RGBA16_NV 0x888A
#define GL_FLOAT_RGBA32_NV 0x888B

#define GL_TEXTURE0 0x84C0
#define GL_TEXTURE1 0x84C1
#define GL_TEXTURE2 0x84C2
#define GL_TEXTURE3 0x84C3
#define GL_TEXTURE4 0x84C4
#define GL_TEXTURE5 0x84C5
#define GL_TEXTURE6 0x84C6
#define GL_TEXTURE7 0x84C7
#define GL_TEXTURE8 0x84C8
#define GL_TEXTURE9 0x84C9


#define		    GL_FRAMEBUFFER_EXT                     0x8D40
#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

typedef void (APIENTRY * PFNGLActiveTextureARB) (GLint texture);

PFNIsRenderbufferEXT glIsRenderbufferEXT;
PFNBindRenderbufferEXT glBindRenderbufferEXT;
PFNDeleteRenderbuffersEXT glDeleteRenderbuffersEXT;
PFNGenRenderbuffersEXT glGenRenderbuffersEXT;
PFNRenderbufferStorageEXT glRenderbufferStorageEXT;
PFNGetRenderbufferParameterivEXT glGetRenderbufferParameterivEXT;
PFNIsFramebufferEXT glIsFramebufferEXT;
PFNBindFramebufferEXT glBindFramebufferEXT;
PFNDeleteFramebuffersEXT glDeleteFramebuffersEXT;
PFNGenFramebuffersEXT glGenFramebuffersEXT;
PFNFramebufferTexture1DEXT glFramebufferTexture1DEXT;
PFNFramebufferTexture2DEXT glFramebufferTexture2DEXT;
PFNFramebufferTexture3DEXT glFramebufferTexture3DEXT;
PFNFramebufferRenderbufferEXT glFramebufferRenderbufferEXT;
PFNGetFramebufferAttachmentParameterivEXT glGetFramebufferAttachmentParameterivEXT;
PFNGenerateMipmapEXT glGenerateMipmapEXT;

PFNGLMULTITEXCOORD2FPROC glMultiTexCoord2f;
PFNGLMULTITEXCOORD3FPROC glMultiTexCoord3f;
PFNGLActiveTextureARB glActiveTextureARB;

PFNGLDrawBuffersARB glDrawBuffers;


void InitARBFP();

void InitFBOExts(){
#if(defined _WIN64 || defined WIN32)
glIsRenderbufferEXT = (PFNIsRenderbufferEXT) wglGetProcAddress("glIsRenderbufferEXT");
glBindRenderbufferEXT = (PFNBindRenderbufferEXT)  wglGetProcAddress("glBindRenderbufferEXT");
glDeleteRenderbuffersEXT = (PFNDeleteRenderbuffersEXT)  wglGetProcAddress("glDeleteRenderbuffersEXT");
glGenRenderbuffersEXT = (PFNGenRenderbuffersEXT ) wglGetProcAddress("glGenRenderbuffersEXT");
glRenderbufferStorageEXT = (PFNRenderbufferStorageEXT ) wglGetProcAddress("glRenderbufferStorageEXT");
glGetRenderbufferParameterivEXT =(PFNGetRenderbufferParameterivEXT ) wglGetProcAddress("glGetRenderbufferParameterivEXT");
glIsFramebufferEXT =(PFNIsFramebufferEXT ) wglGetProcAddress("glIsFramebufferEXT");
glBindFramebufferEXT =(PFNBindFramebufferEXT ) wglGetProcAddress("glBindFramebufferEXT");
glDeleteFramebuffersEXT =(PFNDeleteFramebuffersEXT ) wglGetProcAddress("glDeleteFramebuffersEXT");
glGenFramebuffersEXT =(PFNGenFramebuffersEXT ) wglGetProcAddress("glGenFramebuffersEXT");
glFramebufferTexture1DEXT =(PFNFramebufferTexture1DEXT ) wglGetProcAddress("glFramebufferTexture1DEXT");
glFramebufferTexture2DEXT =(PFNFramebufferTexture2DEXT ) wglGetProcAddress("glFramebufferTexture2DEXT");
glFramebufferTexture3DEXT =(PFNFramebufferTexture3DEXT ) wglGetProcAddress("glFramebufferTexture3DEXT");
glFramebufferRenderbufferEXT =(PFNFramebufferRenderbufferEXT ) wglGetProcAddress("glFramebufferRenderbufferEXT");
glGetFramebufferAttachmentParameterivEXT =(PFNGetFramebufferAttachmentParameterivEXT ) wglGetProcAddress("glGetFramebufferAttachmentParameterivEXT");
glGenerateMipmapEXT =(PFNGenerateMipmapEXT ) wglGetProcAddress("glGenerateMipmapEXT");

glActiveTextureARB = (PFNGLActiveTextureARB) wglGetProcAddress("glActiveTextureARB");
glDrawBuffers = (PFNGLDrawBuffersARB) wglGetProcAddress("glDrawBuffers");
glMultiTexCoord2f = (PFNGLMULTITEXCOORD2FPROC) wglGetProcAddress("glMultiTexCoord2f");
glMultiTexCoord3f = (PFNGLMULTITEXCOORD3FPROC) wglGetProcAddress("glMultiTexCoord3f");

#else

glIsRenderbufferEXT = (PFNIsRenderbufferEXT) glXGetProcAddressARB((const GLubyte *) "glIsRenderbufferEXT");
glBindRenderbufferEXT = (PFNBindRenderbufferEXT)  glXGetProcAddressARB((const GLubyte *) "glBindRenderbufferEXT");
glDeleteRenderbuffersEXT = (PFNDeleteRenderbuffersEXT)  glXGetProcAddressARB((const GLubyte *) "glDeleteRenderbuffersEXT");
glGenRenderbuffersEXT = (PFNGenRenderbuffersEXT ) glXGetProcAddressARB((const GLubyte *) "glGenRenderbuffersEXT");
glRenderbufferStorageEXT = (PFNRenderbufferStorageEXT ) glXGetProcAddressARB((const GLubyte *) "glRenderbufferStorageEXT");
glGetRenderbufferParameterivEXT =(PFNGetRenderbufferParameterivEXT ) glXGetProcAddressARB((const GLubyte *) "glGetRenderbufferParameterivEXT");
glIsFramebufferEXT =(PFNIsFramebufferEXT ) glXGetProcAddressARB((const GLubyte *) "glIsFramebufferEXT");
glBindFramebufferEXT =(PFNBindFramebufferEXT ) glXGetProcAddressARB((const GLubyte *) "glBindFramebufferEXT");
glDeleteFramebuffersEXT =(PFNDeleteFramebuffersEXT ) glXGetProcAddressARB((const GLubyte *) "glDeleteFramebuffersEXT");
glGenFramebuffersEXT =(PFNGenFramebuffersEXT ) glXGetProcAddressARB((const GLubyte *) "glGenFramebuffersEXT");
glFramebufferTexture1DEXT =(PFNFramebufferTexture1DEXT ) glXGetProcAddressARB((const GLubyte *) "glFramebufferTexture1DEXT");
glFramebufferTexture2DEXT =(PFNFramebufferTexture2DEXT ) glXGetProcAddressARB((const GLubyte *) "glFramebufferTexture2DEXT");
glFramebufferTexture3DEXT =(PFNFramebufferTexture3DEXT ) glXGetProcAddressARB((const GLubyte *) "glFramebufferTexture3DEXT");
glFramebufferRenderbufferEXT =(PFNFramebufferRenderbufferEXT ) glXGetProcAddressARB((const GLubyte *) "glFramebufferRenderbufferEXT");
glGetFramebufferAttachmentParameterivEXT =(PFNGetFramebufferAttachmentParameterivEXT ) glXGetProcAddressARB((const GLubyte *) "glGetFramebufferAttachmentParameterivEXT");
glGenerateMipmapEXT =(PFNGenerateMipmapEXT ) glXGetProcAddressARB((const GLubyte *) "glGenerateMipmapEXT");

glActiveTextureARB = (PFNGLActiveTextureARB) glXGetProcAddressARB((const GLubyte *) "glActiveTextureARB");
glDrawBuffers = (PFNGLDrawBuffersARB) glXGetProcAddressARB((const GLubyte *)"glDrawBuffers");
glMultiTexCoord2f = (PFNGLMULTITEXCOORD2FPROC) glXGetProcAddressARB((const GLubyte *)"glMultiTexCoord2f");
glMultiTexCoord3f = (PFNGLMULTITEXCOORD3FPROC) glXGetProcAddressARB((const GLubyte *)"glMultiTexCoord3f");

#endif
InitARBFP();
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -