5

为 ipad 开发绘图应用程序,并将其CCRenderTexture用作绘制精灵的画布。我使用的绘制循环基于渲染纹理类的 cocos 示例中的循环。

[target begin];

float distance = ccpDistance(start, end);
if (distance > 1) {
    int d = (int)distance;
    float difx = end.x - start.x;
    float dify = end.y - start.y;
    for (float i = 0; i < d; i+=([self.currentBrush sprite].textureRect.size.width * [self.currentBrush sprite].scale)/4.0f) {
        float delta = i / distance;
        [[self.currentBrush sprite] setPosition:ccp(start.x + (difx * delta), start.y  + (dify * delta))];
        [[self.currentBrush sprite] visit];
    }
} else {
    [[self.currentBrush sprite] setPosition:start];
    [[self.currentBrush sprite] visit];
}

[target end];

每次[target end]调用我都会收到 OpenGL 0x0500 错误:

OpenGL error 0x0500 in -[EAGLView swapBuffers]

它似乎基于{GL_ONE, GL_DST_COLOR}我在“画布”上绘制的精灵的混合功能。当我使用{GL_ONE, GL_ONE}{GL_ONE, GL_ONE_MINUS_SRC_ALPHA}(橡皮擦)时,我没有遇到同样的问题。

该问题存在于设备和模拟器上的 iOS 4.2 和 4.3 上。

这是我第一次使用 OpenGL,所以我在尝试寻找解决方案时感到有点迷茫,任何帮助将不胜感激。

[更新]

我删除了所有函数调用以将混合设置为GL_DST_COLOR似乎是导致错误的原因。删除混合调用(橡皮擦除外)后,它看起来仍然一样,所以我对此很满意。

在阅读了关于同一问题的 cocos2d 论坛帖子后,来到了这个解决方案。

4

1 回答 1

0
May be It's bug in latest version of Cocos2d.It's give the warning and some time Performance is also decrease.I fetch same problem when we put Gesture on the view controller.

Below link is a my question discussion.


**http://stackoverflow.com/questions/21326063/glview-causes-opengl-error?noredirect=1#comment32164422_21326063**
于 2014-02-13T06:56:39.267 回答