我使用GL_LINES
來繪製很多線條。但是一些線應該隱藏起來。有什麼方法可以丟棄特定的線段嗎?如何丟棄其中一條線段?
我可以通過將行放入不同的緩衝區來實現這一點。但是,如果緩衝區太多,性能會很差。所以目前我想把它們放入一個緩衝區並丟棄不必要的緩衝區。
我使用GL_LINES
來繪製很多線條。但是一些線應該隱藏起來。有什麼方法可以丟棄特定的線段嗎?如何丟棄其中一條線段?
我可以通過將行放入不同的緩衝區來實現這一點。但是,如果緩衝區太多,性能會很差。所以目前我想把它們放入一個緩衝區並丟棄不必要的緩衝區。
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;
}
哦,我想我可以使用一個指示緩衝區來實現這一點。謝謝! –
您不應該在現代GL中使用GL_LINES,就像註釋一樣。爲了更有幫助,請使用退化索引:i0 == i1的行不會繪製。並沒有太多的簿記需要! – starmole
oldstyle api中有[glEdgeFlag](https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glEdgeFlag.xml)我覺得在新的API中應該有類似的東西 – Spektre