我目前正在研究OpenGL
(python)中的灯光,我有一个想法,并有这个想法一个问题和一个问题。用类构造函数创建opengl灯
因为我正在阅读文档here。我有一个想法,如果我可以编写一个class
(构造函数)来创建灯光作为将所有输入参数(属性)设置为默认(由我定义)的对象,但是如果在创建新灯光对象时定义了它们,我可以覆盖它们。该Light
类应该是这样的:
from OpenGL import *
from OpenGL.GL import *
from OpenGL.GLU import *
from itertools import count
class Light(object):
'''
classdocs
'''
_i = count()
def __init__(self, light_position):
'''
Constructor
'''
self.i = self._i.next()
self.light_position = light_position
glEnable(GL_LIGHTi)
glLightfv(GL_LIGHTi, GL_POSITION, self.light_position)
的问题如下: 如果可以做到这一点(这样)我有一个如何使表达GL_LIGHTi
的正确形式的文档here中存在的问题它是在Notes中说:
这是每次都这样
GL_LIGHTi = GL_LIGHT0+i
那么有没有写这个办法正确(蟒蛇)类或这是一个坏主意(是可能的)? glEnable()
接受什么类型的输入,因为我知道它可以与glEnable(GL_LIGHT0)
一起使用,但如果i=0
不接受glEnable(str(GL_LIGHT)+str(i))
。
正如我所看到的,如果您可能已经创建/定义了8个灯光及其所有参数,那么代码会稍微短一些。
这就是我想要做的。感谢您提供快速和明确的答案。 – avstenit