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

📄 oglfunc.cpp

📁 用于GPU通用计算的编程语言BrookGPU 0.4
💻 CPP
字号:
#ifdef WIN32#include <windows.h>#else#define GLX_GLXEXT_LEGACY#include <GL/glx.h>#endif#include <GL/gl.h>#include "oglfunc.hpp"#include "../gpucontext.hpp"#define XXX(type, fn) \   type fn;#ifdef WIN32RUNTIME_BONUS_WGL_FNS#endifRUNTIME_BONUS_GL_FNSRUNTIME_BONUS_GL_FNS_ATIRUNTIME_BONUS_GL_FNS_NV#undef XXXstatic bool hasextension(const char *ext) {  const char *extensions = (const char *) glGetString(GL_EXTENSIONS);  return (strstr(extensions, ext) != NULL);}static void checkextension (const char *ext) {   if (!hasextension(ext)) {      const char *card = (const char *) glGetString(GL_RENDERER);      fprintf (stderr, "Extension %s not found for graphics card: \n %s\n",               ext, card);      exit(1);  }}               void brook::initglfunc(void) {   checkextension("GL_ARB_fragment_program");   checkextension("GL_ARB_multitexture");      if (!hasextension("GL_NV_texture_rectangle") &&       !hasextension("GL_ARB_texture_rectangle") &&       !hasextension("GL_EXT_texture_rectangle")) {      const char *card = (const char *) glGetString(GL_RENDERER);      fprintf (stderr, "Texture Rectangle extension not found for "               "graphics card: \n %s\n", card);      exit(1);   }#ifdef WIN32#define  XXX(type, fn) fn = (type) wglGetProcAddress(#fn); \                       GPUAssert(fn, "Failed to load" #fn);#else#define  XXX(type, fn) fn = (type) glXGetProcAddressARB((const GLubyte *) #fn); \                       GPUAssert(fn, "Failed to load" #fn);#endif  RUNTIME_BONUS_GL_FNS;#ifdef WIN32  RUNTIME_BONUS_WGL_FNS;#endif#undef XXX   #ifdef WIN32#define  XXX(type, fn) fn = (type) wglGetProcAddress(#fn);#else#define  XXX(type, fn) fn = (type) glXGetProcAddressARB((const GLubyte *) #fn);#endif  RUNTIME_BONUS_GL_FNS_ATI;  RUNTIME_BONUS_GL_FNS_NV;}

⌨️ 快捷键说明

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