|
draw_line vs. draw_quad for drawing filled quads
#382963
09/14/11 15:29
09/14/11 15:29
|
Joined: Sep 2003
Posts: 303 Germany
Clemens
OP
Senior Member
|
OP
Senior Member
Joined: Sep 2003
Posts: 303
Germany
|
Just a short question with rather low priority:
It's easy to develope a function for drawing filled quads with draw_line (-> drawing many lines in a row). Is there any good reason if this way is more useful for the programer (bmaps are not needed) not to go this way, but using instead draw_quad?
Last edited by Clemens; 09/14/11 15:30.
|
|
|
Re: draw_line vs. draw_quad for drawing filled quads
[Re: Myrkling]
#382984
09/14/11 20:03
09/14/11 20:03
|
Joined: Sep 2003
Posts: 303 Germany
Clemens
OP
Senior Member
|
OP
Senior Member
Joined: Sep 2003
Posts: 303
Germany
|
You think it's faster? However, I had to realize that it's even simpler and more user friendly to write this function with draw_quad... But if you would like continue to philosophize (like: what's faster?), feel free... I'm in 8)
|
|
|
Re: draw_line vs. draw_quad for drawing filled quads
[Re: Superku]
#383006
09/14/11 22:38
09/14/11 22:38
|
Joined: Feb 2011
Posts: 135
Myrkling
Member
|
Member
Joined: Feb 2011
Posts: 135
|
I can't tell you why exactly, for I don't know the implementation details of these functions. However, you can run this little test to see the speed difference (it's pretty obvious in this case):
#include <acknex.h>
void main()
{
wait(1);
while (1)
{
int i;
var draw_line_time, draw_quad_time;
timer();
draw_line(NULLVECTOR, NULL, 100);
for (i = 0; i < screen_size.y; i++)
{
draw_line(vector(0, i, 0), COLOR_WHITE, 100);
draw_line(vector(screen_size.x, i, 0), COLOR_WHITE, 100);
}
draw_line_time = timer();
draw_quad(NULL, NULLVECTOR, NULL, screen_size, NULL, COLOR_WHITE, 100, 0);
draw_quad_time = timer();
DEBUG_VAR(draw_line_time, 10);
DEBUG_VAR(draw_quad_time, 30);
wait (1);
}
}
|
|
|
Re: draw_line vs. draw_quad for drawing filled quads
[Re: Myrkling]
#383060
09/15/11 15:16
09/15/11 15:16
|
Joined: Jul 2008
Posts: 1,178 England
MrGuest
Serious User
|
Serious User
Joined: Jul 2008
Posts: 1,178
England
|
trying
#include <acknex.h>
void main()
{
wait(1);
int i;
var draw_line_time1, draw_line_time2, draw_quad_time1, draw_quad_time2;
while (1)
{
timer();
//test1
draw_line(NULLVECTOR, NULL, 100);
for (i = 0; i < screen_size.y; i++)
{
draw_line(vector(0, i, 0), COLOR_WHITE, 100);
draw_line(vector(screen_size.x, i, 0), COLOR_WHITE, 100);
}
draw_line_time1 = timer();
//test2
draw_quad(NULL, NULLVECTOR, NULL, screen_size, NULL, COLOR_WHITE, 100, 0);
draw_quad_time1 = timer();
//test3
draw_quad(NULL, NULLVECTOR, NULL, screen_size, NULL, COLOR_WHITE, 100, 0);
draw_quad_time2 = timer();
//test4
draw_line(NULLVECTOR, NULL, 100);
for (i = 0; i < screen_size.y; i++)
{
draw_line(vector(0, i, 0), COLOR_WHITE, 100);
draw_line(vector(screen_size.x, i, 0), COLOR_WHITE, 100);
}
draw_line_time2 = timer();
DEBUG_VAR(draw_line_time1, 10);
DEBUG_VAR(draw_quad_time1, 30);
DEBUG_VAR(draw_line_time2, 50);
DEBUG_VAR(draw_quad_time2, 70);
wait (1);
}
}
will give you an unexplainable result. changing the order you draw shows draw_line as being quicker
|
|
|
|