#opengl #3d #rendering #server-side-rendering #vtk
#opengl #3D #рендеринг #рендеринг на стороне сервера #vtk
Вопрос:
Я пытаюсь создать веб-сервер рендеринга для 3D-данных (первоначально отправленных веб-клиентами), предлагая клиентам изображения в реальном времени (с использованием WebSockets).
Моя проблема связана с экземплярами 3D-рендеринга. Используя VTK, я не нашел способа сохранить множество «экземпляров» для рендеринга (по одному для каждого веб-клиента) в одном коде / сервере. Кроме того, я также попробовал OpenGL, получив тот же результат. Я знаю варианты как VTK.js но мне нужен рендеринг на стороне сервера. Я застрял!
Есть ли какой-либо способ рендеринга нескольких экземпляров 3D-графики с использованием одного и того же кода? Мой сервер находится на Flask, для рендеринга я попробовал VTK на C , связанный с библиотеками DLL, и VTK Python wrapper, ни один из них не работает.
Комментарии:
1. Рендеринг на стороне сервера — это рендеринг в фреймбуфер, извлечение в изображение и отправка этого изображения клиенту. Если на сервере есть только одна карта gfx, то каждое изображение должно ждать своей очереди для рендеринга.
2. @Ripi2 спасибо. Однако я думал, что, используя FBO, я не знаю, как «поддерживать» сеансы на стороне сервера, чтобы обеспечить соединение с клиентами. В этом случае он должен устанавливать контекст OpenGL в серверной ОС и обрабатывать оттуда… но я понятия не имею, как поддерживать этот сеанс, чтобы отправлять инструкции в «окно рендеринга».
3. Эпале марико 😊! IIUC вы хотели бы использовать один и тот же код рендеринга на сервере для рисования разных представлений для каждого клиента? Сумасшедшая идея: возможно, у вас есть пул экземпляров с поддержкой GPU на стороне серверной части, каждый из которых отображается в FBO в виде сетки, затем разделите сетку, чтобы получить изображение каждого клиента, чтобы каждый экземпляр теоретически мог обслуживать несколько клиентов?
4. jajaja Henryx @higuaro, да, те же функции рендеринга. Да, ваш подход — идеальный сценарий. Однако меня беспокоит проблема блокировки потоков с использованием экземпляров OpenGL сеансов веб-сервера. В любом случае, я ищу простую и быструю схему для работы!
5. OpenGL допускает несколько контекстов. Это не часть самого OpenGL, а скорее библиотека, которую вы используете для настройки окна OpenGL (например, GLFW). Вы также можете просто отобразить фрейм каждого клиента, сохранить фрейм и отправить его клиенту и повторить для следующего клиента, даже если это совершенно разные фреймы — ничто в OpenGL не заставляет один фрейм быть похожим на предыдущий фрейм!