最简单的Direct3D播放视频的例子(Direct3D[Texture]播放RGB)
Simplest Video Play Direct3D (Direct3D[Texture] play RGB)
雷霄骅 Lei Xiaohua
leixiaohua1020@126.com
中国传媒大学/数字电视技术
Communication University of China / Digital TV Technology
http://blog.csdn.net/leixiaohua1020
本程序使用Direct3D播放RGB/YUV视频像素数据。使用D3D中的Texture渲染数据。
相对于使用Surface渲染视频数据来说,使用Texture渲染视频数据功能更加灵活,
但是学习起来也会相对复杂一些。
函数调用步骤如下:
[初始化]
Direct3DCreate9():获得IDirect3D9
IDirect3D9->CreateDevice():通过IDirect3D9创建Device(设备)
IDirect3DDevice9->CreateTexture():通过Device创建一个Texture(纹理)。
IDirect3DDevice9->CreateVertexBuffer():通过Device创建一个VertexBuffer(顶点缓存)。
IDirect3DVertexBuffer9->Lock():锁定顶点缓存。
memcpy():填充顶点缓存。
IDirect3DVertexBuffer9->Unlock():解锁顶点缓存。
[循环渲染数据]
IDirect3DTexture9->LockRect():锁定纹理。
memcpy():填充纹理数据
IDirect3DTexture9->UnLockRect():解锁纹理。
IDirect3DDevice9->BeginScene():开始绘制。
IDirect3DDevice9->SetTexture():设置当前要渲染的纹理。
IDirect3DDevice9->SetStreamSource():绑定VertexBuffer。
IDirect3DDevice9->SetFVF():设置Vertex格式。
IDirect3DDevice9->DrawPrimitive():渲染。
IDirect3DDevice9->EndScene():结束绘制。
IDirect3DDevice9->Present():显示出来。
This software plays RGB/YUV raw video data using Direct3D.
It uses Texture in D3D to render the pixel data.
Compared to another method (use Surface), it's more flexible
but a little difficult.
The process is shown as follows:
[Init]
Direct3DCreate9():Get IDirect3D9.
IDirect3D9->CreateDevice():Create a Device.
IDirect3DDevice9->CreateTexture():Create a Texture.
IDirect3DDevice9->CreateVertexBuffer():Create a VertexBuffer.
IDirect3DVertexBuffer9->Lock():Lock VertexBuffer.
memcpy():Fill VertexBuffer.
IDirect3DVertexBuffer9->Unlock():UnLock VertexBuffer.
[Loop to Render data]
IDirect3DTexture9->LockRect():Lock Texture.
memcpy():Fill pixel data...
IDirect3DTexture9->UnLockRect():UnLock Texture.
IDirect3DDevice9->BeginScene():Begin to draw.
IDirect3DDevice9->SetTexture():Set current Texture.
IDirect3DDevice9->SetStreamSource():Bind VertexBuffer.
IDirect3DDevice9->SetFVF():Set Vertex Format.
IDirect3DDevice9->DrawPrimitive():Render.
IDirect3DDevice9->EndScene():End drawing.
IDirect3DDevice9->Present():Show on the screen.
没有合适的资源?快使用搜索试试~ 我知道了~
最简单的视音频播放示例
共229个文件
h:140个
txt:13个
lib:12个
5星 · 超过95%的资源 需积分: 0 3.7k 下载量 9 浏览量
2014-10-18
23:54:27
上传
评论 46
收藏 8.43MB 7Z 举报
温馨提示
本工程包含了使用各种API(Direct3D,OpenGL,GDI,DirectSound,SDL2)播放多媒体例子。 其中音频输入为PCM采样数据。输出至系统的声卡播放出来。 视频输入为YUV/RGB像素数据。输出至显示器上的一个窗口播放出来。 通过本工程的代码初学者可以快速学习使用这几个API播放视频和音频的技术。 一共包括了如下几个子工程: simplest_audio_play_directsound: 使用DirectSound播放PCM音频采样数据。 simplest_audio_play_sdl2: 使用SDL2播放PCM音频采样数据。 simplest_video_play_direct3d: 使用Direct3D的Surface播放RGB/YUV视频像素数据。 simplest_video_play_direct3d_texture:使用Direct3D的Texture播放RGB视频像素数据。 simplest_video_play_gdi: 使用GDI播放RGB/YUV视频像素数据。 simplest_video_play_opengl: 使用OpenGL播放RGB/YUV视频像素数据。 simplest_video_play_opengl_texture: 使用OpenGL的Texture播放YUV视频像素数据。 simplest_video_play_sdl2: 使用SDL2播放RGB/YUV视频像素数据。
资源详情
资源评论
资源推荐
收起资源包目录
最简单的视音频播放示例 (229个子文件)
simplest_video_play_direct3d_texture.cpp 14KB
simplest_video_play_gdi.cpp 9KB
simplest_video_play_opengl_texture.cpp 8KB
simplest_video_play_direct3d.cpp 7KB
simplest_video_play_opengl.cpp 6KB
simplest_video_play_sdl2.cpp 6KB
simplest_audio_play_directsound.cpp 6KB
simplest_audio_play_sdl2.cpp 3KB
SDL2.dll 984KB
SDL2.dll 984KB
glew32.dll 330KB
glew32.dll 330KB
glut32.dll 166KB
glut32.dll 166KB
glu32.dll 162KB
glu32.dll 162KB
simplest_video_play_opengl_texture.vcxproj.filters 1KB
simplest_video_play_direct3d_texture.vcxproj.filters 1KB
simplest_audio_play_directsound.vcxproj.filters 1KB
simplest_video_play_direct3d.vcxproj.filters 1KB
simplest_video_play_opengl.vcxproj.filters 1KB
simplest_audio_play_sdl2.vcxproj.filters 1KB
simplest_video_play_sdl2.vcxproj.filters 1KB
simplest_video_play_gdi.vcxproj.filters 1KB
Shader.fsh 479B
.gitignore 180B
.gitignore 25B
.gitignore 25B
.gitignore 25B
.gitignore 25B
.gitignore 25B
.gitignore 25B
.gitignore 25B
.gitignore 25B
glew.h 904KB
glew.h 904KB
SDL_opengl.h 622KB
SDL_opengl.h 622KB
SDL_opengles2.h 129KB
SDL_opengles2.h 129KB
GL.h 67KB
GL.h 67KB
glxew.h 67KB
glxew.h 67KB
wglew.h 61KB
wglew.h 61KB
SDL_haptic.h 38KB
SDL_haptic.h 38KB
SDL_video.h 33KB
SDL_video.h 33KB
SDL_render.h 32KB
SDL_render.h 32KB
SDL_events.h 26KB
SDL_events.h 26KB
glut.h 21KB
glut.h 21KB
SDL_audio.h 20KB
SDL_audio.h 20KB
SDL_hints.h 19KB
SDL_hints.h 19KB
SDL_surface.h 18KB
SDL_surface.h 18KB
GLU.h 18KB
GLU.h 18KB
SDL_pixels.h 15KB
SDL_pixels.h 15KB
SDL_scancode.h 15KB
SDL_scancode.h 15KB
SDL_keycode.h 14KB
SDL_keycode.h 14KB
SDL_stdinc.h 14KB
SDL_stdinc.h 14KB
SDL_test_fuzzer.h 13KB
SDL_test_fuzzer.h 13KB
SDL_assert.h 10KB
SDL_assert.h 10KB
SDL_gamecontroller.h 10KB
SDL_gamecontroller.h 10KB
SDL_thread.h 10KB
SDL_thread.h 10KB
SDL_atomic.h 9KB
SDL_atomic.h 9KB
SDL_joystick.h 8KB
SDL_joystick.h 8KB
SDL_mouse.h 7KB
SDL_mouse.h 7KB
SDL_rwops.h 7KB
SDL_rwops.h 7KB
SDL_syswm.h 7KB
SDL_syswm.h 7KB
SDL_system.h 7KB
SDL_system.h 7KB
SDL_mutex.h 7KB
SDL_mutex.h 7KB
SDL_keyboard.h 6KB
SDL_keyboard.h 6KB
SDL_log.h 6KB
SDL_log.h 6KB
SDL_endian.h 6KB
SDL_endian.h 6KB
共 229 条
- 1
- 2
- 3
雷霄骅
- 粉丝: 4w+
- 资源: 141
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- graduation-project-master.zip
- 遗传算法GA优化BP神经网络(GA-BP)回归预测-Matlab代码实现
- python的函数进一步运用
- 基于SpringBoot的学生成绩管理系统.docx
- 智能车竞赛是指参赛者通过设计和编程,使自动驾驶的小车在指定的赛道上完成特定任务
- 基于SpringBoot的学生成绩管理系统.docx
- mathematical-modeling-master.zip
- 程序员问卷调查.docx
- 计网G32201何振浪 202151021665.zip
- Dev-C++的下载和安装教程(非常详细)从零基础入门到精通,看完这一篇就够了_devc+_dev c++-CSDN博客.url
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论30