Nano Hash - криптовалюты, майнинг, программирование

Создание устройства SlimDX Direct3D11

У меня проблема в моем приложении (WinForms [надеюсь, это не проблема, потому что ссылка ниже относится к WPF]), вся моя проблема описана так же, как здесь:

Быстрый просмотр видео WPF

для отображения большого количества видеопотоков я раньше работал с Picture Box, потом понял, что отрисовка очень медленная, и фпс становится ниже.

Я слушаю совет парня по работе с Direct3D11, но у меня есть проблема в конструкторе:

Texture2D tex = new Texture2D(Device, texDesc);

Как я могу отправить устройство? Устройство - это тип, а не объект. У меня появляется сообщение об ошибке. Я работаю с SlimDX ofc, Direct3D11. Действительно пытаюсь понять, как это сделать, или создать свое собственное устройство? Если есть какой-либо другой способ оптимизировать FPS и рисование, или кто-нибудь создал элемент управления, который может справиться с этим, я буду признателен за это. Кроме того, вы можете связаться со мной по почте: dorbenshimon1 {at} gmail {dot} com большое спасибо


Ответы:


1

Вы как бы ответили на свой вопрос - вам нужно передать созданный вами экземпляр устройства, а не тип.

Посмотрите примеры настройки области просмотра, чтобы увидеть, как это делается.


Согласно комментариям, DirectX почти наверняка не является подходящим инструментом, если вы просто хотите быстро вставлять изображения. Вместо этого попробуйте что-то подобное:

using System.Windows.Forms;

public class FastImageRedraw : Panel
{
    private Image image;

    public FastImageRedraw()
    {
        this.SetStyle(ControlStyles.UserPaint, true);
        this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
        this.SetStyle(ControlStyles.DoubleBuffer, true);
        this.SetStyle(ControlStyles.ResizeRedraw, true);
        this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
        this.UpdateStyles();
    }

    public Image Image
    {
        get { return this.image; }
        set 
        {
            this.image = value;
            this.Invalidate();
        }
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        e.Graphics.DrawImage(this.Image, e.ClipRectangle);
    }
}

Это очень просто, но использует GDI+ для обработки перерисовки изображения только тогда, когда вы его изменяете.

Создайте его стандартный экземпляр с помощью var fastImage = new FastImageRedraw();

Затем обновляйте изображение всякий раз, когда оно изменяется с помощью fastImage.Image = myImage;

13.01.2015
  • Да, это то, о чем я беспокоюсь, проблема в том, что я пытался создать экземпляр Deivce с Direct3D11 и не знаю, как это сделать. Не могли бы вы подсказать мне, пожалуйста / где я могу найти эти примеры? 13.01.2015
  • Ну, я не очень профессионал или хорошо разбираюсь в DirectX (думаю, я должен упомянуть об этом в начале). Может быть, уже есть элемент управления, который я могу использовать с помощью SlimDX, и он оптимизирован для рисования изображения? 13.01.2015
  • Разработка SlimDX и DX, как правило, сложна, и почти наверняка не требуется просто вставлять некоторые изображения. |Возможно, вы захотите изучить GDI, я обновлю свой ответ, включив в него базовую информацию. 13.01.2015
  • Спасибо, но я хочу отобразить что-то вроде 10 видео с IP-камер со скоростью 25 кадров в секунду. Этот код будет работать? 13.01.2015
  • Попробуйте, скоро вы получите ответ. Конечно, это полностью зависит от ПК, на котором он работает, но я бы не подумал, что это будет проблемой на среднем ПК с выделенной видеокартой. 13.01.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..