I found this code in an asset in the marketstore (I'm using it here because I is free, and no credits are required so there should be no problem) I'm trying to learn something about shaders and vertexes... and primitives... and vertex buffers... so here is my question.
can all those vertex textures draw function calls be converted into a single vertex buffer to enhance performance? Am I talking non sense (in other words, I don't know what the hell I'm saying... xD).
Someone in another post suggested me to use vertex shader to create 9patch system... and I'm yet trying to grasp the concepts of shaders. I know I have to create a buffer and even freeze it if I want and then use it to upon a texture to create the 9patch panel... but that's it... i don't know what to do
I think there are very few shader tutorials for GML out there :/ something simple like...
"take a square sprite and distorted into for example a trapezoid"... just to people learn how to move texture vertexes around.
Well returning to my question... how could this be done?! I wanted to make it so I could even select a different size border for each side.. (top, bottom, left, right).
Code:
///ui_draw_sprite_panel(sprite,subimg,border,x,y,width,height)
var bordersize = argument2 / sprite_get_width(argument0);
var x1 = argument3;
var x2 = argument3 + argument2;
var x3 = argument3 + argument5 - argument2;
var x4 = argument3 + argument5;
var y1 = argument4;
var y2 = argument4 + argument2;
var y3 = argument4 + argument6 - argument2;
var y4 = argument4 + argument6;
draw_primitive_begin_texture(pr_trianglestrip, sprite_get_texture(argument0, argument1));
draw_vertex_texture(x1, y1, 0, 0);
draw_vertex_texture(x1, y2, 0, bordersize);
draw_vertex_texture(x2, y1, bordersize, 0);
draw_vertex_texture(x2, y2, bordersize, bordersize);
draw_vertex_texture(x3, y1, 1 - bordersize, 0);
draw_vertex_texture(x3, y2, 1 - bordersize, bordersize);
draw_vertex_texture(x4, y1, 1, 0);
draw_vertex_texture(x4, y2, 1, bordersize);
draw_vertex_texture(x4, y3, 1, 1 - bordersize);
draw_vertex_texture(x3, y2, 1 - bordersize, bordersize);
draw_vertex_texture(x3, y3, 1 - bordersize, 1 - bordersize);
draw_vertex_texture(x2, y2, bordersize, bordersize);
draw_vertex_texture(x2, y3, bordersize, 1 - bordersize);
draw_vertex_texture(x1, y2, 0, bordersize);
draw_vertex_texture(x1, y3, 0, 1 - bordersize);
draw_vertex_texture(x1, y4, 0, 1);
draw_vertex_texture(x2, y3, bordersize, 1 - bordersize);
draw_vertex_texture(x2, y4, bordersize, 1);
draw_vertex_texture(x3, y3, 1 - bordersize, 1 - bordersize);
draw_vertex_texture(x3, y4, 1 - bordersize, 1);
draw_vertex_texture(x4, y3, 1, 1 - bordersize);
draw_vertex_texture(x4, y4, 1, 1);
draw_primitive_end();
Someone in another post suggested me to use vertex shader to create 9patch system... and I'm yet trying to grasp the concepts of shaders. I know I have to create a buffer and even freeze it if I want and then use it to upon a texture to create the 9patch panel... but that's it... i don't know what to do
I think there are very few shader tutorials for GML out there :/ something simple like...
"take a square sprite and distorted into for example a trapezoid"... just to people learn how to move texture vertexes around.
Well returning to my question... how could this be done?! I wanted to make it so I could even select a different size border for each side.. (top, bottom, left, right).