我在Win7 x64上使用Python OpenGL,版本'3.3.0 - Build 8.15.10.2725'。OpenGL線出現灰色,啓用照明
我正在使用GL_LINES在3D空間中繪製2D網格和XYZ軸。 當我禁用照明網格顏色出來罰款。
當我啓用照明和光Z位置> 0時,網格顏色很好。
但是,當我把光Z位置< 0時,即使模型的3D部分正常渲染,網格顏色幾乎是灰色的。由於線條是一維的,我不認爲它們有表面;我不確定OpenGL如何在照明環境下考慮線條。
我能獲得彩色與照明Z位置線< 0,如果我用一個愚蠢的片段着色器如下:
# From http://bazaar.launchpad.net/~mcfletch/openglcontext/trunk/view/head:/tests/shader_2.py
self.color_fragmentshader = shaders.compileShader("""
varying vec4 vertex_color;
void main() {
gl_FragColor = vertex_color;
}
""", GL.GL_FRAGMENT_SHADER)
但是,如果我離開了默認着色器(不是通過調用glUseProgram),或使用一些其他我找到的着色器,然後2D線變灰。
我的網格和軸功能如下:
def drawGrid(self, size, squares):
GL.glLineWidth(0.1)
GL.glColor((trolltechGreen.light().red()/255,
trolltechGreen.light().green()/255,
trolltechGreen.light().blue()/255))
GL.glBegin(GL.GL_LINES)
for x in np.linspace(-size, size, squares+1, True):
GL.glVertex2f(x, -size)
GL.glVertex2f(x, size)
for y in np.linspace(-size, size, squares+1, True):
GL.glVertex2f(-size, y)
GL.glVertex2f(size, y)
GL.glVertex2f(-size,-size)
GL.glVertex2f(size,-size)
GL.glVertex2f(size,size)
GL.glVertex2f(-size,size)
GL.glEnd()
def drawAxes(self, size):
GL.glLineWidth(5)
GL.glBegin(GL.GL_LINES)
GL.glColor(1,0,0,1)
GL.glVertex2f(0,0)
GL.glVertex2f(size,0)
GL.glColor(0,1,0,1)
GL.glVertex2f(0,0)
GL.glVertex2f(0,size)
GL.glColor(0,0,1,1)
GL.glVertex2f(0,0)
GL.glVertex3f(0,0,size)
GL.glEnd()
我還可以得到線的顏色出來罰款,如果我每次我渲染線時間而改變的着色器,然後再切換到呈現3D對象,但我不認爲這是正確的解決方案。
這是問題的樣子。照明位於-Z的茶壺「後面」。如何強制線條忽略光線,而不需要不斷更改着色器?謝謝!