我正试图在OpenGL ES中动画两个三角形的慢动作。
虽然我的相位偏移是一个浮点数,在运行循环的每次迭代中都会增加0.003f,但我的三角形不会移动一段时间,然后只向右跳一个像素。
GLfloat vertices[ ] = {
rect.origin.x, rect.origin.y + rect.size.height,
rect.origin.x + rect.size.width, rect.origin.y + rect.size.height,
rect.origin.x, rect.origin.y,
rect.origin.x + rect.size.width, rect.origin.y
};
glVertexPointer(2, GL_FLOAT, 0, vertices);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
我确认这些值是小数位浮点数。例如: 0,0.003,0.006,... 0.3,0.303,0.306,......等等。
因此,OpenGL ES不是在像素之间慢慢插值而是向下跳跃。当我将顶点设置为0.5之类的值时,我将它们定位在两个像素之间。但设置为0.6无效,0.7也是,然后它只是捕捉到下一个像素。好像它将这些值四舍五入为完全或可分为0.5。我希望在像素之间进行平滑插值,这样动画移动速度非常慢时看起来很漂亮。
我必须做什么才能在子像素之间插入顶点而不是仅仅捕捉像素?