2010-11-01 34 views
5

識別從特定視點可見的頂點的最有效方法是什麼?識別OpenGL中的可見頂點

我有一個由幾個3D模型組成的場景。我想爲每個頂點(ModelID,VertexID)添加一個標識符,然後從各個視點生成2D圖像,併爲每個圖像生成一個可見頂點標識符列表(本質上是用於圖像處理應用程序)。

最初我以爲在頂點法線和攝像機視角矢量之間執行點積來確定頂點是否面向攝像機,但是如果模型被另一個物體遮擋,則此測試不起作用。

預先感謝

+0

gluProject會是你要找的?將對象座標映射到窗口座標? – Jim 2010-11-01 22:04:11

+0

你的目標是哪一個OpenGL版本?始終包含這些信息。另外,你是否需要知道哪些頂點通過了測試,還是隻需要計數? – 2010-11-01 23:09:13

+0

我針對OpenGL 3.1核心配置文件。所提供的答案是我所需要的,謝謝。 – tat0 2010-11-02 17:26:16

回答

3
  1. 禁用所有照明/紋理
  2. 渲染的幾何形狀(GL_TRIANGLES)來填充Z緩衝器
  3. 再次渲染的幾何形狀(GL_POINTS),選擇用於每一個不同的RGB顏色頂點,它映射到您的模型/頂點ID
  4. 回讀framebuffer並掃描您之前使用的顏色,映射回您的模型/頂點ID。

不是很快,但它應該工作。

+0

太棒了,這是一個很好的技巧,並且工作正常。在這種情況下速度不是很重要。謝謝你的幫助。 – tat0 2010-11-02 17:22:59