2016-12-29 20 views
1

我正在使用Android的OpengGL ES 2.0。我將這些頂點與線條連接在一起繪製形狀。現在我需要單獨更改每條線的顏色。我試着通過頂點着色器爲每個頂點傳遞一個顏色矩陣來對片段着色器進行處理,但顏色被插值(這實際上是有意義的,因爲我給了兩個頂點不同的顏色)。我做了一些Google搜索,發現glSmoothShader不能在OpengGL ES中禁用。如何在OpengGL ES 2.0中使線顏色變平而不是漸變?

有沒有辦法在沒有插入顏色的情況下對這些線着色?

或者有沒有辦法使用多個三角形來繪製兩個頂點之間的一條線,這樣我就可以使每個三角形變平。

回答

1

基本上唯一的方法就是繪製三角形,而不是三角形或扇形。並且對於構成單個三角形的每個三個頂點集使用相同的顏色。這將刪除陰影效果,因爲相同顏色之間的插值是相同的顏色。更復雜的解釋:http://ruh.li/GraphicsShading.html

1

一種解決方案是複製頂點。也就是說,如果您當前有一個頂點V連接到三條線(作爲示例),則創建三個具有相同位置但顏色不同的頂點V1,V2和V3,其中每個頂點都具有相應線的顏色。所以如果線1是紅色的,線2是藍色的,線3是綠色的,那麼V1將是紅色,V2藍色和V3綠色。

+0

這是有道理的,它會很好的少數頂點。但是我從一個xml文件(上帝知道有多少行連接到一個頂點......)解析所有這些1000多個頂點,創建索引並將它們連接起來。我想知道這可以成爲一個實際的解決方案。 這就是說,如果沒有更好的出現我會使用你的解決方案,謝謝。 – D3athh