使用 PyOpenGL 改变图形的颜色
Change color of figures with PyOpenGL
[已关闭] 我必须在 Python 中使用库 Opengl 编写一个基本程序...当有人按下 'r' 键时,图变为红色,当有人按下键 'g' 时变为绿色,当有人按下 'b' 时变为蓝色。我不知道为什么颜色没有改变,但我知道程序知道什么时候按下一个键,这是我的代码...
from OpenGL.GL import *
from OpenGL.GLUT import *
from math import pi
from math import sin
from math import cos
def initGL(width, height):
glClearColor(0.529, 0.529, 0.529, 0.0)
glMatrixMode(GL_PROJECTION)
def dibujarCirculo():
glClear(GL_COLOR_BUFFER_BIT)
glColor3f(0.0, 0.0, 0.0)
glBegin(GL_POLYGON)
for i in range(400):
x = 0.25*sin(i) #Cordenadas polares x = r*sin(t) donde r = radio/2 (Circunferencia centrada en el origen)
y = 0.25*cos(i) #Cordenadas polares y = r*cos(t)
glVertex2f(x, y)
glEnd()
glFlush()
def keyPressed(*args):
key = args[0]
if key == "r":
glColor3f(1.0, 0.0, 0.0)
print "Presionaste",key
elif key == "g":
glColor3f(0.0, 1.0, 0.0)
print "Presionaste g"
elif key == "b":
glColor3f(0.0, 0.0, 1.0)
print "Presionaste b"
def main():
global window
glutInit(sys.argv)
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB)
glutInitWindowSize(500,500)
glutInitWindowPosition(200,200)
#creando la ventana
window = glutCreateWindow("Taller uno")
glutDisplayFunc(dibujarCirculo)
glutIdleFunc(dibujarCirculo)
glutKeyboardFunc(keyPressed)
initGL(500,500)
glutMainLoop()
if __name__ == "__main__":
main()
我怀疑因为 dibujarCirculo
中的第 2 行将 glColor3f 重置为 (0,0,0),所以您不断丢失在 keyPressed
中所做的更改。您是否尝试过在 dibujarCirculo
以外的地方初始化 glColor3f ?
[已关闭] 我必须在 Python 中使用库 Opengl 编写一个基本程序...当有人按下 'r' 键时,图变为红色,当有人按下键 'g' 时变为绿色,当有人按下 'b' 时变为蓝色。我不知道为什么颜色没有改变,但我知道程序知道什么时候按下一个键,这是我的代码...
from OpenGL.GL import *
from OpenGL.GLUT import *
from math import pi
from math import sin
from math import cos
def initGL(width, height):
glClearColor(0.529, 0.529, 0.529, 0.0)
glMatrixMode(GL_PROJECTION)
def dibujarCirculo():
glClear(GL_COLOR_BUFFER_BIT)
glColor3f(0.0, 0.0, 0.0)
glBegin(GL_POLYGON)
for i in range(400):
x = 0.25*sin(i) #Cordenadas polares x = r*sin(t) donde r = radio/2 (Circunferencia centrada en el origen)
y = 0.25*cos(i) #Cordenadas polares y = r*cos(t)
glVertex2f(x, y)
glEnd()
glFlush()
def keyPressed(*args):
key = args[0]
if key == "r":
glColor3f(1.0, 0.0, 0.0)
print "Presionaste",key
elif key == "g":
glColor3f(0.0, 1.0, 0.0)
print "Presionaste g"
elif key == "b":
glColor3f(0.0, 0.0, 1.0)
print "Presionaste b"
def main():
global window
glutInit(sys.argv)
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB)
glutInitWindowSize(500,500)
glutInitWindowPosition(200,200)
#creando la ventana
window = glutCreateWindow("Taller uno")
glutDisplayFunc(dibujarCirculo)
glutIdleFunc(dibujarCirculo)
glutKeyboardFunc(keyPressed)
initGL(500,500)
glutMainLoop()
if __name__ == "__main__":
main()
我怀疑因为 dibujarCirculo
中的第 2 行将 glColor3f 重置为 (0,0,0),所以您不断丢失在 keyPressed
中所做的更改。您是否尝试过在 dibujarCirculo
以外的地方初始化 glColor3f ?