2014-01-25 28 views
1

我目前正在嘗試使用多邊形模式LINES畫線。我可以用即時模式多次成功地做到這一點。但是現在我正在試圖與維也納組織一起這樣做,並且不知道爲什麼。VBO和PolygonMode行

以下是代碼示例。據我可以告訴所有的偏移,混合和顏色方法工作正常,但它不會畫線,除非我做GL_LINES下的glDrawArays。

glPolygonMode(GL_FRONT_AND_BACK, GL_LINES); 
glLineWidth(3.0f); 
glColor4f(0.0f, 0.0f, 0.0f, 0.5f); 

glEnable(GL_POLYGON_OFFSET_LINE); 
glPolygonOffset (-5.8f, -1.0f); 

glEnable (GL_BLEND); 
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 


glEnableClientState(GL_VERTEX_ARRAY); 

glBindBufferARB(GL_ARRAY_BUFFER_ARB, vHandle); 
glBufferDataARB(GL_ARRAY_BUFFER_ARB, vBuffer, GL_STATIC_DRAW_ARB); 
glVertexPointer(3, GL_FLOAT, 3 << 2, 0L); 

glDrawArrays(GL_TRIANGLES, 0, count /* elements */); 
glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); 

glDisableClientState(GL_VERTEX_ARRAY); 
glDisable(GL_POLYGON_OFFSET_LINE); 
+2

你檢查了gl錯誤嗎?您使用了錯誤的枚舉:GL_LINES而不是GL_LINE –

+0

非常感謝!我很高興它最終變得如此簡單..我一直很困惑至於何時使用GL_LINES以及何時使用GL_LINE。有什麼不同?編輯:你是什麼意思'檢查gl錯誤'?像調試器或什麼的? –

+0

檢查我的答案 –

回答

4

您正在使用GL_LINES而不是GL_LINE。如果您不確定要使用哪個枚舉,請檢查文檔,它會給出您可能的值列表。如果您需要更多幫助來調試您的應用程序,請嘗試在每次opengl調用之後調用glGetError(http://www.opengl.org/sdk/docs/man/xhtml/glGetError.xml),這樣您將能夠看到出現錯誤的函數,然後您可以在Google中調用該函數。