fixes most bugs
This commit is contained in:
parent
325da79fac
commit
dede00377e
7 changed files with 321 additions and 262 deletions
Lights
|
@ -14,8 +14,9 @@ class Light:
|
|||
programId = {}
|
||||
depthshaderId = -1
|
||||
|
||||
def getDepthProgram(self,vertexshader=-1,geometryshader=-1):
|
||||
if ((vertexshader,geometryshader) not in self.programId.keys() and vertexshader != -1 and geometryshader != -1):
|
||||
def getDepthProgram(self, vertexshader=-1, geometryshader=-1):
|
||||
if ((
|
||||
vertexshader, geometryshader) not in self.programId.keys() and vertexshader != -1 and geometryshader != -1):
|
||||
if self.depthshaderId == -1:
|
||||
with open('./Lights/depthfragment.glsl', 'r') as f:
|
||||
fragment_shader_string = f.read()
|
||||
|
@ -33,24 +34,24 @@ class Light:
|
|||
self.programId[(vertexshader, geometryshader)] = program_id
|
||||
return program_id
|
||||
else:
|
||||
if (vertexshader,geometryshader) not in self.programId.keys():
|
||||
if (vertexshader, geometryshader) not in self.programId.keys():
|
||||
return -1
|
||||
return self.programId[(vertexshader,geometryshader)]
|
||||
|
||||
|
||||
return self.programId[(vertexshader, geometryshader)]
|
||||
|
||||
def __init__(self):
|
||||
self._ModelviewProjectionMatrix = np.identity(4)
|
||||
self._pos = [0,0,0]
|
||||
self._lightColor = [1,1,1]
|
||||
self._pos = [0, 0, 0]
|
||||
self._lightColor = [1, 1, 1]
|
||||
self.FramebufferId = -1
|
||||
self.DepthBuffer = -1
|
||||
self.map_size = 1024
|
||||
|
||||
@property
|
||||
def lightColor(self):
|
||||
return self._lightColor
|
||||
|
||||
@lightColor.setter
|
||||
def lightColor(self,value):
|
||||
def lightColor(self, value):
|
||||
self._lightColor = value
|
||||
|
||||
@property
|
||||
|
@ -66,7 +67,7 @@ class Light:
|
|||
return self._pos
|
||||
|
||||
@pos.setter
|
||||
def pos(self,value):
|
||||
def pos(self, value):
|
||||
self._pos = value
|
||||
|
||||
def prepareForDepthMapping(self):
|
||||
|
@ -74,18 +75,23 @@ class Light:
|
|||
if self.FramebufferId == -1:
|
||||
self.FramebufferId = glGenFramebuffers(1)
|
||||
new = True
|
||||
glClearColor(1.0,1.0,1.0,1.0)
|
||||
glBindFramebuffer(GL_FRAMEBUFFER,self.FramebufferId)
|
||||
#glCullFace(GL_FRONT)
|
||||
glViewport(0, 0, 512, 512)
|
||||
glClearColor(1.0, 1.0, 1.0, 1.0)
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, self.FramebufferId)
|
||||
glCullFace(GL_FRONT)
|
||||
glViewport(0, 0, self.map_size, self.map_size)
|
||||
if new:
|
||||
if self.DepthBuffer == -1:
|
||||
self.DepthBuffer = glGenTextures(1)
|
||||
glBindTexture(GL_TEXTURE_2D, self.DepthBuffer)
|
||||
glTexImage2D(GL_TEXTURE_2D, 0,GL_DEPTH_COMPONENT, 512, 512, 0,GL_DEPTH_COMPONENT, GL_FLOAT, None)
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, self.map_size, self.map_size, 0, GL_DEPTH_COMPONENT, GL_FLOAT, None)
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
|
||||
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,GL_TEXTURE_2D, self.FramebufferId, 0)
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER)
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER)
|
||||
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, np.array([0, 0, 0], dtype=np.float32))
|
||||
|
||||
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, self.FramebufferId, 0)
|
||||
|
||||
DrawBuffers = [GL_NONE]
|
||||
glDrawBuffers(DrawBuffers)
|
||||
|
@ -97,5 +103,4 @@ class Light:
|
|||
DrawBuffers = [GL_COLOR_ATTACHMENT0]
|
||||
glDrawBuffers(DrawBuffers)
|
||||
glClearColor(0.0, 0.0, 0.0, 1.0)
|
||||
glBindFramebuffer(GL_FRAMEBUFFER,0)
|
||||
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue