File tree Expand file tree Collapse file tree 5 files changed +73
-0
lines changed
Expand file tree Collapse file tree 5 files changed +73
-0
lines changed Original file line number Diff line number Diff line change 1515class DemosysTestCase (TestCase ):
1616
1717 window = context .window ()
18+ ctx = context .ctx ()
1819
1920 def create_shader (self , source = None , path = None ):
2021 """
Original file line number Diff line number Diff line change 1+ #version 330
2+
3+ #if defined VERTEX_SHADER
4+
5+ in uint in_val;
6+ out uint out_val;
7+
8+ void main() {
9+ out_val = in_val + 1u;
10+ }
11+ #endif
Original file line number Diff line number Diff line change 1+ #version 330
2+
3+ #if defined VERTEX_SHADER
4+ in vec3 in_position;
5+ in vec3 in_instance;
6+
7+ void main() {
8+ gl_Position = vec4 (in_position + in_instance, 1.0 );
9+ }
10+
11+ #elif defined FRAGMENT_SHADER
12+
13+ out vec4 fragColor;
14+
15+ void main() {
16+ fragColor = vec4 (1.0 );
17+ }
18+ #endif
Original file line number Diff line number Diff line change 99import os
1010import re
1111import unittest
12+ from demosys .test import DemosysTestCase
1213
1314import demosys
1415from demosys import effects , opengl
Original file line number Diff line number Diff line change 1+ from demosys .test import DemosysTestCase
2+ from demosys .opengl import VAO
3+ from demosys import geometry
4+
5+
6+ class VAOTest (DemosysTestCase ):
7+
8+ def test_create (self ):
9+ shader = self .create_shader (path = "vf_pos.glsl" )
10+ vao = VAO ("test" )
11+ vao .buffer (
12+ self .ctx .buffer (reserve = 12 ),
13+ '3f' ,
14+ "in_position" ,
15+ )
16+ vao .draw (shader )
17+
18+ def test_transform (self ):
19+ shader = self .create_shader (path = "v_write_1.glsl" )
20+ vao = VAO ("transform" )
21+ vao .buffer (
22+ self .ctx .buffer (reserve = 12 ),
23+ '1u' ,
24+ 'in_val' ,
25+ )
26+ result = self .ctx .buffer (reserve = 12 )
27+ vao .transform (shader , result )
28+ self .assertEqual (
29+ result .read (),
30+ b'\x01 \x00 \x00 \x00 \x01 \x00 \x00 \x00 \x01 \x00 \x00 \x00 ' ,
31+ )
32+
33+ def test_instanced (self ):
34+ shader = self .create_shader (path = "vf_instanced.glsl" )
35+ vao = geometry .cube (1.0 , 1.0 , 1.0 )
36+ vao .buffer (
37+ self .ctx .buffer (reserve = 4 * 10 ),
38+ '1f' ,
39+ "in_instance" ,
40+ per_instance = True ,
41+ )
42+ vao .draw (shader , instances = 10 )
You can’t perform that action at this time.
0 commit comments