2017-03-03 79 views
0

我想知道最好的方法是在不同顏色的網格上渲染選定的三角形嗎?我使用的是OpenGL,但具體的渲染系統可能並不重要。呈現不同顏色的選定三角形?

一種方法是將選定的三角形渲染到現有網格的頂部,但是我覺得使用着色器必須有更好的方法來實現這一點。

回答

1

我認爲最簡單的方法是爲三角形創建一個單獨的顏色緩衝區。隨後,您可以使用glBufferSubData()(請參閱here)還原取消選定三角形的顏色,並更新那些新選擇該幀的顏色。

這假定你知道緩衝區中哪個索引是你想改變顏色的三角形的頂點所在的位置。

也可以讓附加緩衝區僅包含布爾值,並用統一變量中指定的值覆蓋選定三角形的顏色。

+0

這不會導致光柵化過程中基元上的插值,其中的1或2個頂點設置爲所選顏色?這樣的顏色緩衝區將如何表示/創建? – zman

+0

僅當您的頂點在原始模型的緩衝區中重用時才使用。如果它們全部被定義爲單獨的頂點,則沒有問題。不幸的是,這是OpenGL的限制。由於您試圖對選定的三角形進行可視化,因此無論是否應該標記特定的三角形,您都必須跟蹤很多不同的布爾值。把它放在一個單一的統一緩衝區中是不可行的,所以分離三角形和使用一個單獨的緩衝區就是我所能看到的最好的解決方案。 – Bartvbl

+0

這個想法是,你首先把你的原始頂點緩衝區和索引緩衝區,並使用索引緩衝區查找頂點緩衝區中的所有頂點,將所有頂點作爲單個序列存儲在新緩衝區中。由於所有三角形頂點現在都是「分離的」頂點,因此可以爲每個頂點指定單獨的顏色。這裏只需要每個頂點有一個字節。創建另一個頂點緩衝區,可能將所有值初始化爲0,並將其作爲另一個屬性添加到着色器。隨後檢查輸入是否設置爲1,如果是,則覆蓋頂點的顏色。 – Bartvbl