首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自Mesa的gluPickMatrix代码

来自Mesa的gluPickMatrix代码
EN

Stack Overflow用户
提问于 2011-12-29 03:39:35
回答 1查看 883关注 0票数 0

我研究了一些OpenGL代码,发现了gluPickMatrix函数的Mesa代码:

代码语言:javascript
复制
void gluPickMatrix(GLdouble x, GLdouble y, GLdouble width, GLdouble height, 
GLint viewport[4])
{
 GLfloat m[16];
 GLfloat sx, sy;
 GLfloat tx, ty;

 sx = viewport[2] / width;
 sy = viewport[3] / height;
 tx = (viewport[2] + 2.0 * (viewport[0] - x)) / width;
 ty = (viewport[3] + 2.0 * (viewport[1] - y)) / height;

 #define M(row, col) m[col*4+row]
  M(0, 0) = sx;
  M(0, 1) = 0.0;
  M(0, 2) = 0.0;
  M(0, 3) = tx;
  M(1, 0) = 0.0;
  M(1, 1) = sy;
  M(1, 2) = 0.0;
  M(1, 3) = ty;
  M(2, 0) = 0.0;
  M(2, 1) = 0.0;
  M(2, 2) = 1.0;
  M(2, 3) = 0.0;
  M(3, 0) = 0.0;
  M(3, 1) = 0.0;
  M(3, 2) = 0.0;
  M(3, 3) = 1.0;
 #undef M

 glMultMatrixf(m);
}

在这种情况下,我的疑问是M宏和'col*4+row‘操作。据我所知,这个等式是获取挑选矩阵的索引,然后为它们赋值。

这个宏是不是比简单地使用m=什么更好的方法?

是不是更快?或者更高效?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-29 03:43:44

它不会以任何方式更快,编译器将看到扩展的代码(预处理器在编译器到达之前展开宏)。

这只是一个方便,以节省键入几个字符,并使代码更具可读性-硬编码等效常量将变得不那么清楚。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8660454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档