Fixed CanvasClip() and Rect() on GLES2 driver

This commit is contained in:
n00b
2024-12-05 20:00:21 -05:00
parent 4876640bf4
commit fef3d682e6
9 changed files with 242 additions and 184 deletions

View File

@@ -920,7 +920,8 @@ int main(int argc, char * argv[])
//DEBUG START //DEBUG START
//rc_filename = "/home/n00b/projects/bu/constraint_demo/main.bas"; //rc_filename = "/home/n00b/projects/bu/constraint_demo/main.bas";
//rc_filename = "/home/n00b/projects/rcbasic_alpha3/test_project/main.bas"; //rc_filename = "/home/n00b/projects/bu/rcbasic_v400A6_linux/rcbasic_v400_linux/examples/tile_demo/main.bas";
rc_filename = "/home/n00b/projects/rcbasic_alpha3/test_project/main.bas";
//DEBUG END //DEBUG END
//enable_presets = true; //enable_presets = true;

View File

@@ -15,52 +15,54 @@ N main black 25
N main green 26 N main green 26
N main white 27 N main white 27
N main sprite_canvas 28 N main sprite_canvas 28
N main gz_img 29 N main tile 29
N main rc_img 30 N main gz_img 30
N main rc 31 N main rc_img 31
N main gz 32 N main rc 32
N main gz_x 33 N main gz 33
N main gz_y 34 N main gz_x 34
N main rc_x 35 N main gz_y 35
N main rc_y 36 N main rc_x 36
N main x 37 N main rc_y 37
N main y 38 N main x 38
N main lforce 39 N main y 39
N main lforce 40
S main fnt$ 3 S main fnt$ 3
N main hud_font 40 N main hud_font 41
AS main hud_txt$ 4 AS main hud_txt$ 4
N main.#FOR:0 i 41 N main t_img 42
N main mesh1 42 N main.#FOR:0 i 43
N main actor1 43 N main mesh1 44
N main actor1_texture 44 N main actor1 45
N main c 45 N main actor1_texture 46
N main mat 46 N main c 47
N main a_mat 47 N main mat 48
N main level 48 N main a_mat 49
N main actor2 49 N main level 50
N main ax 50 N main actor2 51
N main ay 51 N main ax 52
N main az 52 N main ay 53
N main init 53 N main az 54
N main i 54 N main init 55
N main vx 55 N main i 56
N main vy 56 N main vx 57
N main vz 57 N main vy 58
N main mass 58 N main vz 59
N main anim 59 N main mass 60
N main num_loops 60 N main anim 61
N main off_x 61 N main num_loops 62
N main off_y 62 N main off_x 63
N main test_mode 63 N main off_y 64
N main.#WHILE:0.#SELECT:0->CASE:0.#IF:7 crx 64 N main test_mode 65
N main.#WHILE:0.#SELECT:0->CASE:0.#IF:7 cry 65 N main.#WHILE:0.#SELECT:0->CASE:0.#IF:7 crx 66
N main.#WHILE:0.#SELECT:0->CASE:0.#IF:7 crz 66 N main.#WHILE:0.#SELECT:0->CASE:0.#IF:7 cry 67
N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:7->CONDITION:0 crx 67 N main.#WHILE:0.#SELECT:0->CASE:0.#IF:7 crz 68
N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:7->CONDITION:0 cry 68 N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:7->CONDITION:0 crx 69
N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:7->CONDITION:0 crz 69 N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:7->CONDITION:0 cry 70
N main.#WHILE:0.#SELECT:0->CASE:0.#IF:9 crx 70 N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:7->CONDITION:0 crz 71
N main.#WHILE:0.#SELECT:0->CASE:0.#IF:9 cry 71 N main.#WHILE:0.#SELECT:0->CASE:0.#IF:9 crx 72
N main.#WHILE:0.#SELECT:0->CASE:0.#IF:9 crz 72 N main.#WHILE:0.#SELECT:0->CASE:0.#IF:9 cry 73
N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:9->CONDITION:0 crx 73 N main.#WHILE:0.#SELECT:0->CASE:0.#IF:9 crz 74
N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:9->CONDITION:0 cry 74 N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:9->CONDITION:0 crx 75
N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:9->CONDITION:0 crz 75 N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:9->CONDITION:0 cry 76
N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:9->CONDITION:0 crz 77

