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

📄 aticontext.cpp

📁 用于GPU通用计算的编程语言BrookGPU 0.4
💻 CPP
字号:
#include "aticontext.hpp"#include "oglfunc.hpp"#ifdef WIN32#ifndef WGL_ATI_pixel_format_float#define WGL_TYPE_RGBA_FLOAT_ATI             0x21A0#define GL_TYPE_RGBA_FLOAT_ATI              0x8820#endif#ifndef WGL_ARB_pixel_format#define WGL_PIXEL_TYPE_ARB             0x2013#endif#else#ifndef GLX_RGBA_FLOAT_ATI_BIT#define GLX_RGBA_FLOAT_ATI_BIT          0x0100#endif#endif#ifndef GL_ATI_texture_float#define GL_RGBA_FLOAT32_ATI               0x8814#define GL_RGB_FLOAT32_ATI                0x8815#define GL_ALPHA_FLOAT32_ATI              0x8816#define GL_INTENSITY_FLOAT32_ATI          0x8817#define GL_LUMINANCE_FLOAT32_ATI          0x8818#define GL_LUMINANCE_ALPHA_FLOAT32_ATI    0x8819#endif#ifndef GLX_RENDER_TYPE#define GLX_RENDER_TYPE                     0x8011#endifusing namespace brook;static const unsigned int atitypes[4] =   {GL_LUMINANCE_FLOAT32_ATI,                 GL_RGBA_FLOAT32_ATI,                 GL_RGB_FLOAT32_ATI,                 GL_RGBA_FLOAT32_ATI};static const unsigned int atiformats[4] =  {GL_RED,                  GL_RGBA,                  GL_RGB,                  GL_RGBA};static const unsigned int sizefactor[4] = { 1, 4, 3, 4 };ATITexture::ATITexture ( size_t inWidth,                        size_t inHeight,                        GPUContext::TextureFormat inFormat) :  OGLTexture(inWidth, inHeight, inFormat,              atiformats, atitypes, sizefactor),  _nativeFormat(atiformats[components()]) {}static const int atiiAttribList[4][64] = {#ifdef WIN32  { WGL_PIXEL_TYPE_ARB, WGL_TYPE_RGBA_FLOAT_ATI, 0, 0 },  { WGL_PIXEL_TYPE_ARB, WGL_TYPE_RGBA_FLOAT_ATI, 0, 0 },  { WGL_PIXEL_TYPE_ARB, WGL_TYPE_RGBA_FLOAT_ATI, 0, 0 },  { WGL_PIXEL_TYPE_ARB, WGL_TYPE_RGBA_FLOAT_ATI, 0, 0 }#else  {  GLX_RENDER_TYPE, GLX_RGBA_FLOAT_ATI_BIT, 0,0},  {  GLX_RENDER_TYPE, GLX_RGBA_FLOAT_ATI_BIT, 0,0},  {  GLX_RENDER_TYPE, GLX_RGBA_FLOAT_ATI_BIT, 0,0},  {  GLX_RENDER_TYPE, GLX_RGBA_FLOAT_ATI_BIT, 0,0}#endif};ATIContext::ATIContext() {}ATIContext *ATIContext::create() {  ATIContext *ctx = new ATIContext();  if (!ctx)    return NULL;  ctx->init(&atiiAttribList, NULL, NULL);  return ctx;}int ATIContext::getShaderFormatRank (const char *name) const {  if( strcmp(name, "arb") == 0 )    return 1;  return -1;}GPUContext::TextureHandle ATIContext::createTexture2D( unsigned int inWidth,                            unsigned int inHeight,                             GPUContext::TextureFormat inFormat) {  return (GPUContext::TextureHandle)     new ATITexture(inWidth, inHeight, inFormat);}static const char atiext[][64] = {  "GL_ARB_fragment_program",  "GL_ARB_vertex_program",  "GL_ATI_draw_buffers",  "GL_EXT_texture_rectangle",  "GL_ATI_texture_float",  ""};boolATIContext::isCompatibleContext () {  const char *ext = (const char *) glGetString(GL_EXTENSIONS);  int p;  for (p = 0; *atiext[p]; p++) {    if (!strstr(ext, atiext[p]))      return false;  }  return true;}boolATIContext::isVendorContext () {  const char *vendor = (const char *) glGetString(GL_VENDOR);  return strstr(vendor, "ATI") != NULL;}

⌨️ 快捷键说明

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