2017-07-18 91 views
1

我使用GL_LINES來繪製很多線條。但是一些線應該隱藏起來。有什麼方法可以丟棄特定的線段嗎?如何丟棄其中一條線段?

我可以通過將行放入不同的緩衝區來實現這一點。但是,如果緩衝區太多,性能會很差。所以目前我想把它們放入一個緩衝區並丟棄不必要的緩衝區。

+1

哦,我想我可以使用一個指示緩衝區來實現這一點。謝謝! –

+1

您不應該在現代GL中使用GL_LINES,就像註釋一樣。爲了更有幫助,請使用退化索引:i0 == i1的行不會繪製。並沒有太多的簿記需要! – starmole

+0

oldstyle api中有[glEdgeFlag](https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glEdgeFlag.xml)我覺得在新的API中應該有類似的東西 – Spektre

回答

-1

GLSL中有一個discard關鍵字。您可以在Fragment Stage中使用它來丟棄不想渲染的像素。這裏是一個例子,丟棄所有的紅色像素:

sampled_color = texture(tex_sampler, tex_coords_FS_in);//Can be any way of obtaining pixels 
if(color.rgb == vec3(1.0, 0.0, 0.0)) 
{ 
    discard; 
} 
+1

我不這件事很有幫助。如果提問者正在使用GL_LINES,我懷疑是否存在着色器? – starmole

+0

@starmole這是我想到的第一個也是最簡單的解決方案,我已經使用'GL_LINES'和着色器根據屬性更改線的位置。我不知道我的答案有什麼問題 – Dynamitos