游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2612|回复: 1

用DirectShow抓取的视频数据,在OpenGL中如何实时映射到纹理

[复制链接]

6

主题

14

帖子

14

积分

新手上路

Rank: 1

积分
14
QQ
发表于 2010-8-28 12:35:00 | 显示全部楼层 |阅读模式
目的是在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();

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-6-2 11:13:00 | 显示全部楼层

Re:用DirectShow抓取的视频数据,在OpenGL中如何实时映射到

这是我每帧执行的程序
//睡眠1毫秒
Sleep(1);大小,相当于1000帧/秒,正常在25fps左右
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-10 16:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表