2015-09-29 137 views
0

我對某些場景元素使用了GeometricPrimitive,但它的Draw()調用總是使用0-1的TX coords而沒有機會(我認爲)改變它。DirectXTk GeometricPrimitive紋理座標

如果我只是改變DirectXTk代碼本身的texcoords,我可以通過使用較大的紋理座標來重複紋理;顯然,雖然我不想依賴黑客工具箱代碼。

因此,由於Draw()提供了一個lambda回調函數,所以我想知道是否有機會通過更新紋理座標來解決這個問題。

我也使用BasicEffect來進行渲染,如果有幫助的話。

他們使用可公開訪問的VertexPositionNormalTexture。如果以某種方式爲我提供了一種行走頂點緩衝區並更新TX座標系的方法,那對我來說也是適用的。我想知道是否可以使用Map()或其他方式訪問緩衝區,走過頂點,更新TX座標系,並希望獲得最佳效果。

這是最好的(唯一)方法還是有一個更好的GeometricPrimitive?

+0

你試圖達成什麼樣的映射,以及什麼形狀?與重複相同的映射?還有別的嗎? –

+0

只要在飛機上重複一個磚塊圖案(實際上是薄盒子),沒有什麼奇特的。如果我將tx座標系轉換爲100而不是1,那麼他們會重複使用WRAP作爲光柵化器狀態。工程很好,但我不想破解他們的代碼,或者我依賴修改後的DirectXTK – Dave

+0

在GitHub上打開[issue](https://github.com/Microsoft/DirectXTK/issues/14)來公開這一點。 –

回答

0

我編寫了自己的着色器來渲染原語並添加了UV變換。這使我能夠通過XMMatrixScaling(10,10,10)來擴展座標並獲得更大的重複。

+0

這很有效。我在下一個版本中對''GeometricPrimitive''做了一些修改,這樣你就可以得到一個Vertex的''std :: vector''並面向它生成,修改它們,然後創建一個'GeometricPrimitive'新的數據。如果你想試用它們,它們在[GitHub](https://github.com/Microsoft/DirectXTK)的主分支上。 –

+0

例如代碼如何使用新功能,請參閱DirectX工具包[文檔](https://github.com/Microsoft/DirectXTK/wiki/GeometricPrimitive#custom-geometry) –