-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtu_06_multobjs.py
65 lines (47 loc) · 2.36 KB
/
tu_06_multobjs.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# import os,sys
# sys.path.append(os.path.abspath(os.path.dirname(__file__)))
from OpenGL.GL import * # pylint: disable=W0614
from utils.meshViewer import MeshViewWindow, meshWithRender
from utils.shaderLoader import Shader
import glm
class meshFromArray(meshWithRender):
def __init__(self, vertex_array, color_array):
self.vertex_data = vertex_array
self.color_data = color_array
def loadShader(self):
self.shader = Shader()
self.shader.initShaderFromGLSL(
["glsl/tu01/vertex.glsl"], ["glsl/tu01/fragment.glsl"])
self.MVP_ID = glGetUniformLocation(self.shader.program, "MVP")
def loadObject(self):
self.vertexbuffer = glGenBuffers(1)
glBindBuffer(GL_ARRAY_BUFFER, self.vertexbuffer)
glBufferData(GL_ARRAY_BUFFER, len(self.vertex_data)*4,
(GLfloat * len(self.vertex_data))(*self.vertex_data), GL_STATIC_DRAW)
self.vertexLen = len(self.vertex_data)
self.colorbuffer = glGenBuffers(1)
glBindBuffer(GL_ARRAY_BUFFER, self.colorbuffer)
glBufferData(GL_ARRAY_BUFFER, len(self.color_data)*4, (GLfloat *
len(self.color_data))(*self.color_data), GL_STATIC_DRAW)
def loadTexture(self):
self.texture = None
def rendering(self, MVP,View,Projection):
self.shader.begin()
glUniformMatrix4fv(self.MVP_ID, 1, GL_FALSE, glm.value_ptr(MVP) )
glEnableVertexAttribArray(0)
glBindBuffer(GL_ARRAY_BUFFER, self.vertexbuffer)
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, None)
glEnableVertexAttribArray(1)
glBindBuffer(GL_ARRAY_BUFFER, self.colorbuffer)
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, None)
glDrawArrays(GL_TRIANGLES, 0, self.vertexLen)
glDisableVertexAttribArray(0)
glDisableVertexAttribArray(1)
self.shader.end()
from utils.meshFromObj import meshFromObj
from tu_01_color_cube import g_vertex_buffer_data, g_color_buffer_data
if __name__ == "__main__":
win = MeshViewWindow().init_default()
win.add_mesh(meshFromObj(meshName="resources/tu04/suzanne.obj",textureName="resources/tu04/uvmap.DDS",location=[0.0,2.0,0.0]))
win.add_mesh(meshFromArray(g_vertex_buffer_data, g_color_buffer_data))
win.run()