Tag: rotation

是否可以在Altivec中旋转128位值?

我正在尝试将一些ARM NEON代码移植到AltiVec。 我们的NEON代码有两个LOAD,一个ROT,一个XOR和一个STORE,所以它看起来像一个简单的测试用例。 根据IBM的vec_rl文档: 结果的每个元素是通过将左边的相应元素旋转由b的相应元素指定的位数来获得的。 除了-qarch=power8 ,doc继续说vector unsigned int是最大的数据类型,在这种情况下, vector unsigned long long适用。 我想执行128位旋转,而不是单个元素的32位或64位旋转。 位位置为19,31,67,97和109.它们不是字节对齐的。 (常量来自ARIA分组密码 )。 4×32和2×64是最大的AltiVec数据安排吗? 是否可以在Altivec中旋转128位值? 如果打包旋转是唯一可用的操作,那么最好在C或AltiVec中进行操作吗?

OpenGL旋转2D纹理

UPDATE 请参阅底部以获取更新 我一直在寻找很多互联网,我找到了一些教程,解释了我想要实现的目标,但我无法让它工作,教程不完整或不适用于我的代码。 我正在尝试像在原点(中心)周围旋转2D图像一样简单的事情。 我使用xStart,xEnd,yStart和yEnd来翻转0或1的纹理。 这就是代码的样子 GameRectangle dest = destination; Vector2 position = dest.getPosition(); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, this->image); //If the rotation isn’t 0 we’ll rotate it if (rotation != 0) { glMatrixMode(GL_TEXTURE); glLoadIdentity(); glTranslatef(0.5, 0.5, 0); glRotatef(rotation, 0, 0, 1); glMatrixMode(GL_PROJECTION); } glBegin(GL_QUADS); glTexCoord2d(xStart,yStart); glVertex2f(position.x, position.y); glTexCoord2d(xEnd,yStart); glVertex2f(position.x + this->bounds.getWidth(), position.y); glTexCoord2d(xEnd,yEnd); glVertex2f(position.x + this->bounds.getWidth(), position.y […]