2016-03-19 28 views
1

我用這樣的代碼繪製在OpenGL(c)從一些行:如何在OpenGl中保持「跳舞」的虛線?

glLineStipple(6, 0xEEEE); 
glEnable(GL_LINE_STIPPLE); 
glBegin(GL_LINE_STRIP); 

glVertex2f(x, y); 
... 

它的偉大工程,如果一切都還在。但是,我的問題是,只要我放大或縮小線開始閃閃發光。我的意思是破折號的位置在四處移動。它看起來很馬虎。

有沒有辦法在模型空間中定位線是如何破碎的?我想我的問題是,glLineStipple()看繪製像素的數量,但我希望它看看在模型空間的長度,而不是。

+2

使用着色器。 'glLineStipple'是舊的並且已經被棄用了,着色器可以讓你更好地控制這樣的事情。 –

+0

我同意以上所述。我會寫這樣一個着色器作爲答案,但是我的OpenGL測試環境目前已經被破壞。着色器絕對是要走的路。一般強烈建議避免固定功能。 –

+0

有人可以用這個着色器的例子發佈答案嗎?我從來沒有做過着色器,所有在線教程都使用三角形而不是線條。 – carey

回答

1

是的。紋理線,而不是使用點畫和阿爾法混合。我更喜歡紋理的鏡像環繞模式,但重複會在模式上工作。如果有的話,使用阿爾法測試去除覆蓋造成神器。就像任何多邊形一樣,將紋理座標放在線上。

無需着色器。