2016-03-02 81 views
0

首先:是的,我知道這是一個非常過時的編程界面。但是一些目標機器甚至不保證OpenGL 2.1,這就是爲什麼它仍然需要使用。積分不繪製

我的問題:使用OpenGL繪製某些幾何圖形時,未繪製包含2點的點和折線。是否有至少有三個座標點的多段線,它可以平穩運行。所以這是行不通的:

glBegin(GL_POINT); 
glVertex3f(...); 
glEnd(); 

glBegin(GL_LINE_STRIP); 
glVertex3f(...); 
glVertex3f(...); 
glEnd(); 

...而這造成的結果預期:

glBegin(GL_LINE_STRIP); 
glVertex3f(...); 
glVertex3f(...); 
glVertex3f(...); 
... 
glEnd(); 

這是我的初始化:

glEnable(GL_CULL_FACE); 
glEnable(GL_DEPTH_TEST); 
glEnable(GL_BLEND); 

glEnable(GL_LINE_SMOOTH); 
glEnable(GL_POINT_SMOOTH); 
glEnable(GL_POLYGON_SMOOTH); 
glShadeModel(GL_SMOOTH); 
glHint(GL_POINT_SMOOTH_HINT, GL_NICEST); 
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); 
glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST); 

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glFrustum(-0.5f, 0.5f, -0.5f, 0.5f, 1.0f, 1000.0f); 

任何想法,對於這種現象的原因是什麼?爲什麼簡單的線條和點不被繪製?

+0

如果您從工作的3點線條上移除頂點,或者完全不同的1點和2點繪圖命令不起作用,它會停止工作嗎? – dognotdog

+0

dognotdog:當移除一個頂點時,它會停止,只留下兩個 – Elmi

+0

很奇怪,您是否嘗試過不平滑或切換渲染器(軟件/硬件)?這可能是你正在碰到的一些晦澀的錯誤,至少我沒有看到任何明顯的原因,即使在OpenGL的奇怪世界中也是如此。 – dognotdog

回答

-1

嘗試GL_POINTS而不是GL_POINTGL_POINTS是一種枚舉,告訴OpenGL渲染點。我相信GL_POINT用於修改渲染模式(渲染實心多邊形(GL_FILL),渲染線框多邊形(GL_LINE)或渲染斷開的多邊形頂點(GL_POINT))。我想先澄清一下,但當時想不出一個好的解釋方法。