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

📄 image.c

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 C
📖 第 1 页 / 共 5 页
字号:
                  for (i=0;i<n;i++) {                     dst[i*4+0] = FLOAT_TO_UINT(rgba[i][BCOMP]);                     dst[i*4+1] = FLOAT_TO_UINT(rgba[i][GCOMP]);                     dst[i*4+2] = FLOAT_TO_UINT(rgba[i][RCOMP]);                     dst[i*4+3] = FLOAT_TO_UINT(rgba[i][ACOMP]);                  }                  break;               case GL_ABGR_EXT:                  for (i=0;i<n;i++) {                     dst[i*4+0] = FLOAT_TO_UINT(rgba[i][ACOMP]);                     dst[i*4+1] = FLOAT_TO_UINT(rgba[i][BCOMP]);                     dst[i*4+2] = FLOAT_TO_UINT(rgba[i][GCOMP]);                     dst[i*4+3] = FLOAT_TO_UINT(rgba[i][RCOMP]);                  }                  break;               default:                  _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");            }         }         break;      case GL_INT:         {            GLint *dst = (GLint *) dstAddr;            switch (dstFormat) {               case GL_RED:                  for (i=0;i<n;i++)                     dst[i] = FLOAT_TO_INT(rgba[i][RCOMP]);                  break;               case GL_GREEN:                  for (i=0;i<n;i++)                     dst[i] = FLOAT_TO_INT(rgba[i][GCOMP]);                  break;               case GL_BLUE:                  for (i=0;i<n;i++)                     dst[i] = FLOAT_TO_INT(rgba[i][BCOMP]);                  break;               case GL_ALPHA:                  for (i=0;i<n;i++)                     dst[i] = FLOAT_TO_INT(rgba[i][ACOMP]);                  break;               case GL_LUMINANCE:                  for (i=0;i<n;i++)                     dst[i] = FLOAT_TO_INT(luminance[i]);                  break;               case GL_LUMINANCE_ALPHA:                  for (i=0;i<n;i++) {                     dst[i*2+0] = FLOAT_TO_INT(luminance[i]);                     dst[i*2+1] = FLOAT_TO_INT(rgba[i][ACOMP]);                  }                  break;               case GL_RGB:                  for (i=0;i<n;i++) {                     dst[i*3+0] = FLOAT_TO_INT(rgba[i][RCOMP]);                     dst[i*3+1] = FLOAT_TO_INT(rgba[i][GCOMP]);                     dst[i*3+2] = FLOAT_TO_INT(rgba[i][BCOMP]);                  }                  break;               case GL_RGBA:                  for (i=0;i<n;i++) {                     dst[i*4+0] = FLOAT_TO_INT(rgba[i][RCOMP]);                     dst[i*4+1] = FLOAT_TO_INT(rgba[i][GCOMP]);                     dst[i*4+2] = FLOAT_TO_INT(rgba[i][BCOMP]);                     dst[i*4+3] = FLOAT_TO_INT(rgba[i][ACOMP]);                  }                  break;               case GL_BGR:                  for (i=0;i<n;i++) {                     dst[i*3+0] = FLOAT_TO_INT(rgba[i][BCOMP]);                     dst[i*3+1] = FLOAT_TO_INT(rgba[i][GCOMP]);                     dst[i*3+2] = FLOAT_TO_INT(rgba[i][RCOMP]);                  }                  break;               case GL_BGRA:                  for (i=0;i<n;i++) {                     dst[i*4+0] = FLOAT_TO_INT(rgba[i][BCOMP]);                     dst[i*4+1] = FLOAT_TO_INT(rgba[i][GCOMP]);                     dst[i*4+2] = FLOAT_TO_INT(rgba[i][RCOMP]);                     dst[i*4+3] = FLOAT_TO_INT(rgba[i][ACOMP]);                  }                  break;               case GL_ABGR_EXT:                  for (i=0;i<n;i++) {                     dst[i*4+0] = FLOAT_TO_INT(rgba[i][ACOMP]);                     dst[i*4+1] = FLOAT_TO_INT(rgba[i][BCOMP]);                     dst[i*4+2] = FLOAT_TO_INT(rgba[i][GCOMP]);                     dst[i*4+3] = FLOAT_TO_INT(rgba[i][RCOMP]);                  }                  break;               default:                  _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");            }         }         break;      case GL_FLOAT:         {            GLfloat *dst = (GLfloat *) dstAddr;            switch (dstFormat) {               case GL_RED:                  for (i=0;i<n;i++)                     dst[i] = rgba[i][RCOMP];                  break;               case GL_GREEN:                  for (i=0;i<n;i++)                     dst[i] = rgba[i][GCOMP];                  break;               case GL_BLUE:                  for (i=0;i<n;i++)                     dst[i] = rgba[i][BCOMP];                  break;               case GL_ALPHA:                  for (i=0;i<n;i++)                     dst[i] = rgba[i][ACOMP];                  break;               case GL_LUMINANCE:                  for (i=0;i<n;i++)                     dst[i] = luminance[i];                  break;               case GL_LUMINANCE_ALPHA:                  for (i=0;i<n;i++) {                     dst[i*2+0] = luminance[i];                     dst[i*2+1] = rgba[i][ACOMP];                  }                  break;               case GL_RGB:                  for (i=0;i<n;i++) {                     dst[i*3+0] = rgba[i][RCOMP];                     dst[i*3+1] = rgba[i][GCOMP];                     dst[i*3+2] = rgba[i][BCOMP];                  }                  break;               case GL_RGBA:                  for (i=0;i<n;i++) {                     dst[i*4+0] = rgba[i][RCOMP];                     dst[i*4+1] = rgba[i][GCOMP];                     dst[i*4+2] = rgba[i][BCOMP];                     dst[i*4+3] = rgba[i][ACOMP];                  }                  break;               case GL_BGR:                  for (i=0;i<n;i++) {                     dst[i*3+0] = rgba[i][BCOMP];                     dst[i*3+1] = rgba[i][GCOMP];                     dst[i*3+2] = rgba[i][RCOMP];                  }                  break;               case GL_BGRA:                  for (i=0;i<n;i++) {                     dst[i*4+0] = rgba[i][BCOMP];                     dst[i*4+1] = rgba[i][GCOMP];                     dst[i*4+2] = rgba[i][RCOMP];                     dst[i*4+3] = rgba[i][ACOMP];                  }                  break;               case GL_ABGR_EXT:                  for (i=0;i<n;i++) {                     dst[i*4+0] = rgba[i][ACOMP];                     dst[i*4+1] = rgba[i][BCOMP];                     dst[i*4+2] = rgba[i][GCOMP];                     dst[i*4+3] = rgba[i][RCOMP];                  }                  break;               default:                  _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");            }         }         break;      case GL_HALF_FLOAT_ARB:         {            GLhalfARB *dst = (GLhalfARB *) dstAddr;            switch (dstFormat) {               case GL_RED:                  for (i=0;i<n;i++)                     dst[i] = _mesa_float_to_half(rgba[i][RCOMP]);                  break;               case GL_GREEN:                  for (i=0;i<n;i++)                     dst[i] = _mesa_float_to_half(rgba[i][GCOMP]);                  break;               case GL_BLUE:                  for (i=0;i<n;i++)                     dst[i] = _mesa_float_to_half(rgba[i][BCOMP]);                  break;               case GL_ALPHA:                  for (i=0;i<n;i++)                     dst[i] = _mesa_float_to_half(rgba[i][ACOMP]);                  break;               case GL_LUMINANCE:                  for (i=0;i<n;i++)                     dst[i] = _mesa_float_to_half(luminance[i]);                  break;               case GL_LUMINANCE_ALPHA:                  for (i=0;i<n;i++) {                     dst[i*2+0] = _mesa_float_to_half(luminance[i]);                     dst[i*2+1] = _mesa_float_to_half(rgba[i][ACOMP]);                  }                  break;               case GL_RGB:                  for (i=0;i<n;i++) {                     dst[i*3+0] = _mesa_float_to_half(rgba[i][RCOMP]);                     dst[i*3+1] = _mesa_float_to_half(rgba[i][GCOMP]);                     dst[i*3+2] = _mesa_float_to_half(rgba[i][BCOMP]);                  }                  break;               case GL_RGBA:                  for (i=0;i<n;i++) {                     dst[i*4+0] = _mesa_float_to_half(rgba[i][RCOMP]);                     dst[i*4+1] = _mesa_float_to_half(rgba[i][GCOMP]);                     dst[i*4+2] = _mesa_float_to_half(rgba[i][BCOMP]);                     dst[i*4+3] = _mesa_float_to_half(rgba[i][ACOMP]);                  }                  break;               case GL_BGR:                  for (i=0;i<n;i++) {                     dst[i*3+0] = _mesa_float_to_half(rgba[i][BCOMP]);                     dst[i*3+1] = _mesa_float_to_half(rgba[i][GCOMP]);                     dst[i*3+2] = _mesa_float_to_half(rgba[i][RCOMP]);                  }                  break;               case GL_BGRA:                  for (i=0;i<n;i++) {                     dst[i*4+0] = _mesa_float_to_half(rgba[i][BCOMP]);                     dst[i*4+1] = _mesa_float_to_half(rgba[i][GCOMP]);                     dst[i*4+2] = _mesa_float_to_half(rgba[i][RCOMP]);                     dst[i*4+3] = _mesa_float_to_half(rgba[i][ACOMP]);                  }                  break;               case GL_ABGR_EXT:                  for (i=0;i<n;i++) {                     dst[i*4+0] = _mesa_float_to_half(rgba[i][ACOMP]);                     dst[i*4+1] = _mesa_float_to_half(rgba[i][BCOMP]);                     dst[i*4+2] = _mesa_float_to_half(rgba[i][GCOMP]);                     dst[i*4+3] = _mesa_float_to_half(rgba[i][RCOMP]);                  }                  break;               default:                  _mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");            }         }         break;      case GL_UNSIGNED_BYTE_3_3_2:         if (dstFormat == GL_RGB) {            GLubyte *dst = (GLubyte *) dstAddr;            for (i=0;i<n;i++) {               dst[i] = (((GLint) (rgba[i][RCOMP] * 7.0F)) << 5)                      | (((GLint) (rgba[i][GCOMP] * 7.0F)) << 2)                      | (((GLint) (rgba[i][BCOMP] * 3.0F))     );            }         }         break;      case GL_UNSIGNED_BYTE_2_3_3_REV:         if (dstFormat == GL_RGB) {            GLubyte *dst = (GLubyte *) dstAddr;            for (i=0;i<n;i++) {               dst[i] = (((GLint) (rgba[i][RCOMP] * 7.0F))     )                      | (((GLint) (rgba[i][GCOMP] * 7.0F)) << 3)                      | (((GLint) (rgba[i][BCOMP] * 3.0F)) << 6);            }         }         break;      case GL_UNSIGNED_SHORT_5_6_5:         if (dstFormat == GL_RGB) {            GLushort *dst = (GLushort *) dstAddr;            for (i=0;i<n;i++) {               dst[i] = (((GLint) (rgba[i][RCOMP] * 31.0F)) << 11)                      | (((GLint) (rgba[i][GCOMP] * 63.0F)) <<  5)                      | (((GLint) (rgba[i][BCOMP] * 31.0F))      );            }         }         break;      case GL_UNSIGNED_SHORT_5_6_5_REV:         if (dstFormat == GL_RGB) {            GLushort *dst = (GLushort *) dstAddr;            for (i=0;i<n;i++) {               dst[i] = (((GLint) (rgba[i][RCOMP] * 31.0F))      )                      | (((GLint) (rgba[i][GCOMP] * 63.0F)) <<  5)                      | (((GLint) (rgba[i][BCOMP] * 31.0F)) << 11);            }         }         break;      case GL_UNSIGNED_SHORT_4_4_4_4:         if (dstFormat == GL_RGBA) {            GLushort *dst = (GLushort *) dstAddr;            for (i=0;i<n;i++) {               dst[i] = (((GLint) (rgba[i][RCOMP] * 15.0F)) << 12)                      | (((GLint) (rgba[i][GCOMP] * 15.0F)) <<  8)                      | (((GLint) (rgba[i][BCOMP] * 15.0F)) <<  4)                      | (((GLint) (rgba[i][ACOMP] * 15.0F))      );            }         }         else if (dstFormat == GL_BGRA) {            GLushort *dst = (GLushort *) dstAddr;            for (i=0;i<n;i++) {               dst[i] = (((GLint) (rgba[i][BCOMP] * 15.0F)) << 12)                      | (((GLint) (rgba[i][GCOMP] * 15.0F)) <<  8)                      | (((GLint) (rgba[i][RCOMP] * 15.0F)) <<  4)                      | (((GLint) (rgba[i][ACOMP] * 15.0F))      );            }         }         else if (dstFormat == GL_ABGR_EXT) {            GLushort *dst = (GLushort *) dstAddr;            for (i=0;i<n;i++) {               dst[i] = (((GLint) (rgba[i][ACOMP] * 15.0F)) << 12)                      | (((GLint) (rgba[i][BCOMP] * 15.0F)) <<  8)                      | (((GLint) (rgba[i][GCOMP] * 15.0F)) <<  4)                      | (((GLint) (rgba[i][RCOMP] * 15.0F))      );            }         }         break;      case GL_UNSIGNED_SHORT_4_4_4_4_REV:         if (dstFormat == GL_RGBA) {            GLushort *dst = (GLushort *) dstAddr;            for (i=0;i<n;i++) {               dst[i] = (((GLint) (rgba[i][RCOMP] * 15.0F))      )                      | (((GLint) (rgba[i][GCOMP] * 15.0F)) <<  4)                      | (((GLint) (rgba[i][BCOMP] * 15.0F)) <<  8)                      | (((GLint) (rgba[i][ACOMP] * 15.0F)) << 12);            }         }         else if (dstFormat == GL_BGRA) {            GLushort *dst = (GLushort *) dstAddr;            for (i=0;i<n;i++) {               dst[i] = (((GLint) (rgba[i][BCOMP] * 15.0F))      )                      | (((GLint) (rgba[i][GCOMP] * 15.0F)) <<  4)                      | (((GLint) (rgba[i][RCOMP] * 15.0F)) <<  8)                      | (((GLint) (rgba[i][ACOMP] * 15.0F)) << 12);            }         }         else if (dstFormat == GL_ABGR_EXT) {            GLushort *dst = (GLushort *) dstAddr;            for (i=0;i<n;i++) {               dst[i] = (((GLint) (rgba[i][ACOMP] * 15.0F))      )                      | (((GLint) (rgba[i][BCOMP] * 15.0F)) <<  4)                      | (((GLint) (rgba[i][GCOMP] * 15.0F)) <<  8)                      | (((GLint) (rgba[i][RCOMP] * 15.0F)) << 12);            }         }         break;      case GL_UNSIGNED_SHORT_5_5_5_1:         if (dstFormat == GL_RGBA) {            GLushort *dst = (GLushort *) dstAddr;            for (i=0;i<n;i++) {               dst[i] = (((GLint) (rgba[i][RCOMP] * 31.0F)) << 11)                      | (((GLint) (rgba[i][GCOMP] * 31.0F)) <<  6)                      | (((GLint) (rgba[i][BCOMP] * 31.0F)) <<  1)                      | (((GLint) (rgba[i][ACOMP] *  1.0F))      );            }         }         else if (dstFormat == GL_BGRA) {            GLushort *dst = (GLushort *) dstAddr;            for (i=0;i<n;i++) {               dst[i] = (((GLint) (rgba[i][BCOMP] * 31.0F)) << 11)                      | (((GLint) (rgba[i][GCOMP] * 31.0F)) <<  6)                      | (((GLint) (rgba[i][RCOMP] * 31.0F)) <<  1)                      | (((GLint) (rgba[i][ACOMP] *  1.0F))      );            }         }         else if (dstFormat == GL_ABGR_EXT) {            GLushort *dst = (GLushort *) dstAddr;            for (i=0;i<n;i++) {               dst[i] = (((GLint) (rgba[i][ACOMP] * 31.0F)) << 11)                      | (((GLint) (rgba[i][BCOMP] * 31.0F)) <<  6)                      | (((GLint) (rgba[i][GCOMP] * 31.0F)) <<  1)                      | (((GLint) (rgba[i][RCOMP] *  1.0F))      );            }         }         break;      case GL_UNSIGNED_SHORT_1_5_5_5_REV:         if (dstFormat == GL_RGBA) {            GLushort *dst = (GLushort *) dstAddr;            for (i=0;i<n;i++) {               dst[i] = (((GLint) (rgba[i][RCOMP] * 31.0F))      )                      | (((GLint) (rgba[i][GCOMP] * 31.0F)) <<  5)                      | (((GLint) (rgba[i][BCOMP] * 31.0F)) << 10)                      | (((GLint) (rgba[i][ACOMP] *  1.0F)) << 15);            }         }         else if (dstFormat == GL_BGRA) {            GLushort *dst = (GLushort *) dstAddr;            for (i=0;i<n;i++) {               dst[i] = (((GLint) (rgba[i][BCOMP] * 31.0F))      )                      | (((GLint) (rgba[i][GCOMP] * 31.0F)) <<  5)                      | (((GLint) (rgba[i][RCOMP] * 31.0F)) << 10)                      | (((GLint) (rgba[i][ACOMP] *  1.0F)) << 15);            }         }         else if (dstFormat == GL_ABGR_EXT) {            GLushort *dst = (GLushort *) dstAddr;            for (i=0;i<n;i++) {               d

⌨️ 快捷键说明

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