此代码绘制一个填充的矩形:
void ccDrawFilledRect( CGPoint v1, CGPoint v2 )
{
CGPoint poli[]={v1,CGPointMake(v1.x,v2.y),v2,CGPointMake(v2.x,v1.y)};
// Default GL states: GL_TEXTURE_2D, GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY
// Needed states: GL_VERTEX_ARRAY,
// Unneeded states: GL_TEXTURE_2D, GL_TEXTURE_COORD_ARRAY, GL_COLOR_ARRAY
glDisable(GL_TEXTURE_2D);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
glVertexPointer(2, GL_FLOAT, 0, poli);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
// restore default state
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D);
}
它一直有效,直到我开始使用iPhone 5S和iPad Air。我不明白为什么它不适用于这些设备 - 对其他所有设备都没问题。始终使用最新的iOS版本。
它可能是什么?
我怀疑这很重要,但我一直在使用cocos2d-iphone 1.0.1
。
答案 0 :(得分:1)
固定。
void ccDrawFilledRect( CGPoint v1, CGPoint v2 ) {
float vertices[] = {
v1.x, v1.y, // Bottom left
v2.x, v1.y, // Bottom right
v2.x, v2.y, // Top right
v1.x, v2.y // Top left
};
glDisable(GL_TEXTURE_2D);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
glVertexPointer(2, GL_FLOAT, 0, vertices);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D);
}
不,我完全不知道为什么旧的代码在iPhone 5S和iPad Air中失败了,但是这个新代码现在似乎适用于所有设备。