1

我目前正在做一个项目,我需要创建一个服务器/客户端应用程序,该应用程序使用 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;
4

1 回答 1

1

It looks to me like you simply want to propagate the transformation of your object (position, orientation, scale) and have two different views, one for the server, one for the client. These views can simply be different camera positions. When the object moves in the world on the server, it will move on the client as well. For a given distance between your object and the server's camera, you should be able to compute when it will start touching the edge of the view frustum... and from there you could deduce the required camera position on the client to have a "flow" from one screen to another.

于 2012-11-11T20:27:58.653 回答