-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtest-4-4.py
76 lines (60 loc) · 1.9 KB
/
test-4-4.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
66
67
68
69
70
71
72
73
74
75
76
# import standard library
import sys
# import third party library
# import local library
from core.base import Base, baseApp
from core.renderer import Renderer
from core.scene import Scene
from core.camera import Camera
from core.mesh import Mesh
from geometry.sphereGeometry import SphereGeometry
from material.material import Material
# render a basic scene
class Test(Base):
def __init__(self, screenSize=[512, 512], title=""):
super().__init__(screenSize, title)
def initializeGL(self):
super().initializeGL()
self.renderer = Renderer(self)
self.scene = Scene()
self.camera = Camera(aspectRatio=800 / 600)
self.camera.setPosition([0, 0, 7])
geometry = SphereGeometry(radius=3)
vsCode = """
in vec3 vertexPosition;
out vec3 position;
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projectionMatrix;
void main()
{
vec4 pos = vec4(vertexPosition, 1.0);
gl_Position = projectionMatrix * viewMatrix * modelMatrix * pos;
position = vertexPosition;
}
"""
fsCode = """
in vec3 position;
out vec4 fragColor;
void main()
{
vec3 color = mod(position, 1.0);
fragColor = vec4(color, 1.0);
}
"""
material = Material(vsCode, fsCode)
material.locateUniforms()
self.mesh = Mesh(geometry, material)
self.scene.add(self.mesh)
def paintGL(self):
super().paintGL()
self.mesh.rotateY(0.0514)
# self.mesh.rotateX(0.0337)
self.renderer.render(self.scene, self.camera)
def main():
app = baseApp(sys.argv)
window = Test([800, 600], "Test-4-4")
window.show()
sys.exit(app.exec())
if __name__ == '__main__':
main()