如何在OpenGL ES中的子像素上绘制三角形?

时间:2012-05-17 16:16:10

标签: ios opengl-es antialiasing

我正试图在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。我希望在像素之间进行平滑插值,这样动画移动速度非常慢时看起来很漂亮。

我必须做什么才能在子像素之间插入顶点而不是仅仅捕捉像素?

0 个答案:

没有答案