RayWenderlichによるiOSのダイナミックテクスチャに関するチュートリアルに従おうとしています
http://www.raywenderlich.com/3857/how-to-create-dynamic-textures-with-ccrendertexture
ただし、1.1の代わりにCocos2D2.0とOpenGLES2.0を使用します。チュートリアルは、影のグラデーションが適用された色付きの正方形を画面に描画することから始まりますが、色付きの正方形にグラデーションをレンダリングすることはできません。チュートリアルのこの部分では、OpenGL ESコードがCCRenderTextureに送信されるため、OpenGL ES 2.0コードを間違って設定している必要があると思います(OpenGL / OpenGL ESの経験はほとんどありません)。OpenGLES1.1コードは
glDisable(GL_TEXTURE_2D);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
float gradientAlpha = 0.7;
CGPoint vertices[4];
ccColor4F colors[4];
int nVertices = 0;
vertices[nVertices] = CGPointMake(0, 0);
colors[nVertices++] = (ccColor4F){0, 0, 0, 0 };
vertices[nVertices] = CGPointMake(textureSize, 0);
colors[nVertices++] = (ccColor4F){0, 0, 0, 0};
vertices[nVertices] = CGPointMake(0, textureSize);
colors[nVertices++] = (ccColor4F){0, 0, 0, gradientAlpha};
vertices[nVertices] = CGPointMake(textureSize, textureSize);
colors[nVertices++] = (ccColor4F){0, 0, 0, gradientAlpha};
glVertexPointer(2, GL_FLOAT, 0, vertices);
glColorPointer(4, GL_FLOAT, 0, colors);
glDrawArrays(GL_TRIANGLE_STRIP, 0, (GLsizei)nVertices);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D);
これはCCRenderTexturebegin
とend
メソッドの間にあります(完全なコードは上記のリンクにあります)。私のCocos2D2.0/ OpenGLES2.0の試みは
float gradientAlpha = 0.7;
CGPoint vertices[4];
ccColor4F colors[4];
int nVertices = 0;
vertices[nVertices] = CGPointMake(0, 0);
colors[nVertices++] = (ccColor4F){0, 0, 0, 0 };
vertices[nVertices] = CGPointMake(textureSize, 0);
colors[nVertices++] = (ccColor4F){0, 0, 0, 0};
vertices[nVertices] = CGPointMake(0, textureSize);
colors[nVertices++] = (ccColor4F){0, 0, 0, gradientAlpha};
vertices[nVertices] = CGPointMake(textureSize, textureSize);
colors[nVertices++] = (ccColor4F){0, 0, 0, gradientAlpha};
// Setup OpenGl ES shader programs
CCGLProgram *positionColourProgram = [[CCShaderCache sharedShaderCache] programForKey:kCCShader_PositionColor];
[rt setShaderProgram:positionColourProgram];
ccGLEnableVertexAttribs(kCCVertexAttribFlag_Position | kCCVertexAttribFlag_Color);
glVertexAttribPointer(kCCVertexAttrib_Position, 2, GL_FLOAT, GL_FALSE, 0, vertices);
glVertexAttribPointer(kCCVertexAttrib_Color, 4, GL_FLOAT, GL_FALSE, 0, colors);
glDrawArrays(GL_TRIANGLE_STRIP, 0, (GLsizei)nVertices);
ここrt
で、CCRenderTextureオブジェクトです。コンソールにエラーはありませんが、画面上の画像はグラデーションのない単色の正方形です。おそらくOpenGLブレンディング関数を使用する必要がありますか?どんな助けでも大歓迎です。前もって感謝します。