0

カメラからのビデオに OpenGL グラフィックを描画しようとしています。Apple のGLCameraRippleサンプルを、いくつかのテクスチャ付き三角形を描画するコードで修正しました。このコードは、別の OpenGL プロジェクト (ただし GLKit なし) でうまく機能します。残念ながら、ここではそのようにしか機能しません。アプリを起動すると、ClearColor で塗りつぶされた画面にテクスチャ付きの三角形が表示されますが (ビデオは表示されません)、すぐに画面が黒くなり、何も表示されません。何が問題なのか説明していただけますか?

- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{

glClearColor(0.5, 0.0, 0.0, 0.3);
glClear(GL_COLOR_BUFFER_BIT);

glUseProgram(_program);

glUniform1i(uniforms[UNIFORM_Y], 0);
glUniform1i(uniforms[UNIFORM_UV], 1);


if (_ripple)
{
    glDrawElements(GL_TRIANGLE_STRIP, [_ripple getIndexCount], GL_UNSIGNED_SHORT, 0);
}

[self drawAnimations];

}


- (void) drawAnimations{

// Use shader program.
glUseProgram(_texturingProgram);

GLfloat modelviewProj[16];
[self MakeMatrix:modelviewProj 
         OriginX:100.0 
         OriginY:100.0 
           Width:200.0 
          Height:200.0
        Rotation:0.0];

// update uniform values
glUniformMatrix4fv(texturing_uniforms[TEXTURING_UNIFORM_MODEL_VIEW_PROJECTION_MATRIX], 1, GL_FALSE, modelviewProj);

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, _animationTexture);
glUniform1i(texturing_uniforms[TEXTURING_UNIFORM_TEXTURE], 0);


glVertexAttribPointer(TEXTURING_ATTRIB_VERTEX,3, GL_FLOAT, GL_FALSE, sizeof(vertexDataTextured), &plain[0].vertex);
glEnableVertexAttribArray(TEXTURING_ATTRIB_VERTEX);

glVertexAttribPointer(TEXTURING_ATTRIB_TEX_COORDS, 2, GL_FLOAT, GL_FALSE, sizeof(vertexDataTextured), &plain[0].texCoord);
glEnableVertexAttribArray(TEXTURING_ATTRIB_TEX_COORDS);

glDrawArrays(GL_TRIANGLES, 0, 6);

if (![self validateProgram:_texturingProgram]) {

    NSLog(@"Failed to validate program: (%d)", _texturingProgram);
}
}
4

1 に答える 1

0

Open GL 描画レイヤーを含む透明な UIView を、カメラ プレビュー イメージ レイヤーを含む別の UIView の上に配置できます。

于 2012-05-06T19:30:53.953 に答える