Форум программистов, компьютерный форум, киберфорум
DirectX
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
 Аватар для MasMaX
8 / 8 / 2
Регистрация: 07.02.2012
Сообщений: 71

Видео на 3D текстуре, мерцание

23.09.2013, 15:02. Показов 1943. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При воспроизведении видео на текстуру средствами Direct3D появляется сильное мерцание при проигрывании видео. Нашел похожую тему на другом форуме - http://www.gamedev.ru/code/forum/?id=76630 - но как применить в свой проект её? Я пишу на C#. Код примерно такой:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Подготовка видео
void video_TextureReadyToRender(object sender, TextureRenderEventArgs e)
{
       tex1 = e.Texture;
}
 
...
 
private void PlayVideo()
{
        myvideo = new Video(filename);
        myvideo.RenderToTexture(mydevice);
        myvideo.TextureReadyToRender += new TextureRenderEventHandler(video_TextureReadyToRender);
        myvideo.Play();
}
 
...
 
// И показ объекта (плоскость)
 
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
        mydevice.Clear(ClearFlags.Target | ClearFlags.ZBuffer,    // что именно хотим очистить (текущее окно) 
               System.Drawing.Color.Black, // цвет очистки
               1.0f, // буфер глубины.
               0);
 
        SetupCamera();  //  Установка камеры
 
        mydevice.BeginScene();
 
        verts = new PositionColoredTextured[] {
                new PositionColoredTextured( -1.0f,  1.0f, -1.0f, Color.White.ToArgb(), 0.0f, 0.0f ),
                new PositionColoredTextured(  1.0f,  1.0f, -1.0f, Color.White.ToArgb(), 1.0f, 0.0f ),
                new PositionColoredTextured(  1.0f, -1.0f, -1.0f, Color.White.ToArgb(), 1.0f, 1.0f ),
                new PositionColoredTextured( -1.0f,  1.0f, -1.0f, Color.White.ToArgb(), 0.0f, 0.0f ),
                new PositionColoredTextured(  1.0f, -1.0f, -1.0f, Color.White.ToArgb(), 1.0f, 1.0f ),
                new PositionColoredTextured( -1.0f, -1.0f, -1.0f, Color.White.ToArgb(), 0.0f, 1.0f )
        };
 
        mydevice.Transform.World = Matrix.Scaling(scale) * Matrix.RotationYawPitchRoll(yaw, pitch, roll) * Matrix.Translation(x, y, z);
        mydevice.VertexFormat = PositionColoredTextured.Format;
        mydevice.SetTexture(0, tex1);
        mydevice.DrawUserPrimitives(PrimitiveType.TriangleList, 2, verts);
 
        mydevice.EndScene();
        mydevice.Present();
        this.Invalidate();
}
Кучу лишнего кода убрал, если кто сможет решить проблему - кину исходник целиком. Просто показ картинки на объекте работает, не мерцает. Видео тоже ровно показывается, если выводить прямо на форму.

Кто-нибудь может решить задачку?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.09.2013, 15:02
Ответы с готовыми решениями:

Видео ScreenShot - мерцание
Доброго времени суток. У меня такой вопрос: делаю программу для мониторинга рабочих столов на мультимониторной системе. Т.е. стоит 3...

Полосы на текстуре
Полосы на текстуре. Не могу понять - откуда они могут появляться? Если поставить другой файл изображения, полос нет. Можно, конечно,...

Замена цвета в текстуре
Собственно, можно ли непрозрачные части текстуры, которые рисовались бы обычным образом, заменить цветом из glColor3*? текстура у меня...

10
51 / 51 / 8
Регистрация: 31.10.2012
Сообщений: 481
23.09.2013, 21:19
"Выкиньте" C# и пишите на нормальном С++.
1
 Аватар для MasMaX
8 / 8 / 2
Регистрация: 07.02.2012
Сообщений: 71
23.09.2013, 21:46  [ТС]
Цитата Сообщение от SanchezPluz Посмотреть сообщение
"Выкиньте" C# и пишите на нормальном С++.
Да вот чето склоняюсь уже да)) Так код будет тот же по сути или нет? Смотрел коды подобных прог на плюсах, показались более сложными для понимания без спец знаний…
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
23.09.2013, 23:19
в инициализации формы
C#
1
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true);
и будет вам счастье (читайте документацию на будущее, хотя бы уж того же Тома Миллера - Managed DirectX 9)

