2013-09-21 23 views
0

我畫3線,我做了一個函數(簡化,工作爲例):線頂點太厚(不管寬度是什麼)

template<class... Args> inline void DrawPoly(float width , int color, Args... args) 
{ 
    glLineWidth(width); 
    ofSetHexColor(color); 
    glBegin(GL_LINES); 
    std::array<ofPoint, sizeof...(args)> list = {args...}; 
    for(size_t i = 1, j = list.size(); i < j; ++i) 
    { 
     glVertex3f(list[i-1].x, list[i-1].y, list[i-1].z); 
     glVertex3f(list[i].x, list[i].y, list[i].z); 
    } 
    glEnd(); 
} 

它它的工作很好,但我可以」噸得到良好的1像素大小的線。不管我怎麼設定寬度。

這是我如何調用該函數:(!不管我有多低寬度)

DrawPoly(0.001,0x77777777,ofPoint(150,150),ofPoint(200,150),ofPoint(200,200),ofPoint(150,200)); 

,這是結果:

enter image description here

我不理解爲什麼會發生這種情況,我試圖從directX和等效代碼中切換出我需要的結果:

enter image description here

我該如何解決這個問題?這發生在我所有的線/聚形狀代碼中! :(

回答

3

最有可能的是你正在一個全屏抗鋸齒幀緩衝(多重採樣)渲染,而不是擊中確切的像素中心所以你的線實際上覆蓋成兩行/像素列給出的效果。強制關閉反鋸齒功能(使用GPU驅動控制面板)

+0

ofAntiAliasingDisable();做了詭計,謝謝:) – Gizmo

+0

@Gizmo:嗯,它並不能真正解決問題,也就是說,不會像在像素中心一樣。 – datenwolf