我正在尝试为 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。我想要像素之间的平滑插值,因此当它移动非常缓慢时动画看起来不错。
我必须怎么做才能在子像素之间插入顶点,而不仅仅是捕捉到一个像素?