<br><br><div><span class="gmail_quote">2007/8/22, Jonas Maebe <<a href="mailto:jonas.maebe@elis.ugent.be">jonas.maebe@elis.ugent.be</a>>:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>On 22 Aug 2007, at 18:24, Evgeniy Ivanov wrote:<br><br>> 2007/8/22, Jonas Maebe <<a href="mailto:jonas.maebe@elis.ugent.be">jonas.maebe@elis.ugent.be</a>>:<br>>><br>>><br>>> It is because you do not redirect the line drawing directly to SDL,
<br>>> but instead use the default line drawing routines. Those are indeed<br>>> very slow, because they call a procedural variable (directputpixel)<br>>> for each pixel which has to be drawn). And directputpixel then calls
<br>>> through to SDL, which every time must recalculate the pixel position<br>>> on the screen (instead of just adding 1 to the horizontal or vertical<br>>> coordinate in case of horizontal/vertical line drawing).
<br>><br>>  Hm... I really forgot to hook Line (but wrote the routine). But<br>> HLine and<br>> VLine are hooked and the speed problem is in the Bar function, it<br>> has such<br>> code:<br>>            for y:=y1 to y2 do
<br>>               Hline(x1,x2,y);<br>> HLine is hooked and works quickly. But it locks the screen every<br>> time it is<br>> executed (but calls DirectPutPixel without locking (that's why it<br>> is fast):
<br>> procedure sdlgraph_HLine(x,x2,y: smallint);<br>> var<br>> temp:DefPixelProc;<br>> begin<br>>  temp:=DirectPutPixel;<br>>  DirectPutPixel:=@nonBuf_DirectPutPixel;   // It doesn't lock the<br>> screen as
<br>> sdlgraph_DirectPutPixel. It's quick.<br><br>No, it is still slow. You indeed do not have locking overhead, but<br>you are still calling nonBuf_DirectPutPixel via a procvar for each<br>pixel which has to be drawn (from hlinedefault). That is still very
<br>slow.</blockquote><div><br>Hm... I've tried  such  thing:<br>procedure sdlgraph_HLine(x,x2,y: smallint);<br>begin<br> SDL_DrawLine(screen,X,y,x2,y,255);<br> SDL_Flip(screen);<br>end; <br><br>The same. I will try to find the true way, but I'm not sure that it can be without locking overhead. I reimplement Bar3d with adding locking - very quick. I think it is the fastest HLine implementation 
</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Bar3D's speed is fine if you have a fast hline implementation (like<br>for e.g
. go32v2 in most modes).</blockquote><div><br> It's asm, it should be faster than pascal code.<br></div><br></div><br><br clear="all"><br>-- <br>E.I.