C를 사용하여 동영상을 재생하고 DirectX로 텍스트 오버레이를 추가하려면 어떻게해야합니까?이 영역을 처음 사용하기 때문에 몇 가지 참조를 지정하십시오.C에서 동영상을 재생하고 DirectX로 텍스트 오버레이를 추가하는 방법
다이렉트의 특정 부분이 비디오 재생 tused
3
A
답변
0
하는 다이렉트라고, 당신은 C#을에서의 DirectShow를 사용하는 방법에 대한 참조를 필요로하는 응시 지점이 하나가 될 수 :
http://www.codeproject.com/KB/directx/directshowmediaplayer.aspx
0
가 일부 http://www.riemers.net/eng/Tutorials/DirectX/Csharp/Series2/tut18.php 참조 DirectX 표면에 텍스트를 표시하는 소스 코드 ...
0
다음은 Direct3D를 초기화하고 두 개의 삼각형 버텍스를 만들고 비디오를 표시하는 폼입니다. 정점에 대한 이해가 없으므로 정확하게 정렬되지는 않지만 비디오를 성공적으로로드하고 삼각형에 텍스처로 렌더링합니다.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Microsoft.DirectX.Direct3D.Device _device;
private Microsoft.DirectX.Direct3D.Font font;
private Microsoft.DirectX.AudioVideoPlayback.Video _video;
CustomVertex.PositionTextured[] vertices;
public void Init()
{
PresentParameters present_params = new PresentParameters();
present_params.Windowed = true;
present_params.SwapEffect = SwapEffect.Discard;
_device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, present_params);
font = new Microsoft.DirectX.Direct3D.Font(_device, 20, 0, FontWeight.Bold, 0, false, CharacterSet.Default, Precision.Default, FontQuality.Default, PitchAndFamily.DefaultPitch, "Arial");
_video = new Video("clock.avi");
_video.TextureReadyToRender += new TextureRenderEventHandler(_video_TextureReadyToRender);
_video.RenderToTexture(_device);
vertices = new CustomVertex.PositionTextured[6];
vertices[0].Position = new Vector3(1f, 1f, 0f);
vertices[0].Tu = 0;
vertices[0].Tv = 1;
vertices[1].Position = new Vector3(-1f, -1f, 0f);
vertices[1].Tu = 1;
vertices[1].Tv = 1;
vertices[2].Position = new Vector3(1f, -1f, 0f);
vertices[2].Tu = 0;
vertices[2].Tv = 0;
vertices[3].Position = new Vector3(-1.1f, -0.99f, 0f);
vertices[3].Tu = 1;
vertices[3].Tv = 0;
vertices[4].Position = new Vector3(0.99f, 1.1f, 0f);
vertices[4].Tu = 0;
vertices[4].Tv = 0;
vertices[5].Position = new Vector3(-1.1f, 1.1f, 0f);
vertices[5].Tu = 1;
vertices[5].Tv = 1;
}
void _video_TextureReadyToRender(object sender, TextureRenderEventArgs e)
{
_device.BeginScene();
_device.SetTexture(0, e.Texture);
_device.VertexFormat = CustomVertex.PositionTextured.Format;
_device.DrawUserPrimitives(PrimitiveType.TriangleList, 2, vertices);
font.DrawText(null, "test overlay", 5, 5, Color.Red);
_device.EndScene();
_device.Present();
}
protected override void OnPaint(PaintEventArgs e)
{
_device.Clear(ClearFlags.Target, Color.Blue, 0.0F, 0);
}
private void Form1_Load(object sender, EventArgs e)
{
_video.Play();
}
}
당신은 그렇지 않으면 비디오가 표시되지 않을 것이라고 TextureReadyToRender
이벤트 내에서 코드를 그리는 장면을 넣어해야합니다.
관련 문제
- 1. C++ directx로 텍스트 그리기
- 2. MPMoviePlayerController가 YouTube 동영상을 재생하고 있습니까?
- 3. C에서 프록시를 추가하는 방법 #
- 4. C에서 번호에 기능을 추가하는 방법 #
- 5. C에서 dataGrid에 이벤트를 추가하는 방법 #
- 6. Eclipse 자바 편집기를 확장하여 색상이 지정된 오버레이를 추가하는 방법
- 7. FireFox 확장. 창문의 내용 영역에 오버레이를 추가하는 방법
- 8. C에서 텍스트 행을 읽는 방법
- 9. 동영상을 움직이는 무비 클립 동적에 텍스트를 추가하는 방법
- 10. 툴바에 텍스트 필드를 추가하는 방법
- 11. C에서 텍스트 상자와 XML #
- 12. 앱에 인트로 동영상을 추가하는 방법은 무엇입니까?
- 13. Managed DirectX로 어댑터 식별자 결정
- 14. 동영상을 YouTube에 업로드하는 방법
- 15. URL에서 동영상을 업로드하는 방법
- 16. 스윙에서 비디오 오버레이를 만드는 방법
- 17. jQuery Tools : 오버레이를 닫는 방법?
- 18. C에서 텍스트 파일의 여러 줄을 읽는 방법 #?
- 19. EOF를 사용하여 C에서 텍스트 파일을 실행하는 방법?
- 20. 파일이 C에서 텍스트 파일이 아닌지 확인하는 방법 #
- 21. 작은보기에서 비디오를 재생하고 전체보기를 채우려면 어떻게해야합니까?
- 22. RSS 피드에 동영상을 표시하는 방법
- 23. iPhone에서 동시 동영상을 재생하는 방법
- 24. 세로 모드에서 동영상을 재생하는 방법
- 25. 모바일 앱에 동영상을 퍼가는 방법
- 26. Objective-C에서 배열에 변수를 추가하는 방법은 무엇입니까?
- 27. Intellij - 리소스에 텍스트 파일을 추가하는 방법
- 28. 기본 텍스트 크기 기능을 추가하는 방법 - Javascript
- 29. 선택기에서 값을 텍스트 필드에 추가하는 방법
- 30. 함께 텍스트 및 이미지를 추가하는 방법
이것은 정확히 내가 필요로하는 것처럼 보이지만 비디오는 단순히 표시되지 않습니다. 비디오를 삼각형 안에 표시하고 싶지는 않습니다. 단지 비디오 상단에 텍스트를 표시하고 싶습니다. 어떻게 보여 주겠니? – Mavamaarten