Цитата Сообщение от SanchezPluz Посмотреть сообщение
"Выкиньте" C# и пишите на нормальном С++.
0
51 / 51 / 8
Регистрация: 31.10.2012
Сообщений: 481
24.09.2013, 07:24
_lunar_, в чем выражается ваше недовольство? Обоснуйте.
C# гораздо слабее, чем C++ по технологиям.
0
 Аватар для MasMaX
8 / 8 / 2
Регистрация: 07.02.2012
Сообщений: 71
24.09.2013, 07:26  [ТС]
Зато C# горазо проще для понимания. КОд как-то аккуратнее получается. Хотя из-за этого и более ресурсо-ёмкие приложения наверное получаются.
0
42 / 16 / 0
Регистрация: 24.07.2012
Сообщений: 104
24.09.2013, 08:24
Цитата Сообщение от MasMaX Посмотреть сообщение
Зато C# горазо проще для понимания.
Полностью согласен! Теже враперы DirectX - SlimDX или SharpDX намного легче для понимания, чем С++ и D3dX! а по производительности... дело субъективное и смотря для какого проэкта.
0
 Аватар для MasMaX
8 / 8 / 2
Регистрация: 07.02.2012
Сообщений: 71
24.09.2013, 09:20  [ТС]
Цитата Сообщение от _lunar_ Посмотреть сообщение
в инициализации формы
C#
1
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true);
и будет вам счастье (читайте документацию на будущее, хотя бы уж того же Тома Миллера - Managed DirectX 9)
Собственно у меня это стиль оказывается и стоял. Мерцание есть всё равно.
За книжку спасибо, там хоть по видео и малая глава но хоть что-то.

Добавлено через 32 минуты
Замерил время рендеринга текстуры из видео. Получается всего 4-5, редко 20 кадров (текстур) в секунду. Видимо потому и глюки..
0
51 / 51 / 8
Регистрация: 31.10.2012
Сообщений: 481
24.09.2013, 16:49
Теже враперы DirectX - SlimDX или SharpDX намного легче для понимания, чем С++ и D3dX!

Не по теме:

Мне больше не о чем с вами разговаривать после этих слов.

0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
24.09.2013, 19:29
Цитата Сообщение от SanchezPluz Посмотреть сообщение
в чем выражается ваше недовольство? Обоснуйте.
почему сразу недовольство. Я выразил эмоции на реплику "Выкиньте" C#
если шарп вас не устраивает по личным причинам, то не следует так грубо отзываться о языке. Шарп хорош для начинания, в т.ч. и для изучения direct3d, а переходить на с++ или нет это дело каждого.

Цитата Сообщение от SanchezPluz Посмотреть сообщение
C# гораздо слабее, чем C++ по технологиям.
с этим я и не спорил.
0
51 / 51 / 8
Регистрация: 31.10.2012
Сообщений: 481
26.09.2013, 10:36
почему сразу недовольство. Я выразил эмоции на реплику "Выкиньте" C#
если шарп вас не устраивает по личным причинам, то не следует так грубо отзываться о языке. Шарп хорош для начинания, в т.ч. и для изучения direct3d, а переходить на с++ или нет это дело каждого.
C# меня устраивает во всем, даже в том числе, что это был первый мой изучаемый язык программирования. Однако, для таких технологий, как DirectX, ну не пойдет. Вообще никак.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.09.2013, 10:36
Помогаю со студенческими работами здесь

Быстрая отрисовка по текстуре
Всем хорошего дня! Не сумел найти более быстрый способ для рисования по текстуре, помимо SetPixel. Texture2D texture = new Texture2D(127,...

Нахождение ошибок в текстуре
Сделал скин для кс(первая работа) получилось (на мой взгляд)неплохо ,но есть недочёты в нахождении которых мне требуется помощь.Хочу...

Specular highlight на текстуре
Здравствуйте. Подскажите, как сделать отражение света от текстуры ? Создаю примитив, есть отражение. А с натянутыми текстурами нет ничего....

XNA удаление фона в текстуре
у меня есть файл с рисунком и этот рисунок расположен на фоне розового цвета. как можно программно сделать фон рисунка прозрачным?

Можно ли достучаться к пикселям и их цвету в 2D текстуре?
Как можно работать с пикселями в 2D текстуре, - читать и записывать цвет пикселя по координатам ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru