0
我們說,我在(0,0,0),(9,0,0)和(10,0,0) 處用glVertex3f畫出3個點我想清除邊界框區域(2,-1,-1)中的所有Vertex3f點到(15,1,1),其中應包括最後兩個點。在OpenGL中,如何在3D區域中清除繪製的圖元
在OpenGL中如何做到這一點?
我們說,我在(0,0,0),(9,0,0)和(10,0,0) 處用glVertex3f畫出3個點我想清除邊界框區域(2,-1,-1)中的所有Vertex3f點到(15,1,1),其中應包括最後兩個點。在OpenGL中,如何在3D區域中清除繪製的圖元
在OpenGL中如何做到這一點?
在OpenGL之外管理你的點繪圖。 IE不要使用OpenGL來實現這一點。 OpenGL用於繪製數據,而不是跟蹤它。如果你想擺脫某些對象,不要告訴OpenGL繪製它們。您可以使用各種空間分區數據結構來有效地查找交叉點。
天真的方法是檢查您的場景中的所有點是否在該區域之外,然後再繪製它們。
一個更好的辦法是使用KD - 樹或八叉成倍縮小,你必須做比較的數量。
OpenGL對所有過去的繪圖都非常無知;它只是維護一組發送到監視器的像素(稱爲幀緩衝區)。您可以使用'GL_SCISSOR'或'GL_STENCIL'測試限制繪圖,但這不會影響以前繪製的任何內容。一般來說,您必須清除所有內容,並隨時重新開始場景更改。 – bcrist