【发布时间】:2010-03-07 22:35:41
【问题描述】:
在绘制 OpenGL ES 纹理时,它们似乎“捕捉”到圆形像素位置,就好像绘制位置正在被四舍五入一样。 IE。在 (x:1.1, y:5.4) 绘制实际上在 (x:1, y:5) 绘制。这会导致纹理在滚动时看起来“跳跃”,而不是平滑移动。
是的,我正在为我的顶点等使用浮点类型。
画线等适用于非圆形位置。
纹理的位置只有两个因素:
视口的翻译:
glTranslatef(viewWidth/2.0f, viewHeight/2.0f, 0.0f);抽奖地点:
glVertexPointer(...); // see below
我正在使用以下代码来绘制纹理:
glTranslatef(scrollX, scrollY, 0.0f);
...
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
// Overlay map.
glTexCoordPointer(2, GL_FLOAT, 0, textureSTs);
glBindTexture(GL_TEXTURE_2D, texture.glTtextureKeyD);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
GLfloat vertices[] = {
x1, y2,
x1, y1,
x2, y1,
x2, y2,
};
glVertexPointer(2, GL_FLOAT, 0, vertices);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
我错过了什么吗?
【问题讨论】:
-
scrollX 和 scrollY 的类型是什么?也许即使它们是浮点数,您也可以将它们处理为整数?