0
私は自分のiOS Opengl-esアプリでスレッディングを使う方法を学んでいます。私は、OpenGLのゲームのテンプレートのコードを修正しようとしました:glkviewでdispatch_asyncを使用するには?
- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{
glClearColor(0.65f, 0.65f, 0.65f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBindVertexArrayOES(_vertexArray);
// Render the object with GLKit
[self.effect prepareToDraw];
glDrawArrays(GL_TRIANGLES, 0, 36);
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
sleep(1);
dispatch_async(dispatch_get_main_queue(), ^{
// Render the object again with ES2
glUseProgram(_program);
glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEWPROJECTION_MATRIX], 1, 0, _modelViewProjectionMatrix.m);
glUniformMatrix3fv(uniforms[UNIFORM_NORMAL_MATRIX], 1, 0, _normalMatrix.m);
glDrawArrays(GL_TRIANGLES, 0, 36);
});
});
}
それがうまく動作するかどうかそれは60fpsのと1fpsで別のボックスを描画しますが、私は上記のコードを実行すると、それは1つのボックスだけを描画します。
ウェブを検索したところ、問題の原因を見つけることができませんでした。
ありがとうございました!
私はここで同じ問題を偶然見つけました。この回答は絶対に正しいです。しかし、2番目のスレッドで描画を行う方法はありますか? –