2009-09-15 52 views
0

Hokay所以這裏是我想要實現的:像XNA這樣的設計/僞代碼的聽線程?

我將通過網絡發送一些網格數據,這是我的渲染器(在XNA中編程)必須呈現的。對於那些不熟悉的人來說,典型的XNA「遊戲」基本上是以連續的線程運行的......它會更新並繪製數據。問題是,我不想通過反序列化網絡數據來減慢線程速度(這會降低幀速率)。所以,我想我需要一個偵聽網絡連接的線程,將數據包反序列化爲遊戲可以使用的內容,然後提醒XNA線程數據已準備好呈現。這樣,如果網絡中存在延遲或其他情況,我的渲染將與網絡數據同步。

現在,我熟悉基本的線程原則,但是我想知道是否有人以前做過這個,我可以做些什麼來設計/實現這個東西?我需要保持線程分離(即,XNA線程無法開始執行偵聽線程代碼,反之亦然)。我認爲這本質上是一個生產者消費者問題,但是如果任何人都可以給我一些概述同步的.NET/XNA代碼(或僞代碼),我需要非常感謝。

隨意要求澄清...我會嘗試根據需要進行編輯。

回答

1

XNA中的繪製方法是作爲一個不斷運行的獨立線程運行的。所以基本上它應該只是將新網格寫入繪製對象中,而繪製將渲染下一個通道,否則,如果新數據尚未提供,它將只渲染舊網格。

這消除了與實際渲染同步的需要,因爲它可能比您更新這些變量的渲染速度快。

+0

謝謝......我可以在每次只刪除新的頂點變量嗎?我必須重建頂點/索引緩衝區嗎?謝謝 – Polaris878 2009-09-16 02:46:41

+1

取決於你的確切的渲染代碼,通常你用新的基元來更新一個緩衝區或數組來繪製。關鍵是不斷渲染這些相同的對象,並在需要繪製不同的東西時更新它們。 – ewanm89 2009-09-17 01:02:59