View File

@@ -1,5 +1,5 @@
# depslib dependency file v1.0 # depslib dependency file v1.0
1733115894 source:/home/n00b/Projects/RCBASIC4/rcbasic_build/main.cpp 1733272260 source:/home/n00b/Projects/RCBASIC4/rcbasic_build/main.cpp
<iostream> <iostream>
<stack> <stack>
<vector> <vector>
@@ -54,7 +54,7 @@
1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_global.h 1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_global.h
<inttypes.h> <inttypes.h>
1732562642 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_builtin.h 1733270962 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_builtin.h
"identifier.h" "identifier.h"
1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_vm_asm.h 1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_vm_asm.h

View File

@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_layout_file> <CodeBlocks_layout_file>
<FileVersion major="1" minor="0" /> <FileVersion major="1" minor="0" />
<ActiveTarget name="Release" /> <ActiveTarget name="Debug" />
<File name="tokenizer.h" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="rc_builtin.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="41970" topLine="1016" /> <Cursor1 position="112317" topLine="2509" />
</Cursor> </Cursor>
</File> </File>
<File name="rc_global.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="rc_global.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@@ -12,12 +12,12 @@
<Cursor1 position="13014" topLine="163" /> <Cursor1 position="13014" topLine="163" />
</Cursor> </Cursor>
</File> </File>
<File name="rc_vm_asm.h" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="constants.h" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="41761" topLine="1347" /> <Cursor1 position="0" topLine="0" />
</Cursor> </Cursor>
</File> </File>
<File name="parser.h" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="parser.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="99035" topLine="1896" /> <Cursor1 position="99035" topLine="1896" />
</Cursor> </Cursor>
@@ -58,12 +58,17 @@
</File> </File>
<File name="main.cpp" open="1" top="1" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="main.cpp" open="1" top="1" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="29416" topLine="904" /> <Cursor1 position="28770" topLine="910" />
</Cursor> </Cursor>
</File> </File>
<File name="identifier.h" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="keywords.h" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="33082" topLine="992" /> <Cursor1 position="0" topLine="0" />
</Cursor>
</File>
<File name="tokenizer.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="41970" topLine="1016" />
</Cursor> </Cursor>
</File> </File>
<File name="rc_utility.h" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="rc_utility.h" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@@ -76,19 +81,14 @@
<Cursor1 position="615" topLine="32" /> <Cursor1 position="615" topLine="32" />
</Cursor> </Cursor>
</File> </File>
<File name="keywords.h" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="rc_vm_asm.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="0" topLine="0" /> <Cursor1 position="41761" topLine="1347" />
</Cursor> </Cursor>
</File> </File>
<File name="rc_builtin.h" open="1" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="identifier.h" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="112317" topLine="2509" /> <Cursor1 position="33082" topLine="992" />
</Cursor>
</File>
<File name="constants.h" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor> </Cursor>
</File> </File>
</CodeBlocks_layout_file> </CodeBlocks_layout_file>

View File

@@ -4446,6 +4446,7 @@ int main(int argc, char * argv[])
std::cin >> debug_opt; std::cin >> debug_opt;
if(debug_opt.compare("a")==0) if(debug_opt.compare("a")==0)
{ {
//rc_intern_dirChange("/home/n00b/projects/bu/rcbasic_v400A6_linux/rcbasic_v400_linux/examples/tile_demo/");
rc_intern_dirChange("/home/n00b/projects/rcbasic_alpha3/test_project"); rc_intern_dirChange("/home/n00b/projects/rcbasic_alpha3/test_project");
rc_filename = "main.cbc"; rc_filename = "main.cbc";
} }

View File

@@ -1441,6 +1441,11 @@ Uint32 rc_getPixel(int x, int y)
void rc_drawRect(int x, int y, int w, int h) void rc_drawRect(int x, int y, int w, int h)
{ {
// x and y seems to be offset by -1 in the GLES driver for this function. I will remove this once I fix it in the GLES driver but this works for now.
#ifdef RC_DRIVER_GLES2
x++;
y++;
#endif // RC_DRIVER_GLES2
irr::core::vector2d<s32> r_pos(x,y); irr::core::vector2d<s32> r_pos(x,y);
irr::core::dimension2d<s32> r_dim(w,h); irr::core::dimension2d<s32> r_dim(w,h);
irr::core::rect<s32> r(r_pos, r_dim); irr::core::rect<s32> r(r_pos, r_dim);
@@ -2417,7 +2422,8 @@ void rc_drawImage(int img_id, int x, int y)
//irr::core::rect<irr::s32> dest( irr::core::vector2d(x, y), irr::core::dimension2d(src_w, src_h));; //irr::core::rect<irr::s32> dest( irr::core::vector2d(x, y), irr::core::dimension2d(src_w, src_h));;
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height);
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height);
draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize);
} }
@@ -2506,7 +2512,8 @@ void rc_drawImage_Rotate(int img_id, int x, int y, double angle)
rc_image[img_id].color_mod.getGreen(), rc_image[img_id].color_mod.getGreen(),
rc_image[img_id].color_mod.getBlue()); rc_image[img_id].color_mod.getBlue());
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height);
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height);
draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize);
} }
@@ -2534,7 +2541,8 @@ void rc_drawImage_Zoom(int img_id, int x, int y, double zx, double zy)
rc_image[img_id].color_mod.getGreen(), rc_image[img_id].color_mod.getGreen(),
rc_image[img_id].color_mod.getBlue()); rc_image[img_id].color_mod.getBlue());
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height);
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height);
draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize);
} }
@@ -2562,7 +2570,8 @@ void rc_drawImage_ZoomEx(int img_id, int x, int y, int src_x, int src_y, int src
rc_image[img_id].color_mod.getGreen(), rc_image[img_id].color_mod.getGreen(),
rc_image[img_id].color_mod.getBlue()); rc_image[img_id].color_mod.getBlue());
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height);
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height);
draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize);
} }
@@ -2590,7 +2599,8 @@ void rc_drawImage_Rotozoom(int img_id, int x, int y, double angle, double zx, do
rc_image[img_id].color_mod.getGreen(), rc_image[img_id].color_mod.getGreen(),
rc_image[img_id].color_mod.getBlue()); rc_image[img_id].color_mod.getBlue());
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height);
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height);
draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize);
} }
@@ -2618,7 +2628,8 @@ void rc_drawImage_RotozoomEx(int img_id, int x, int y, int src_x, int src_y, int
rc_image[img_id].color_mod.getGreen(), rc_image[img_id].color_mod.getGreen(),
rc_image[img_id].color_mod.getBlue()); rc_image[img_id].color_mod.getBlue());
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height);
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height);
draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize);
} }
@@ -2648,7 +2659,8 @@ void rc_drawImage_Flip(int img_id, int x, int y, bool h, bool v)
rc_image[img_id].color_mod.getGreen(), rc_image[img_id].color_mod.getGreen(),
rc_image[img_id].color_mod.getBlue()); rc_image[img_id].color_mod.getBlue());
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height);
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height);
draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize);
} }
@@ -2677,7 +2689,8 @@ void rc_drawImage_FlipEx(int img_id, int x, int y, int src_x, int src_y, int src
rc_image[img_id].color_mod.getGreen(), rc_image[img_id].color_mod.getGreen(),
rc_image[img_id].color_mod.getBlue()); rc_image[img_id].color_mod.getBlue());
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height);
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height);
draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize);
} }
@@ -2708,7 +2721,8 @@ void rc_drawImage_Blit(int img_id, int x, int y, int src_x, int src_y, int src_w
irr::core::rect<irr::s32> dest( irr::core::vector2d<irr::s32>(x, y), irr::core::dimension2d<irr::s32>(src_w, src_h)); irr::core::rect<irr::s32> dest( irr::core::vector2d<irr::s32>(x, y), irr::core::dimension2d<irr::s32>(src_w, src_h));
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height);
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height);
draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize);
} }
@@ -2737,7 +2751,8 @@ void rc_drawImage_RotateEx(int img_id, int x, int y, int src_x, int src_y, int s
rc_image[img_id].color_mod.getGreen(), rc_image[img_id].color_mod.getGreen(),
rc_image[img_id].color_mod.getBlue()); rc_image[img_id].color_mod.getBlue());
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height);
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height);
irr::core::rect<irr::s32> dest( irr::core::vector2d<irr::s32>(x, y), irr::core::dimension2d<irr::s32>(src_w, src_h)); irr::core::rect<irr::s32> dest( irr::core::vector2d<irr::s32>(x, y), irr::core::dimension2d<irr::s32>(src_w, src_h));
@@ -2769,7 +2784,8 @@ void rc_drawImage_BlitEx(int img_id, int x, int y, int w, int h, int src_x, int
irr::core::rect<irr::s32> dest( irr::core::vector2d<irr::s32>(x, y), irr::core::dimension2d<irr::s32>(w, h)); irr::core::rect<irr::s32> dest( irr::core::vector2d<irr::s32>(x, y), irr::core::dimension2d<irr::s32>(w, h));
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height);
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height);
draw2DImage2(VideoDriver, rc_image[img_id].image, sourceRect, dest, rotationPoint, rotation, useAlphaChannel, color, screenSize ); draw2DImage2(VideoDriver, rc_image[img_id].image, sourceRect, dest, rotationPoint, rotation, useAlphaChannel, color, screenSize );
} }
@@ -2901,7 +2917,8 @@ void rc_floodFill(int x, int y)
bool useAlphaChannel = true; bool useAlphaChannel = true;
irr::video::SColor color(rc_canvas[rc_active_canvas].color_mod); irr::video::SColor color(rc_canvas[rc_active_canvas].color_mod);
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height);
irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height);
rc_setActiveCanvas(rc_active_canvas); rc_setActiveCanvas(rc_active_canvas);
draw2DImage(VideoDriver, old_canvas, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); draw2DImage(VideoDriver, old_canvas, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize);
@@ -3006,16 +3023,43 @@ int rc_canvasClip(int x, int y, int w, int h)
else else
return -1; return -1;
#ifdef RC_DRIVER_GLES2
Uint32 size_n = 2;
Uint32 dim_max = (w > h ? w : h);
while(size_n < dim_max) size_n *= 2;
irr::video::ITexture* texture = VideoDriver->addRenderTargetTexture(irr::core::dimension2d<irr::u32>((irr::u32)size_n, (irr::u32)size_n), "canvas_clip_image", ECF_A8R8G8B8);
#else
irr::video::ITexture* texture = VideoDriver->addRenderTargetTexture(irr::core::dimension2d<irr::u32>((irr::u32)w, (irr::u32)h), "canvas_clip_image", irr::video::ECF_A8R8G8B8); irr::video::ITexture* texture = VideoDriver->addRenderTargetTexture(irr::core::dimension2d<irr::u32>((irr::u32)w, (irr::u32)h), "canvas_clip_image", irr::video::ECF_A8R8G8B8);
#endif // RC_WEB
if(!texture) if(!texture)
return -1; return -1;
VideoDriver->setRenderTarget(texture); VideoDriver->setRenderTarget(texture);
drawCanvasImage(rc_canvas[rc_active_canvas].texture, 0, 0, x, y, w, h, w, h); int tgt_w = texture->getSize().Width;
int tgt_h = texture->getSize().Height;
VideoDriver->setRenderTarget(rc_canvas[rc_active_canvas].texture, false, false); #ifdef RC_DRIVER_GLES2
int canvas_id = rc_active_canvas;
irr::core::vector2d<irr::f32> screenSize( (irr::f32) tgt_w, (irr::f32) tgt_h );
irr::video::SColor color(rc_canvas[canvas_id].color_mod);
irr::core::dimension2d<irr::u32> cv_dim(tgt_w, tgt_h);
irr::core::position2d<irr::s32> cv_pos(0, 0);
irr::core::vector2d<irr::s32> cv_offset(x, rc_canvas[canvas_id].texture->getSize().Height - y - cv_dim.Height);
irr::core::rect<s32> src( cv_offset, cv_dim );
irr::core::rect<s32> dest( irr::core::vector2d<s32>(cv_pos.X, cv_pos.Y), irr::core::dimension2d<s32>(cv_dim.Width, cv_dim.Height) );
draw2DImage2(VideoDriver, rc_canvas[canvas_id].texture, src, dest, irr::core::position2d<irr::s32>(0, 0), 0, true, color, screenSize);
//rc_setDriverMaterial();
//VideoDriver->draw2DImage(rc_canvas[rc_active_canvas].texture, dest, src, 0, 0, false);
#else
drawCanvasImage(rc_canvas[rc_active_canvas].texture, 0, 0, x, y, w, h, tgt_w, tgt_h);
#endif // RC_DRIVER_GLES2
rc_setActiveCanvas(rc_active_canvas);
//VideoDriver->setRenderTarget(rc_canvas[rc_active_canvas].texture, false, false);
int img_id = -1; int img_id = -1;
rc_image_obj img; rc_image_obj img;

View File

@@ -40,7 +40,7 @@
//FOR TESTING PURPOSES //FOR TESTING PURPOSES
#ifdef RC_TESTING #ifdef RC_TESTING
//#define RC_DRIVER_GLES2 #define RC_DRIVER_GLES2
#endif // RC_TESTING #endif // RC_TESTING
#define RC_PI 3.14159265359 #define RC_PI 3.14159265359

View File

@@ -1,5 +1,5 @@
# depslib dependency file v1.0 # depslib dependency file v1.0
1733091135 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp 1733272320 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp
"rc_os_defines.h" "rc_os_defines.h"
<emscripten.h> <emscripten.h>
<sys/param.h> <sys/param.h>
@@ -32,10 +32,10 @@
<irrtheora.h> <irrtheora.h>
"rc_func130_cases.h" "rc_func130_cases.h"
1733116245 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h 1733446556 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h
<TargetConditionals.h> <TargetConditionals.h>
1732562642 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h 1733270962 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h
1730291453 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_stdlib.h 1730291453 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_stdlib.h
"rc_os_defines.h" "rc_os_defines.h"
@@ -1247,7 +1247,7 @@
1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/RealisticWater.h 1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/RealisticWater.h
<irrlicht.h> <irrlicht.h>
1733028476 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx.h 1733446561 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx.h
"SDL.h" "SDL.h"
<SDL2/SDL.h> <SDL2/SDL.h>
<irrlicht.h> <irrlicht.h>
@@ -1271,7 +1271,7 @@
"rc_joints.h" "rc_joints.h"
<irrtheora.h> <irrtheora.h>
1733028476 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx_core.h 1733272044 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx_core.h
"SDL.h" "SDL.h"
"btBulletDynamicsCommon.h" "btBulletDynamicsCommon.h"
"BulletSoftBody/btSoftRigidDynamicsWorld.h" "BulletSoftBody/btSoftRigidDynamicsWorld.h"
@@ -2272,7 +2272,7 @@
"rc_gfx_core.h" "rc_gfx_core.h"
<irrtheora.h> <irrtheora.h>
1732562642 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_func130_cases.h 1733270962 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_func130_cases.h
1724469097 source:/home/n00b/Projects/irrBullet/src/irrBullet.cpp 1724469097 source:/home/n00b/Projects/irrBullet/src/irrBullet.cpp
"irrBullet.h" "irrBullet.h"

