簡體   English   中英

無法在iPhone 5S和iPad Air中繪制實心矩形

[英]Can't draw a filled rectangle in iPhone 5S and iPad Air

此代碼繪制一個填充的矩形:

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

固定。

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中會失敗,但是這種新代碼現在似乎可以在所有設備上使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM