Skip to content

Commit 530f17c

Browse files
author
Jorge A. Gomes
committed
added rl5 (binding generator rewrite) working examples (shaders and raymath)
1 parent 35c25fa commit 530f17c

14 files changed

+916
-46
lines changed

examples/core_2d_camera_mouse_zoom.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ def main():
3333
while not window_should_close():
3434
if is_mouse_button_down(MOUSE_BUTTON_RIGHT):
3535
delta = get_mouse_delta()
36-
delta = vector2scale(delta, -1.0 / camera.zoom)
37-
camera.target = vector2add(camera.target, delta)
36+
delta = delta * (-1.0 / camera.zoom)
37+
camera.target += delta
3838

3939
wheel = get_mouse_wheel_move()
4040

examples/core_2d_camera_split_screen.py

+46-44
Original file line numberDiff line numberDiff line change
@@ -31,89 +31,91 @@ def main():
3131

3232
init_window(screenWidth, screenHeight, "raylib [core] example - 2d camera split screen")
3333

34-
player1 = Rectangle(200, 200, PLAYER_SIZE, PLAYER_SIZE)
35-
player2 = Rectangle(250, 200, PLAYER_SIZE, PLAYER_SIZE)
34+
red_player = Rectangle(200, 200, PLAYER_SIZE, PLAYER_SIZE)
35+
blue_player = Rectangle(250, 200, PLAYER_SIZE, PLAYER_SIZE)
3636

37-
camera1 = Camera2D(0)
38-
camera1.target = Vector2(player1.x, player1.y)
39-
camera1.offset = Vector2(200.0, 200.0)
40-
camera1.rotation = 0.0
41-
camera1.zoom = 1.0
37+
redPlayerCamera = Camera2D()
38+
redPlayerCamera.target = Vector2(red_player.x, red_player.y)
39+
redPlayerCamera.offset = Vector2(200.0, 200.0)
40+
redPlayerCamera.rotation = 0.0
41+
redPlayerCamera.zoom = 1.0
4242

43-
camera2 = Camera2D(0)
44-
camera2.target = Vector2(player2.x, player2.y)
45-
camera2.offset = Vector2(200.0, 200.0)
46-
camera2.rotation = 0.0
47-
camera2.zoom = 1.0
43+
bluePlayerCamera = Camera2D()
44+
bluePlayerCamera.target = Vector2(blue_player.x, blue_player.y)
45+
bluePlayerCamera.offset = Vector2(200.0, 200.0)
46+
bluePlayerCamera.rotation = 0.0
47+
bluePlayerCamera.zoom = 1.0
4848

49-
screenCamera1 = load_render_texture(screenWidth / 2, screenHeight)
50-
screenCamera2 = load_render_texture(screenWidth / 2, screenHeight)
49+
redPlayerScreenCamera = load_render_texture(screenWidth / 2, screenHeight)
50+
bluePlayerScreenCamera = load_render_texture(screenWidth / 2, screenHeight)
5151

52-
splitScreenRect = Rectangle(0.0, 0.0, screenCamera1.texture.width, screenCamera1.texture.height)
52+
splitScreenRect1 = Rectangle(0.0, 0.0, redPlayerScreenCamera.texture.width, redPlayerScreenCamera.texture.height * -1.0)
53+
splitScreenRect2 = Rectangle(0.0, 0.0, redPlayerScreenCamera.texture.width, redPlayerScreenCamera.texture.height * -1.0)
5354

5455
set_target_fps(60)
55-
56+
5657
while not window_should_close():
57-
if is_key_down(KEY_S):
58-
player1.y += 3.0
59-
elif is_key_down(KEY_W):
60-
player1.y -= 3.0
58+
if is_key_down(KEY_KP_8):
59+
red_player.y += 3.0
60+
elif is_key_down(KEY_KP_5):
61+
red_player.y -= 3.0
6162

62-
if is_key_down(KEY_D):
63-
player1.x += 3.0
64-
elif is_key_down(KEY_A):
65-
player1.x -= 3.0
63+
if is_key_down(KEY_KP_6):
64+
red_player.x += 3.0
65+
elif is_key_down(KEY_KP_4):
66+
red_player.x -= 3.0
6667

6768
if is_key_down(KEY_UP):
68-
player2.y -= 3.0
69+
blue_player.y -= 3.0
6970
elif is_key_down(KEY_DOWN):
70-
player2.y += 3.0
71+
blue_player.y += 3.0
7172

7273
if is_key_down(KEY_RIGHT):
73-
player2.x += 3.0
74+
blue_player.x += 3.0
7475
elif is_key_down(KEY_LEFT):
75-
player2.x -= 3.0
76+
blue_player.x -= 3.0
7677

77-
camera1.target = Vector2(player1.x, player1.y)
78-
camera2.target = Vector2(player2.x, player2.y)
78+
redPlayerCamera.target = red_player.xy
79+
bluePlayerCamera.target = blue_player.xy
7980

80-
with texture_mode(screenCamera1):
81+
with texture_mode(redPlayerScreenCamera):
8182
clear_background(RAYWHITE)
8283

83-
begin_mode2d(camera1)
84-
draw_rectangle_rec(player1, RED)
85-
draw_rectangle_rec(player2, BLUE)
84+
begin_mode2d(redPlayerCamera)
85+
draw_rectangle_rec(red_player, RED)
86+
draw_rectangle_rec(blue_player, GRAY)
8687
end_mode2d()
8788

8889
draw_rectangle(0, 0, get_screen_width() / 2, 30, fade(RAYWHITE, 0.6))
89-
draw_text("PLAYER1: W/S/A/D to move", 10, 10, 10, MAROON)
90+
draw_text("RED PLAYER: W/S/A/D to move", 10, 10, 10, MAROON)
9091

9192
# end_texture_mode()
9293

93-
with texture_mode(screenCamera2):
94+
with texture_mode(bluePlayerScreenCamera):
9495
clear_background(RAYWHITE)
9596

96-
begin_mode2d(camera2)
97-
draw_rectangle_rec(player1, RED)
98-
draw_rectangle_rec(player2, BLUE)
97+
begin_mode2d(bluePlayerCamera)
98+
draw_rectangle_rec(red_player, GRAY)
99+
draw_rectangle_rec(blue_player, BLUE)
99100
end_mode2d()
100101

102+
draw_text("BLUE", blue_player.x, blue_player.y, 10, DARKBLUE)
101103
draw_rectangle(0, 0, get_screen_width() / 2, 30, fade(RAYWHITE, 0.6))
102-
draw_text("PLAYER2: UP/DOWN/LEFT/RIGHT to move", 10, 10, 10, DARKBLUE)
104+
draw_text("BLUE PLAYER: UP/DOWN/LEFT/RIGHT to move", 10, 10, 10, DARKBLUE)
103105

104106
# end_texture_mode()
105107

106108
with drawing():
107109

108110
clear_background(BLACK)
109-
draw_texture_rec(screenCamera1.texture, splitScreenRect, Vector2(0, 0), WHITE)
110-
draw_texture_rec(screenCamera2.texture, splitScreenRect, Vector2(screenWidth / 2.0, 0), WHITE)
111+
draw_texture_rec(redPlayerScreenCamera.texture, splitScreenRect1, Vector2(0, 0), WHITE)
112+
draw_texture_rec(bluePlayerScreenCamera.texture, splitScreenRect2, Vector2(screenWidth / 2.0, 0), WHITE)
111113
draw_rectangle(get_screen_width() / 2 - 2, 0, 4, get_screen_height(), LIGHTGRAY)
112114

113115
# end_drawing()
114116

115-
unload_render_texture(screenCamera1)
116-
unload_render_texture(screenCamera2)
117+
unload_render_texture(redPlayerScreenCamera)
118+
unload_render_texture(bluePlayerScreenCamera)
117119

118120
close_window()
119121

examples/raymath_vector_angle.py

+88
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
2+
import sys
3+
import os
4+
from ctypes import byref
5+
from raylibpy import *
6+
# import raymath.h
7+
8+
def main():
9+
10+
screenWidth = 800
11+
screenHeight = 450
12+
13+
init_window(screenWidth, screenHeight, "raylib [math] example - vector angle")
14+
15+
v0 = Vector2(screenWidth / 2, screenHeight / 2)
16+
v1 = v0 + Vector2(100.0, 80.0)
17+
v2 = Vector2()
18+
angle = 0.0
19+
angleMode = 0
20+
21+
set_target_fps(60)
22+
23+
while not window_should_close():
24+
startangle = 0.0
25+
26+
if angleMode == 0:
27+
startangle = -vector2_line_angle(v0, v1) * RAD2DEG
28+
29+
if angleMode == 1:
30+
startangle = 0.0
31+
v2 = get_mouse_position()
32+
33+
if is_key_pressed(KEY_SPACE):
34+
angleMode = not angleMode
35+
36+
if angleMode == 0 and is_mouse_button_down(MOUSE_BUTTON_RIGHT):
37+
v1 = get_mouse_position()
38+
39+
if angleMode == 0:
40+
v1Normal = vector2_normalize(vector2_subtract(v1, v0))
41+
v2Normal = vector2_normalize(vector2_subtract(v2, v0))
42+
angle = vector2_angle(v1Normal, v2Normal) * RAD2DEG
43+
elif angleMode == 1:
44+
angle = vector2_line_angle(v0, v2) * RAD2DEG
45+
46+
begin_drawing()
47+
48+
clear_background(RAYWHITE)
49+
50+
if angleMode == 0:
51+
draw_text("MODE 0: Angle between V1 and V2", 10, 10, 20, BLACK)
52+
draw_text("Right Click to Move V2", 10, 30, 20, DARKGRAY)
53+
draw_line_ex(v0, v1, 2.0, BLACK)
54+
draw_line_ex(v0, v2, 2.0, RED)
55+
draw_circle_sector(v0, 40.0, startangle, startangle + angle, 32, fade(GREEN, 0.6))
56+
57+
elif angleMode == 1:
58+
draw_text("MODE 1: Angle formed by line V1 to V2", 10, 10, 20, BLACK)
59+
draw_line(0, screenHeight / 2, screenWidth, screenHeight / 2, LIGHTGRAY)
60+
draw_line_ex(v0, v2, 2.0, RED)
61+
draw_circle_sector(v0, 40.0, startangle, startangle - angle, 32, fade(GREEN, 0.6))
62+
63+
draw_text("v0", v0.x, v0.y, 10, DARKGRAY)
64+
65+
if angleMode == 0 and vector2_subtract(v0, v1).y > 0.0:
66+
draw_text("v1", v1.x, v1.y - 10.0, 10, DARKGRAY)
67+
68+
if angleMode == 0 and vector2_subtract(v0, v1).y < 0.0:
69+
draw_text("v1", v1.x, v1.y, 10, DARKGRAY)
70+
71+
if angleMode == 1:
72+
draw_text("v1", v0.x + 40.0, v0.y, 10, DARKGRAY)
73+
74+
draw_text("v2", v2.x - 10.0, v2.y - 10.0, 10, DARKGRAY)
75+
draw_text("Press SPACE to change MODE", 460, 10, 20, DARKGRAY)
76+
draw_text(text_format("ANGLE: %2.2f", Float(angle)), 10, 70, 20, LIME)
77+
78+
end_drawing()
79+
80+
close_window()
81+
return 0
82+
83+
84+
if __name__ == "__main__":
85+
if len(sys.argv) >= 2 and isinstance(sys.argv[1], str):
86+
os.chdir(sys.argv[1])
87+
print("Working dir:", os.getcwd())
88+
sys.exit(main())

examples/shaders_custom_uniform.py

