|
目的是在OpenGL中播放一个视频,我每33毫秒,调用glTexSubImage2D替换一个800*600的数据,cpu会100%。怎么解决?
OpenGL中有没有更快的办法?
这是我每帧执行的程序
//睡眠1毫秒
Sleep(1);
if( GetTickCount() - tick < 33 )
return;
tick = GetTickCount();
glClear( GL_COLOR_BUFFER_BIT );
glBindTexture(GL_TEXTURE_2D, texture_id[0]);
// 替换纹理数据
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, g->GetWidth(), g->GetHeight(), GL_BGR_EXT, GL_UNSIGNED_BYTE, testdata);
// 画矩形
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-5.0f, -5.0f, 5.0f); // 纹理和四边形的左下
glTexCoord2f(1.0f, 0.0f); glVertex3f( 5.0f, -5.0f, 5.0f); // 纹理和四边形的右下
glTexCoord2f(1.0f, 1.0f); glVertex3f( 5.0f, 5.0f, 5.0f); // 纹理和四边形的右上
glTexCoord2f(0.0f, 1.0f); glVertex3f(-5.0f, 5.0f, 5.0f); // 纹理和四边形的左上
glEnd();
// 交换缓存
glutSwapBuffers(); |
|