Отправка информации о вершинах Direct3D через winsock

В настоящее время я работаю над проектом, в котором мне нужно создать серверное/клиентское приложение, которое рисует графику в двух отдельных окнах приложения, используя C++, DirectX и Winsock. Изображение должно перемещаться по оси x окна серверного приложения, пока оно не начнет исчезать из поля зрения с правой стороны. Когда оно исчезает из поля зрения, клиентское приложение должно визуализировать изображение и перевести его на свой экран, создавая впечатление перемещения изображения из окна сервера в окно клиента.

Я не ищу здесь какой-либо готовый код, а скорее индикаторы того, как я могу информировать клиентское приложение о том, чтобы снова начать рендеринг изображения на своем экране, когда изображение завершило свой цикл преобразования в окне серверного приложения. Я думаю, что могу сделать что-то, связанное с отслеживанием местоположения g_Rectx в приведенном ниже коде и информированием клиентского приложения через сообщение, отправленное через winsock, чтобы начать рендеринг и преобразование, когда координата x выходит из поля зрения в серверном приложении, но я не уверен, как этого добиться.

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

Любые мысли о том, как я могу это сделать, будут высоко оценены.


выдержка из текущего кода перевода на случай, если это поможет...

            // translation matrix to move the image along x axis
    D3DXMATRIX TranslateMatrix;
    D3DXMatrixTranslation(&TranslateMatrix, g_RectX, g_RectY, g_RectZ);
    g_pd3dDevice -> SetTransform(D3DTS_WORLD, &TranslateMatrix);

    // Update the rectangle's x co-ordinate
    g_RectX += 0.1f;

person Vault13    schedule 11.11.2012    source источник


Ответы (1)


Мне кажется, что вы просто хотите распространить преобразование вашего объекта (положение, ориентация, масштаб) и иметь два разных представления: одно для сервера, одно для клиента. Эти представления могут быть просто разными положениями камеры. Когда объект перемещается в мире на сервере, он будет перемещаться и на клиенте. Для заданного расстояния между вашим объектом и камерой сервера вы должны быть в состоянии вычислить, когда он начнет касаться края усеченного обзора... и оттуда вы можете вывести требуемое положение камеры на клиенте, чтобы иметь "поток " с одного экрана на другой.

person emartel    schedule 11.11.2012
comment
спасибо за ваши предложения emartel, они дали мне хороший угол для расследования. - person Vault13; 12.11.2012
comment
Обычно так работают видеоигры, мы не отправляем вершины, просто информация об объекте и сцене воссоздается в каждом клиенте. - person emartel; 12.11.2012