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

📄 m_xform_tmp.h

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 H
📖 第 1 页 / 共 2 页
字号:
static void _XFORMAPITAG(transform_points3_general)( GLvector4f *to_vec,				const GLfloat m[16],				const GLvector4f *from_vec ){   const GLuint stride = from_vec->stride;   GLfloat *from = from_vec->start;   GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start;   GLuint count = from_vec->count;   const GLfloat m0 = m[0],  m4 = m[4],  m8 = m[8],  m12 = m[12];   const GLfloat m1 = m[1],  m5 = m[5],  m9 = m[9],  m13 = m[13];   const GLfloat m2 = m[2],  m6 = m[6],  m10 = m[10],  m14 = m[14];   const GLfloat m3 = m[3],  m7 = m[7],  m11 = m[11],  m15 = m[15];   GLuint i;   STRIDE_LOOP {      const GLfloat ox = from[0], oy = from[1], oz = from[2];      to[i][0] = m0 * ox + m4 * oy + m8  * oz + m12;      to[i][1] = m1 * ox + m5 * oy + m9  * oz + m13;      to[i][2] = m2 * ox + m6 * oy + m10 * oz + m14;      to[i][3] = m3 * ox + m7 * oy + m11 * oz + m15;   }   to_vec->size = 4;   to_vec->flags |= VEC_SIZE_4;   to_vec->count = from_vec->count;}static void _XFORMAPITAG(transform_points3_identity)( GLvector4f *to_vec,				 const GLfloat m[16],				 const GLvector4f *from_vec ){   const GLuint stride = from_vec->stride;   GLfloat *from = from_vec->start;   GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start;   GLuint count = from_vec->count;   GLuint i;   (void) m;   if (to_vec == from_vec) return;   STRIDE_LOOP {      to[i][0] = from[0];      to[i][1] = from[1];      to[i][2] = from[2];   }   to_vec->size = 3;   to_vec->flags |= VEC_SIZE_3;   to_vec->count = from_vec->count;}static void _XFORMAPITAG(transform_points3_2d)( GLvector4f *to_vec,			   const GLfloat m[16],			   const GLvector4f *from_vec ){   const GLuint stride = from_vec->stride;   GLfloat *from = from_vec->start;   GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start;   GLuint count = from_vec->count;   const GLfloat m0 = m[0], m1 = m[1], m4 = m[4], m5 = m[5];   const GLfloat m12 = m[12], m13 = m[13];   GLuint i;   STRIDE_LOOP {      const GLfloat ox = from[0], oy = from[1], oz = from[2];      to[i][0] = m0 * ox + m4 * oy            + m12       ;      to[i][1] = m1 * ox + m5 * oy            + m13       ;      to[i][2] =                   +       oz             ;   }   to_vec->size = 3;   to_vec->flags |= VEC_SIZE_3;   to_vec->count = from_vec->count;}static void _XFORMAPITAG(transform_points3_2d_no_rot)( GLvector4f *to_vec,				  const GLfloat m[16],				  const GLvector4f *from_vec ){   const GLuint stride = from_vec->stride;   GLfloat *from = from_vec->start;   GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start;   GLuint count = from_vec->count;   const GLfloat m0 = m[0], m5 = m[5], m12 = m[12], m13 = m[13];   GLuint i;   STRIDE_LOOP {      const GLfloat ox = from[0], oy = from[1], oz = from[2];      to[i][0] = m0 * ox                      + m12       ;      to[i][1] =           m5 * oy            + m13       ;      to[i][2] =                   +       oz             ;   }   to_vec->size = 3;   to_vec->flags |= VEC_SIZE_3;   to_vec->count = from_vec->count;}static void _XFORMAPITAG(transform_points3_3d)( GLvector4f *to_vec,			   const GLfloat m[16],			   const GLvector4f *from_vec ){   const GLuint stride = from_vec->stride;   GLfloat *from = from_vec->start;   GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start;   GLuint count = from_vec->count;   const GLfloat m0 = m[0], m1 = m[1], m2 = m[2], m4 = m[4], m5 = m[5];   const GLfloat m6 = m[6], m8 = m[8], m9 = m[9], m10 = m[10];   const GLfloat m12 = m[12], m13 = m[13], m14 = m[14];   GLuint i;   STRIDE_LOOP {      const GLfloat ox = from[0], oy = from[1], oz = from[2];      to[i][0] = m0 * ox + m4 * oy +  m8 * oz + m12       ;      to[i][1] = m1 * ox + m5 * oy +  m9 * oz + m13       ;      to[i][2] = m2 * ox + m6 * oy + m10 * oz + m14       ;   }   to_vec->size = 3;   to_vec->flags |= VEC_SIZE_3;   to_vec->count = from_vec->count;}/* previously known as ortho... */static void _XFORMAPITAG(transform_points3_3d_no_rot)( GLvector4f *to_vec,				  const GLfloat m[16],				  const GLvector4f *from_vec ){   const GLuint stride = from_vec->stride;   GLfloat *from = from_vec->start;   GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start;   GLuint count = from_vec->count;   const GLfloat m0 = m[0], m5 = m[5];   const GLfloat m10 = m[10], m12 = m[12], m13 = m[13], m14 = m[14];   GLuint i;   STRIDE_LOOP {      const GLfloat ox = from[0], oy = from[1], oz = from[2];      to[i][0] = m0 * ox                      + m12       ;      to[i][1] =           m5 * oy            + m13       ;      to[i][2] =                     m10 * oz + m14       ;   }   to_vec->size = 3;   to_vec->flags |= VEC_SIZE_3;   to_vec->count = from_vec->count;}static void _XFORMAPITAG(transform_points3_perspective)( GLvector4f *to_vec,				    const GLfloat m[16],				    const GLvector4f *from_vec ){   const GLuint stride = from_vec->stride;   GLfloat *from = from_vec->start;   GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start;   GLuint count = from_vec->count;   const GLfloat m0 = m[0], m5 = m[5], m8 = m[8], m9 = m[9];   const GLfloat m10 = m[10], m14 = m[14];   GLuint i;   STRIDE_LOOP {      const GLfloat ox = from[0], oy = from[1], oz = from[2];      to[i][0] = m0 * ox           + m8  * oz       ;      to[i][1] =           m5 * oy + m9  * oz       ;      to[i][2] =                     m10 * oz + m14 ;      to[i][3] =                          -oz       ;   }   to_vec->size = 4;   to_vec->flags |= VEC_SIZE_4;   to_vec->count = from_vec->count;}static void _XFORMAPITAG(transform_points4_general)( GLvector4f *to_vec,				const GLfloat m[16],				const GLvector4f *from_vec ){   const GLuint stride = from_vec->stride;   GLfloat *from = from_vec->start;   GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start;   GLuint count = from_vec->count;   const GLfloat m0 = m[0],  m4 = m[4],  m8 = m[8],  m12 = m[12];   const GLfloat m1 = m[1],  m5 = m[5],  m9 = m[9],  m13 = m[13];   const GLfloat m2 = m[2],  m6 = m[6],  m10 = m[10],  m14 = m[14];   const GLfloat m3 = m[3],  m7 = m[7],  m11 = m[11],  m15 = m[15];   GLuint i;   STRIDE_LOOP {      const GLfloat ox = from[0], oy = from[1], oz = from[2], ow = from[3];      to[i][0] = m0 * ox + m4 * oy + m8  * oz + m12 * ow;      to[i][1] = m1 * ox + m5 * oy + m9  * oz + m13 * ow;      to[i][2] = m2 * ox + m6 * oy + m10 * oz + m14 * ow;      to[i][3] = m3 * ox + m7 * oy + m11 * oz + m15 * ow;   }   to_vec->size = 4;   to_vec->flags |= VEC_SIZE_4;   to_vec->count = from_vec->count;}static void _XFORMAPITAG(transform_points4_identity)( GLvector4f *to_vec,				 const GLfloat m[16],				 const GLvector4f *from_vec ){   const GLuint stride = from_vec->stride;   GLfloat *from = from_vec->start;   GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start;   GLuint count = from_vec->count;   GLuint i;   (void) m;   if (to_vec == from_vec) return;   STRIDE_LOOP {      to[i][0] = from[0];      to[i][1] = from[1];      to[i][2] = from[2];      to[i][3] = from[3];   }   to_vec->size = 4;   to_vec->flags |= VEC_SIZE_4;   to_vec->count = from_vec->count;}static void _XFORMAPITAG(transform_points4_2d)( GLvector4f *to_vec,			   const GLfloat m[16],			   const GLvector4f *from_vec ){   const GLuint stride = from_vec->stride;   GLfloat *from = from_vec->start;   GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start;   GLuint count = from_vec->count;   const GLfloat m0 = m[0], m1 = m[1], m4 = m[4], m5 = m[5];   const GLfloat m12 = m[12], m13 = m[13];   GLuint i;   STRIDE_LOOP {      const GLfloat ox = from[0], oy = from[1], oz = from[2], ow = from[3];      to[i][0] = m0 * ox + m4 * oy            + m12 * ow;      to[i][1] = m1 * ox + m5 * oy            + m13 * ow;      to[i][2] =                   +       oz           ;      to[i][3] =                                      ow;   }   to_vec->size = 4;   to_vec->flags |= VEC_SIZE_4;   to_vec->count = from_vec->count;}static void _XFORMAPITAG(transform_points4_2d_no_rot)( GLvector4f *to_vec,				  const GLfloat m[16],				  const GLvector4f *from_vec ){   const GLuint stride = from_vec->stride;   GLfloat *from = from_vec->start;   GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start;   GLuint count = from_vec->count;   const GLfloat m0 = m[0], m5 = m[5], m12 = m[12], m13 = m[13];   GLuint i;   STRIDE_LOOP {      const GLfloat ox = from[0], oy = from[1], oz = from[2], ow = from[3];      to[i][0] = m0 * ox                      + m12 * ow;      to[i][1] =           m5 * oy            + m13 * ow;      to[i][2] =                   +       oz           ;      to[i][3] =                                      ow;   }   to_vec->size = 4;   to_vec->flags |= VEC_SIZE_4;   to_vec->count = from_vec->count;}static void _XFORMAPITAG(transform_points4_3d)( GLvector4f *to_vec,			   const GLfloat m[16],			   const GLvector4f *from_vec ){   const GLuint stride = from_vec->stride;   GLfloat *from = from_vec->start;   GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start;   GLuint count = from_vec->count;   const GLfloat m0 = m[0], m1 = m[1], m2 = m[2], m4 = m[4], m5 = m[5];   const GLfloat m6 = m[6], m8 = m[8], m9 = m[9], m10 = m[10];   const GLfloat m12 = m[12], m13 = m[13], m14 = m[14];   GLuint i;   STRIDE_LOOP {      const GLfloat ox = from[0], oy = from[1], oz = from[2], ow = from[3];      to[i][0] = m0 * ox + m4 * oy +  m8 * oz + m12 * ow;      to[i][1] = m1 * ox + m5 * oy +  m9 * oz + m13 * ow;      to[i][2] = m2 * ox + m6 * oy + m10 * oz + m14 * ow;      to[i][3] =                                      ow;   }   to_vec->size = 4;   to_vec->flags |= VEC_SIZE_4;   to_vec->count = from_vec->count;}static void _XFORMAPITAG(transform_points4_3d_no_rot)( GLvector4f *to_vec,				  const GLfloat m[16],				  const GLvector4f *from_vec ){   const GLuint stride = from_vec->stride;   GLfloat *from = from_vec->start;   GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start;   GLuint count = from_vec->count;   const GLfloat m0 = m[0], m5 = m[5];   const GLfloat m10 = m[10], m12 = m[12], m13 = m[13], m14 = m[14];   GLuint i;   STRIDE_LOOP {      const GLfloat ox = from[0], oy = from[1], oz = from[2], ow = from[3];      to[i][0] = m0 * ox                      + m12 * ow;      to[i][1] =           m5 * oy            + m13 * ow;      to[i][2] =                     m10 * oz + m14 * ow;      to[i][3] =                                      ow;   }   to_vec->size = 4;   to_vec->flags |= VEC_SIZE_4;   to_vec->count = from_vec->count;}static void _XFORMAPITAG(transform_points4_perspective)( GLvector4f *to_vec,				    const GLfloat m[16],				    const GLvector4f *from_vec ){   const GLuint stride = from_vec->stride;   GLfloat *from = from_vec->start;   GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start;   GLuint count = from_vec->count;   const GLfloat m0 = m[0], m5 = m[5], m8 = m[8], m9 = m[9];   const GLfloat m10 = m[10], m14 = m[14];   GLuint i;   STRIDE_LOOP {      const GLfloat ox = from[0], oy = from[1], oz = from[2], ow = from[3];      to[i][0] = m0 * ox           + m8  * oz            ;      to[i][1] =           m5 * oy + m9  * oz            ;      to[i][2] =                     m10 * oz + m14 * ow ;      to[i][3] =                          -oz            ;   }   to_vec->size = 4;   to_vec->flags |= VEC_SIZE_4;   to_vec->count = from_vec->count;}static transform_func TAG(transform_tab_1)[7];static transform_func TAG(transform_tab_2)[7];static transform_func TAG(transform_tab_3)[7];static transform_func TAG(transform_tab_4)[7];/* Similar functions could be called several times, with more highly * optimized routines overwriting the arrays.  This only occurs during * startup. */static void _XFORMAPI TAG(init_c_transformations)( void ){#define TAG_TAB   _mesa_transform_tab#define TAG_TAB_1 TAG(transform_tab_1)#define TAG_TAB_2 TAG(transform_tab_2)#define TAG_TAB_3 TAG(transform_tab_3)#define TAG_TAB_4 TAG(transform_tab_4)   TAG_TAB[1] = TAG_TAB_1;   TAG_TAB[2] = TAG_TAB_2;   TAG_TAB[3] = TAG_TAB_3;   TAG_TAB[4] = TAG_TAB_4;   /* 1-D points (ie texcoords) */   TAG_TAB_1[MATRIX_GENERAL]     = TAG(transform_points1_general);   TAG_TAB_1[MATRIX_IDENTITY]    = TAG(transform_points1_identity);   TAG_TAB_1[MATRIX_3D_NO_ROT]   = TAG(transform_points1_3d_no_rot);   TAG_TAB_1[MATRIX_PERSPECTIVE] = TAG(transform_points1_perspective);   TAG_TAB_1[MATRIX_2D]          = TAG(transform_points1_2d);   TAG_TAB_1[MATRIX_2D_NO_ROT]   = TAG(transform_points1_2d_no_rot);   TAG_TAB_1[MATRIX_3D]          = TAG(transform_points1_3d);   /* 2-D points */   TAG_TAB_2[MATRIX_GENERAL]     = TAG(transform_points2_general);   TAG_TAB_2[MATRIX_IDENTITY]    = TAG(transform_points2_identity);   TAG_TAB_2[MATRIX_3D_NO_ROT]   = TAG(transform_points2_3d_no_rot);   TAG_TAB_2[MATRIX_PERSPECTIVE] = TAG(transform_points2_perspective);   TAG_TAB_2[MATRIX_2D]          = TAG(transform_points2_2d);   TAG_TAB_2[MATRIX_2D_NO_ROT]   = TAG(transform_points2_2d_no_rot);   TAG_TAB_2[MATRIX_3D]          = TAG(transform_points2_3d);   /* 3-D points */   TAG_TAB_3[MATRIX_GENERAL]     = TAG(transform_points3_general);   TAG_TAB_3[MATRIX_IDENTITY]    = TAG(transform_points3_identity);   TAG_TAB_3[MATRIX_3D_NO_ROT]   = TAG(transform_points3_3d_no_rot);   TAG_TAB_3[MATRIX_PERSPECTIVE] = TAG(transform_points3_perspective);   TAG_TAB_3[MATRIX_2D]          = TAG(transform_points3_2d);   TAG_TAB_3[MATRIX_2D_NO_ROT]   = TAG(transform_points3_2d_no_rot);   TAG_TAB_3[MATRIX_3D]          = TAG(transform_points3_3d);   /* 4-D points */   TAG_TAB_4[MATRIX_GENERAL]     = TAG(transform_points4_general);   TAG_TAB_4[MATRIX_IDENTITY]    = TAG(transform_points4_identity);   TAG_TAB_4[MATRIX_3D_NO_ROT]   = TAG(transform_points4_3d_no_rot);   TAG_TAB_4[MATRIX_PERSPECTIVE] = TAG(transform_points4_perspective);   TAG_TAB_4[MATRIX_2D]          = TAG(transform_points4_2d);   TAG_TAB_4[MATRIX_2D_NO_ROT]   = TAG(transform_points4_2d_no_rot);   TAG_TAB_4[MATRIX_3D]          = TAG(transform_points4_3d);#undef TAG_TAB#undef TAG_TAB_1#undef TAG_TAB_2#undef TAG_TAB_3#undef TAG_TAB_4}

⌨️ 快捷键说明

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