Skip to content

Commit 6e260fc

Browse files
committed
Test VAO
1 parent 0d6bf45 commit 6e260fc

File tree

5 files changed

+73
-0
lines changed

5 files changed

+73
-0
lines changed

demosys/test/testcase.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
class DemosysTestCase(TestCase):
1616

1717
window = context.window()
18+
ctx = context.ctx()
1819

1920
def create_shader(self, source=None, path=None):
2021
"""
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
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
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
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

tests/test_docs.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import os
1010
import re
1111
import unittest
12+
from demosys.test import DemosysTestCase
1213

1314
import demosys
1415
from demosys import effects, opengl

tests/test_vao.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
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)

0 commit comments

Comments
 (0)