View File

@@ -1,80 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_layout_file> <CodeBlocks_layout_file>
<FileVersion major="1" minor="0" /> <FileVersion major="1" minor="0" />
<ActiveTarget name="Release" /> <ActiveTarget name="Debug" />
<File name="rc_sprite_physics.h" open="1" top="0" tabpos="15" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="rc_actor_animation.h" open="1" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="9674" topLine="436" />
</Cursor>
</File>
<File name="../../irrBullet/src/irrBulletcommon.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="924" topLine="6" />
</Cursor>
</File>
<File name="rc_net.h" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1339" topLine="12" />
</Cursor>
</File>
<File name="rc_func130_cases.h" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="50816" topLine="1359" />
</Cursor>
</File>
<File name="rc_spritelib.h" open="1" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="21830" topLine="918" />
</Cursor>
</File>
<File name="rc_audio.h" open="0" top="0" tabpos="18" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="6531" topLine="311" />
</Cursor>
</File>
<File name="rc_actor_material.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2143" topLine="318" />
</Cursor>
</File>
<File name="gui_freetype_font.cpp" open="0" top="0" tabpos="24" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="792" topLine="0" />
</Cursor>
</File>
<File name="rc_defines.h" open="1" top="0" tabpos="16" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="190390" topLine="2844" />
</Cursor>
</File>
<File name="rc_actor_animation.h" open="1" top="0" tabpos="18" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="3250" topLine="93" /> <Cursor1 position="3250" topLine="93" />
</Cursor> </Cursor>
</File> </File>
<File name="gui_freetype_font.h" open="0" top="0" tabpos="23" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="rc_actor_material.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="183" topLine="0" /> <Cursor1 position="14332" topLine="540" />
</Cursor> </Cursor>
</File> </File>
<File name="rc_gfx_core.h" open="1" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="RealisticWater.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="31644" topLine="927" /> <Cursor1 position="7671" topLine="204" />
</Cursor> </Cursor>
</File> </File>
<File name="rc_tilemap.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="rc_sprite_physics.h" open="1" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="243" topLine="0" /> <Cursor1 position="10319" topLine="472" />
</Cursor>
</File>
<File name="rc_sprite2D.h" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1444" topLine="0" />
</Cursor>
</File>
<File name="rc_matrix.h" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="116" topLine="3" />
</Cursor> </Cursor>
</File> </File>
<File name="rc_media.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="rc_media.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@@ -82,54 +27,44 @@
<Cursor1 position="17752" topLine="630" /> <Cursor1 position="17752" topLine="630" />
</Cursor> </Cursor>
</File> </File>
<File name="../../irrBullet/src/irrBullet.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="rc_actor_physics.h" open="1" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="0" topLine="7" /> <Cursor1 position="0" topLine="668" />
</Cursor>
</File>
<File name="rc_audio.h" open="0" top="0" tabpos="18" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="6531" topLine="311" />
</Cursor> </Cursor>
</File> </File>
<File name="rc_os_defines.h" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="rc_os_defines.h" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="292" topLine="0" /> <Cursor1 position="914" topLine="31" />
</Cursor> </Cursor>
</File> </File>
<File name="rc_geometry.h" open="0" top="0" tabpos="20" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="rc_physics3D_base.h" open="1" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="20919" topLine="652" /> <Cursor1 position="565" topLine="19" />
</Cursor> </Cursor>
</File> </File>
<File name="main.cpp" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="rc_gfx_core.h" open="1" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="133376" topLine="4431" /> <Cursor1 position="26959" topLine="736" />
</Cursor> </Cursor>
</File> </File>
<File name="rc_base_actor.h" open="1" top="0" tabpos="19" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="rc_net.h" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="9392" topLine="296" /> <Cursor1 position="1339" topLine="12" />
</Cursor> </Cursor>
</File> </File>
<File name="rc_gfx3D.h" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="rc_constraint.h" open="1" top="0" tabpos="16" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="583" topLine="15" /> <Cursor1 position="303" topLine="258" />
</Cursor> </Cursor>
</File> </File>
<File name="rc_video.h" open="0" top="0" tabpos="21" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="../../irrBullet/src/irrBullet.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="0" topLine="0" /> <Cursor1 position="0" topLine="7" />
</Cursor>
</File>
<File name="rc_test.h" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="115" topLine="0" />
</Cursor>
</File>
<File name="camera.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="261" topLine="0" />
</Cursor>
</File>
<File name="rc_gfx.h" open="1" top="1" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="54930" topLine="2196" />
</Cursor> </Cursor>
</File> </File>
<File name="../../irrBullet/src/irrBulletWorld.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="../../irrBullet/src/irrBulletWorld.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@@ -137,14 +72,59 @@
<Cursor1 position="2750" topLine="75" /> <Cursor1 position="2750" topLine="75" />
</Cursor> </Cursor>
</File> </File>
<File name="rc_physics3D_base.h" open="1" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="rc_geometry.h" open="0" top="0" tabpos="20" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="785" topLine="19" /> <Cursor1 position="20919" topLine="652" />
</Cursor> </Cursor>
</File> </File>
<File name="rc_actor_physics.h" open="1" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="rc_sprite2D.h" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor> <Cursor>
<Cursor1 position="0" topLine="668" /> <Cursor1 position="1444" topLine="0" />
</Cursor>
</File>
<File name="rc_base_actor.h" open="1" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="13697" topLine="505" />
</Cursor>
</File>
<File name="rc_test.h" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="115" topLine="0" />
</Cursor>
</File>
<File name="rc_video.h" open="0" top="0" tabpos="21" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
<File name="rc_matrix.h" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="116" topLine="3" />
</Cursor>
</File>
<File name="../../irrBullet/src/irrBulletcommon.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="924" topLine="6" />
</Cursor>
</File>
<File name="rc_tilemap.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="243" topLine="0" />
</Cursor>
</File>
<File name="rc_gfx3D.h" open="1" top="0" tabpos="14" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="583" topLine="11" />
</Cursor>
</File>
<File name="rc_func130_cases.h" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="116893" topLine="2608" />
</Cursor>
</File>
<File name="gui_freetype_font.cpp" open="0" top="0" tabpos="24" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="792" topLine="0" />
</Cursor> </Cursor>
</File> </File>
<File name="rc_stdlib.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <File name="rc_stdlib.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@@ -152,4 +132,34 @@
<Cursor1 position="24553" topLine="1081" /> <Cursor1 position="24553" topLine="1081" />
</Cursor> </Cursor>
</File> </File>
<File name="rc_gfx.h" open="1" top="1" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="21506" topLine="932" />
</Cursor>
</File>
<File name="rc_defines.h" open="1" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="190390" topLine="2843" />
</Cursor>
</File>
<File name="camera.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="261" topLine="0" />
</Cursor>
</File>
<File name="rc_spritelib.h" open="1" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="20025" topLine="806" />
</Cursor>
</File>
<File name="gui_freetype_font.h" open="0" top="0" tabpos="23" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="183" topLine="0" />
</Cursor>
</File>
<File name="main.cpp" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="133333" topLine="4437" />
</Cursor>
</File>
</CodeBlocks_layout_file> </CodeBlocks_layout_file>