我來自OpenGL的土地,所以我與glColor函數類似,以及它們如何使用默認GL混合方法輸出的紋理。我似乎無法讓GraphicsDevice.BlendFactor像glColor一樣工作,但我可能沒有使用正確的混合設置。如果不使用着色器,可以在XNA中獲得相同的功能嗎?例如,我想將當前顏色設置爲RGB(1,0,0),並且我希望白色雲在輸出時顯示爲紅色。XNA glColor等效
1
A
回答
3
無法在設備上設置顏色。顏色(即使在OpenGL中)是一個頂點的東西。 OpenGL只是讓你設置所有頂點的默認值。
如果您在XNA中使用SpriteBatch
,那麼它將使用頂點處理所有魔術,並且其大部分Draw(...)
重載都有color
參數。
如果您自己發送頂點到卡上,請確保您的頂點格式包含Color
組件。 Here's a tutorial關於如何創建自定義頂點格式(儘管它不包含Color
組件)。
或者,您可以使用其中一種內置格式,如VertexPositionColor
或VertexPositionColorTexture
。
值得指出的是,在XNA中沒有「沒有着色器」。您可以使用BasicEffect
(或其他內置效果之一),它可以使用顏色數據完成預期的工作,也就是說,它可以爲您的紋理着色。並且SpriteBatch
也在內部使用着色器。
2
您還可以使用BasicEffect(或其他效果)的Fog和Alpha設置以固定的顏色繪製紋理,並仍然使用它們的原始Alpha值(我使用它來設置實體在獲取時閃爍白色被子彈擊中)。
例子:
// Draw a silhouette in solid orange at 75% opacity
basic_effect.FogColor = new Vector3(1.0f, 0.5f, 0.0f);
basic_effect.Alpha = 0.75f;
basic_effect.FogEnabled = true;
basic_effect.FogStart = 1;
basic_effect.FogEnd = 0;
... draw triangles ...
相關問題
- 1. OpenGL glcolor for循環
- 2. XNA對等網絡
- 3. glColor,glMatrixMode神祕地給出「無效操作」錯誤
- 4. glColor着色所有紋理
- 5. 時等候的keyPressed在XNA
- 6. XNA等距瓷磚碰撞
- 7. XNA效果和模式
- 8. c#XNA 2D畸變效應
- 9. XNA 4.0和效果代碼
- 10. 等效
- 11. 使用glColor *和OpenGL版本4.4
- 12. OpenGL muliply /添加紋理與glColor
- 13. glColor不會使背景透明
- 14. glColor不工作,出現隨機顏色
- 15. XNA等距瓷磚渲染問題
- 16. 等效於'@ECHO ON'的Unix等效
- 17. XNA 4.0共享基本效果變量?
- 18. 在XNA中創建轉換效果
- 19. XNA刪除着色器效果
- 20. XNA 3D中的特殊效果?
- 21. XNA 2D音效鼠標盤旋
- 22. 使碰撞檢測更有效(C#XNA)
- 23. XNA 4.0二維相機光標有效
- 24. XNA是否有效取代Managed Directx?
- 25. 等效IFF的
- 26. WPF Radiobutton等效
- 27. 等效urllib.parse.quote()2.7
- 28. ITextSharp VB.net等效
- 29. 等效於WM_MOVE
- 30. CIN的等效
我試圖實現與BasicEffect這種效果。我更願意說沒有'自定義'着色器。看起來你甚至不能在這個設備上自己創建=(..我有一個有數百個多邊形的對象,我需要對顏色和alpha進行脈衝排序,從設備上解除頂點緩衝區對象並重置所有頂點的頂點顏色和alpha對我來說似乎不是那麼好,而BlendFactor似乎對我沒有任何幫助,也許我錯過了一些東西? – Kyle 2010-09-22 01:53:18
啊 - 所以這更多的是關於BasicEffect的一個問題,嘗試一下照明選項,我認爲'AmbientLightColor'會做你想做的(或者如果你的模型被點亮了,那麼就是'DiffuseColor') – 2010-09-22 02:44:41
DiffuseColor絕對有效!使用Alpha給出了整個顏色/ alpha功能,並且這個功能可以與LightingEnabled:false一起使用,所以我相信它也可以保存在一些着色器操作中。感謝您的幫助! – Kyle 2010-09-22 03:15:06