Praca nad aplikacją do rysowania dla iPada i używaniem CCRenderTexture
jako płótna, na którym maluje się sprite. Pętla rysowania, której używam, jest oparta na przykładzie z przykładu cocos dla klasy tekstury renderowania.Błąd OpenGL 500 w cocos2D-iphone na końcu CCRenderTexture
[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];
każdym razem [target end]
nazywa pojawia się błąd OpenGL 0x0500:
OpenGL error 0x0500 in -[EAGLView swapBuffers]
wydaje się być oparty na funkcji mieszania {GL_ONE, GL_DST_COLOR}
na duchy, które maluję na płótnie „”. Kiedy używam {GL_ONE, GL_ONE}
lub {GL_ONE, GL_ONE_MINUS_SRC_ALPHA}
(Eraser), nie mam tego samego problemu.
Problem występuje na iOS 4.2 i 4.3 zarówno na urządzeniu, jak i na symulatorze.
Jest to moja pierwsza praca z OpenGL, więc czuję się trochę zagubiony w próbach znalezienia rozwiązania, każda pomoc byłaby bardzo ceniona.
[Aktualizacja]
usunąłem wszystkie wywołania funkcji, aby ustawić mieszanie jak GL_DST_COLOR
zdawała się być jednym przyczyną błędu. Po usunięciu połączeń mieszania (z wyjątkiem gumki) nadal wygląda tak samo, więc jestem z tego zadowolony.
Przyszły do tego rozwiązania po przeczytaniu a cocos2d forum post w odniesieniu do tego samego problemu.
Wygląda na to, że wpis na forum już nie istnieje? Właściwie to ciekawa jest dyskusja na temat Cocos2D. Może link został zerwany? –