added renderfunction to a structure.
Complex structure soon to come.
This commit is contained in:
parent
f4c68a8297
commit
fa19643fa0
4 changed files with 32 additions and 7 deletions
|
@ -4,7 +4,6 @@ layout(points) in;
|
||||||
layout(triangle_strip,max_vertices=24) out;
|
layout(triangle_strip,max_vertices=24) out;
|
||||||
|
|
||||||
uniform mat4 projModelViewMatrix;
|
uniform mat4 projModelViewMatrix;
|
||||||
uniform mat3 normalMatrix;
|
|
||||||
uniform mat3 rotMatrix;
|
uniform mat3 rotMatrix;
|
||||||
|
|
||||||
uniform mat4 lightProjModelViewMatrix[7];
|
uniform mat4 lightProjModelViewMatrix[7];
|
||||||
|
|
|
@ -116,4 +116,28 @@ class Structure:
|
||||||
glDisableVertexAttribArray(s)
|
glDisableVertexAttribArray(s)
|
||||||
glDeleteBuffers(1,[s])
|
glDeleteBuffers(1,[s])
|
||||||
glDeleteVertexArrays(1, a)
|
glDeleteVertexArrays(1, a)
|
||||||
check_error("Could not destroy vertex array")
|
check_error("Could not destroy vertex array")
|
||||||
|
|
||||||
|
def render(self,projMatrix,geometryRotMatrix,alternateprograms = None):
|
||||||
|
|
||||||
|
for key,tupel in self.vais.items():
|
||||||
|
if alternateprograms == None:
|
||||||
|
program_id = key
|
||||||
|
else:
|
||||||
|
assert key in alternateprograms.keys
|
||||||
|
program_id = alternateprograms[key]
|
||||||
|
glUseProgram(program_id)
|
||||||
|
check_error("Renderingprogram is not initialized!")
|
||||||
|
|
||||||
|
projection = glGetUniformLocation(program_id, 'projModelViewMatrix')
|
||||||
|
rot = glGetUniformLocation(program_id, 'rotMatrix')
|
||||||
|
|
||||||
|
glUniformMatrix4fv(projection, 1, GL_FALSE, np.array(projMatrix))
|
||||||
|
glUniformMatrix3fv(rot, 1, GL_FALSE, np.array(geometryRotMatrix))
|
||||||
|
|
||||||
|
glBindVertexArray(tupel[0])
|
||||||
|
glDrawArrays(GL_POINTS, 0, len(self.Objects[key]))
|
||||||
|
check_error("Rendering problem")
|
||||||
|
|
||||||
|
glBindVertexArray(0)
|
||||||
|
glUseProgram(0)
|
11
main.py
11
main.py
|
@ -21,6 +21,7 @@ import time
|
||||||
|
|
||||||
name = b'ball_glut'
|
name = b'ball_glut'
|
||||||
|
|
||||||
|
struct = None
|
||||||
program_id = 0
|
program_id = 0
|
||||||
program2_id = 0
|
program2_id = 0
|
||||||
program3_id = 0
|
program3_id = 0
|
||||||
|
@ -124,7 +125,7 @@ def main():
|
||||||
#glAttachShader(program_id, l.FragmentShaderId)
|
#glAttachShader(program_id, l.FragmentShaderId)
|
||||||
glLinkProgram(program_id)
|
glLinkProgram(program_id)
|
||||||
|
|
||||||
|
global struct
|
||||||
struct = Structure()
|
struct = Structure()
|
||||||
struct.addShape(program_id,c)
|
struct.addShape(program_id,c)
|
||||||
struct.buildvertexArrays()
|
struct.buildvertexArrays()
|
||||||
|
@ -206,6 +207,7 @@ def main():
|
||||||
0, 1, 0,
|
0, 1, 0,
|
||||||
1, 0, 0,
|
1, 0, 0,
|
||||||
1, 1, 0], dtype=np.float32), program2_id)
|
1, 1, 0], dtype=np.float32), program2_id)
|
||||||
|
struct.render(projMatrix,rotate(rx, 0, 0))
|
||||||
glutMainLoop()
|
glutMainLoop()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -284,17 +286,18 @@ rx = 0
|
||||||
ry = 0
|
ry = 0
|
||||||
|
|
||||||
def render(program_id,projMatrix,vai,x,y,z):
|
def render(program_id,projMatrix,vai,x,y,z):
|
||||||
ident = np.transpose(np.matrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]], np.float32))
|
|
||||||
|
#global struct
|
||||||
|
#struct.render(translate(x, y, z) * rotate(0,ry,0,True) * projMatrix,rotate(rx, 0, 0))
|
||||||
|
|
||||||
|
|
||||||
glUseProgram(program_id)
|
glUseProgram(program_id)
|
||||||
check_error("Renderingprogram is not initialized!")
|
check_error("Renderingprogram is not initialized!")
|
||||||
|
|
||||||
projection = glGetUniformLocation(program_id, 'projModelViewMatrix')
|
projection = glGetUniformLocation(program_id, 'projModelViewMatrix')
|
||||||
normal = glGetUniformLocation(program_id, 'normalMatrix')
|
|
||||||
rot = glGetUniformLocation(program_id, 'rotMatrix')
|
rot = glGetUniformLocation(program_id, 'rotMatrix')
|
||||||
|
|
||||||
glUniformMatrix4fv(projection, 1, GL_FALSE, np.array(translate(x, y, z) * rotate(0,ry,0,True) * projMatrix))
|
glUniformMatrix4fv(projection, 1, GL_FALSE, np.array(translate(x, y, z) * rotate(0,ry,0,True) * projMatrix))
|
||||||
glUniformMatrix3fv(normal, 1, GL_FALSE, np.array(ident))
|
|
||||||
glUniformMatrix3fv(rot, 1, GL_FALSE, np.array(rotate(rx, 0, 0)))
|
glUniformMatrix3fv(rot, 1, GL_FALSE, np.array(rotate(rx, 0, 0)))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
|
|
||||||
uniform mat4 projModelViewMatrix;
|
uniform mat4 projModelViewMatrix;
|
||||||
uniform mat3 normalMatrix;
|
|
||||||
uniform mat3 rotMatrix;
|
uniform mat3 rotMatrix;
|
||||||
|
|
||||||
layout(location = 0) in vec3 in_position;
|
layout(location = 0) in vec3 in_position;
|
||||||
|
|
Loading…
Reference in a new issue