私は iOS 用のゲームに取り組んでおり、glDrawArrays (cocos2D v1.0.1 と OpenGL ES 1.1 を使用) を使用したテクスチャで問題が発生しています。最初に、テクスチャ座標の配列とともに、丘の上部と下部を定義する CGPoints の配列を作成します。
hillVertices[nHillVertices] = CGPointMake((topLeftVertexX)*CC_CONTENT_SCALE_FACTOR(), topLeftVertexY*CC_CONTENT_SCALE_FACTOR());
hillTexCoords[nHillVertices] = CGPointMake((topLeftVertexX)/textureSize.width, 0.0);
nHillVerticies++;
hillVertices[nHillVertices] = CGPointMake((bottomLeftVertexX)*CC_CONTENT_SCALE_FACTOR(), bottomLeftVertexY*CC_CONTENT_SCALE_FACTOR());
hillTexCoords[nHillVertices] = CGPointMake(topLeftVertexX)/textureSize.width, 1.0);
nHillVerticies++;
そして、...を使用して描画します
glBindTexture(GL_TEXTURE_2D, groundSprite.texture.name);
glVertexPointer(2, GL_FLOAT, 0, hillVertices);
glTexCoordPointer(2, GL_FLOAT, 0, hillTexCoords);
glDrawArrays(GL_TRIANGLE_STRIP, 0, (nHillVertices-1));
ゲームの開始時 (「topLeftVertexX」の値が小さい場合) は、丘がよく見えます...
しかし、ゲームが進むにつれて、x オフセット値 (topLeftVertexX) が増加し、事態は悪化し始めます...
そして終盤になると調子が悪くなる…
問題はゲーム序盤で「topLeftVertexX」の値が小さいので、
(topLeftVertexX)/textureSize.width
の
hillTexCoords[nHillVertices] = CGPointMake((topLeftVertexX)/textureSize.width, 0.0);
小さいです。ただし、ゲームが進行し、x 値が増加するにつれて、値が大きくなり、何らかの破損が発生する可能性があると思います。textureSize は 512x512 で、「topLeftVertexX」はゲーム開始時に 0 から始まり、約 200,000 まで上がります。
三角形の数を増やしてみました (追加のストリップの追加を含む) が、役に立ちません。@jpsarda のCCSpriteBiCurve クラスも試してみましたが、同じ結果が得られました。glHints (GL_NICEST を使用した GL_LINE_SMOOTH_HINT など) も使用してみましたが、役立つものは見つかりませんでした。
これを修正する方法はありますか?