2013-03-07 68 views
1

我正在使用數字(0-99)用於問題和答案(如標準檯球,但它們只能正常運行15)的數學遊戲。Direct3D或XNA渲染自定義檯球

因此,我認爲以編程方式生成至少是數字而不是在3DSMax或類似模型中建模99個不同的球會更聰明。

我在C#/ XNA中工作,但也可以在DX11/C++中處理解釋。

我不是在尋找代碼,而是一個辦法:排序子彈名單,將是這樣的(如果這是任何接近正確的):

  • 建立在3DS一個shpere是白色,並有條紋。
    • 或者,如果條紋是我後來添加的紋理的一部分?
  • 在DrawModel改變球的顏色(如果固體)或菌柄(如條紋)
  • 莫名其妙的號碼添加到球的方式,它看起來像相同質量的球的其餘部分

也許有一種神奇的方式來獲取紋理並將其包裹在球體周圍而不會發生任何變形,然後我可以生成紋理並將它們貼在球體上。但是,正如你所猜測的,我不知道要走到哪裏。

感謝您的任何方向!

回答

0

如果你想用XNA/MonoGame/ANX來解決它,這個方法真的取決於你是使用Reach配置文件還是使用HighDef配置文件。

隨着覆蓋範圍的個人資料,我建議:

  1. 創建渲染目標
  2. 清除渲染目標球的顏色
  3. 畫上白色條紋(S)渲染目標
  4. 畫出數到渲染目標
  5. 創建動態一個(或使用現有的)球齧合
  6. 渲染球體我使用基本效果和渲染目標紋理

隨着高調SH,這是寫一個像素着色器的情況下:

  1. 採用「白」的質感,「顏色」的質地,顏色和一個「數字」紋理
  2. 呈現白色質地白色
  3. 呈現顏色紋理所提供的顏色
  4. 呈現數字紋理

(我建議使用與Reach配置文件示例類似的技術來渲染數字紋理。渲染文本是一種痛苦,所以儘可能利用內置的東西在可能的情況下)。 (前)XNA團隊提供了一個重新着色的例子:http://create.msdn.com

+1

我的確發現了這個相當詳細的教程: http://msdn.microsoft.com/en-us/library/jj161095.aspx – Dave 2013-03-08 02:57:12

1

你會希望在紋理貼圖上打印你的數字。這種紋理實際上是一種「貼花」,貼在你的球體的一部分上。實現這種簡單的固定貼花的簡單方法是編寫一個像素着色器,該着色器確定該點是否位於貼花區域的內部或外部。如果不是,則可以進行額外的測試以確定像素是白色背景還是彩色條紋。

您可以通過爲每個頂點指定適當的紋理座標,或者(或許更乾淨地)爲貼圖映射貼圖,您可以編寫一個像素着色器,從3D模型座標計算紋理座標。

無論哪種方式,你總會在球體上產生變形。我建議你看看map projections,這都解決了在平面圖像和球體之間轉換的基本問題。我會特別建議看一下「gnomonic」和「orthographic」預測,這兩個預測都很容易理解和實施。