+86
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
2+
import sys
3+
import os
4+
from ctypes import byref
5+
from raylibpy import *
6+
7+
GLSL_VERSION = 330
8+
9+
def main():
10+
11+
screenWidth = 800
12+
screenHeight = 450
13+
14+
set_config_flags(FLAG_MSAA_4X_HINT)
15+
16+
init_window(screenWidth, screenHeight, "raylib [shaders] example - custom uniform variable")
17+
18+
camera = Camera(0)
19+
camera.position = Vector3(8.0, 8.0, 8.0)
20+
camera.target = Vector3(0.0, 1.5, 0.0)
21+
camera.up = Vector3(0.0, 1.0, 0.0)
22+
camera.fovy = 45.0
23+
camera.projection = CAMERA_PERSPECTIVE
24+
25+
model = load_model("resources/models/barracks.obj")
26+
texture = load_texture("resources/models/barracks_diffuse.png")
27+
model.materials[0].maps[MATERIAL_MAP_ALBEDO].texture = texture
28+
29+
position = Vector3(0.0, 0.0, 0.0)
30+
31+
shader = load_shader(None, f"resources/shaders/glsl{GLSL_VERSION}/swirl.fs")
32+
swirlCenterLoc = get_shader_location(shader, "center")
33+
34+
swirlCenter = (Float * 2)(screenWidth / 2, screenHeight / 2)
35+
36+
target = load_render_texture(screenWidth, screenHeight)
37+
38+
set_target_fps(60)
39+
40+
while not window_should_close():
41+
update_camera(byref(camera), CAMERA_ORBITAL)
42+
43+
mousePosition = get_mouse_position()
44+
swirlCenter[0] = mousePosition.x
45+
swirlCenter[1] = screenHeight - mousePosition.y
46+
47+
set_shader_value(shader, swirlCenterLoc, swirlCenter, SHADER_UNIFORM_VEC2)
48+
49+
with texture_mode(target):
50+
clear_background(RAYWHITE)
51+
52+
with mode3d(camera):
53+
draw_model(model, position, 0.5, WHITE)
54+
draw_grid(10, 1.0)
55+
# end_mode3d()
56+
57+
draw_text("TEXT DRAWN IN RENDER TEXTURE", 200, 10, 30, RED)
58+
# end_texture_mode()
59+
60+
with drawing():
61+
clear_background(RAYWHITE)
62+
63+
with shader_mode(shader):
64+
draw_texture_rec(target.texture, Rectangle(0, 0, target.texture.width, target.texture.height), Vector2(0, 0), WHITE)
65+
# end_shader_mode()
66+
67+
draw_text("(c) Barracks 3D model by Alberto Cano", screenWidth - 220, screenHeight - 20, 10, GRAY)
68+
draw_fps(10, 10)
69+
70+
# end_drawing()
71+
72+
unload_shader(shader)
73+
unload_texture(texture)
74+
unload_model(model)
75+
unload_render_texture(target)
76+
77+
close_window()
78+
79+
return 0
80+
81+
82+
if __name__ == "__main__":
83+
if len(sys.argv) >= 2 and isinstance(sys.argv[1], str):
84+
os.chdir(sys.argv[1])
85+
print("Working dir:", os.getcwd())
86+
sys.exit(main())

examples/shaders_eratosthenes.py

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
2+
import sys
3+
import os
4+
from ctypes import byref
5+
from raylibpy import *
6+
7+
GLSL_VERSION = 330
8+
9+
def main():
10+
11+
screenWidth = 800
12+
screenHeight = 450
13+
14+
init_window(screenWidth, screenHeight, "raylib [shaders] example - Sieve of Eratosthenes")
15+
16+
target = load_render_texture(screenWidth, screenHeight)
17+
shader = load_shader(None, f"resources/shaders/glsl{GLSL_VERSION}/eratosthenes.fs")
18+
19+
set_target_fps(60)
20+
21+
while not window_should_close():
22+
23+
begin_texture_mode(target)
24+
clear_background(BLACK)
25+
draw_rectangle(0, 0, get_screen_width(), get_screen_height(), BLACK)
26+
end_texture_mode()
27+
28+
begin_drawing()
29+
clear_background(RAYWHITE)
30+
31+
begin_shader_mode(shader)
32+
draw_texture_rec(target.texture, Rectangle(0, 0, target.texture.width, -target.texture.height), Vector2(0.0, 0.0), WHITE)
33+
end_shader_mode()
34+
35+
end_drawing()
36+
37+
unload_shader(shader)
38+
unload_render_texture(target)
39+
close_window()
40+
41+
return 0
42+
43+
44+
if __name__ == "__main__":
45+
if len(sys.argv) >= 2 and isinstance(sys.argv[1], str):
46+
os.chdir(sys.argv[1])
47+
print("Working dir:", os.getcwd())
48+
sys.exit(main())

0 commit comments

Comments
 (0)