我有一个iOS的OpenGL应用程序,使用kEAGLDrawablePropertyRetainedBacking属性将当前帧绘制在上一帧的顶部,这是一种廉价的获取运动轨迹等效果的方法。
它在所有设备(包括配备视网膜的iPhone)和所有设备模拟器上都很好用,但在实际的iPad 3设备上,上一帧被垂直压缩到其以前大小的75%。
例如,如果我每帧在屏幕底部绘制一个100 x 100的正方形,则在第0帧中有一个正方形,在第2帧中有一个偏向屏幕顶部的100 x 75的回声,在第三帧中有一个更多偏移的100 x 56的额外回声(56 ~= 75 * 0.75),依此类推。应该发生的是所有回声都保持在原地。
我已经验证了两个设备的行为,所以我不认为这只是一个损坏的iPad。
有什么想法吗?
谢谢,
orion
它在所有设备(包括配备视网膜的iPhone)和所有设备模拟器上都很好用,但在实际的iPad 3设备上,上一帧被垂直压缩到其以前大小的75%。
例如,如果我每帧在屏幕底部绘制一个100 x 100的正方形,则在第0帧中有一个正方形,在第2帧中有一个偏向屏幕顶部的100 x 75的回声,在第三帧中有一个更多偏移的100 x 56的额外回声(56 ~= 75 * 0.75),依此类推。应该发生的是所有回声都保持在原地。
我已经验证了两个设备的行为,所以我不认为这只是一个损坏的iPad。
有什么想法吗?
谢谢,
orion
glTexImage2D
之前调用glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
和glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
,则不需要使用二次幂纹理。这将使您的代码更简单、更高效。 - rasmus