forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=28)
-   -   Speed Text (http://forum.boolean.name/showthread.php?t=8185)

Dzirt 11.04.2009 12:22

Speed Text
 
Вложений: 1
SpeedText-это библиотека которая позволяет загрузить шрифты в Blitz3d и визулализировать их на максимальной скорости.Функции SpeedText намного шустрее стандартных Blitz3d.Не мало важным является и то,что она абсолютно бесплатная и лека в освоении.

Вложение 5900
(документация и примеры на месте)

Автор:
ChristianK
http://www.blitzforum.de/forum/viewtopic.php?t=27501

HolyDel 11.04.2009 12:37

Ответ: Speed Text
 
гы. на моем буке он медленнее в 5 раз. чем стандартный блиц.
Код:

; SpeedText - Sample 3
; SpeedText VS Blitz-Text

Graphics3D 800, 600, 0, 2
ST_Initialize( BackBuffer( ) )

Local font_blitz = LoadFont( "Tahoma", 13 )
Local font_st = ST_LoadFont( "Tahoma", 13, 0, 0, 0, ST_NONANTIALIASED )

SetFont font_blitz
ST_SetFont font_st

Local mode

While Not KeyDown( 1 )
        Cls

       
        time = MilliSecs( )
       

        ST_LockBuffer()
        For i=1 to 1000
                x = rnd(0,700)
                y = rnd(0,580)
                ST_TextColor(rnd(0,255),rnd(0,255),rnd(0,255))
                ST_DrawTextFast x, y, "Hellow World!", ST_LEFT, ST_TOP
        Next
        ST_UnlockBuffer()
        Text 10, 10, "Time: " + ( MilliSecs( ) - time ) + " ms - Press Space to change mode"
       
        Flip 0
Wend

End

с фаст-ом он стал быстрее где то в 3 раза. но все равно медленно - тыща выводов за 900мс.

для примера в сижеле в самом быстром режиме - это же занимает всего 1 мс.

Dzirt 11.04.2009 12:39

Ответ: Speed Text
 
О_о не может такого быть.

3 семпл.Сначала стандартный Blitzевской текст......нажимаеш спейс и текст с либы.

HolyDel 11.04.2009 12:49

Ответ: Speed Text
 
именно. я сам удвивлся.
но если блицовый вариант занимал где то 60-70 мс, то спид-текста все 340-350мс.
может из-за висты, может из-за встроенной видеокарты, может из-за луны, вошедшей в фазу скорпина.. незнаю из-за чего, но спид-текст работает у меня медленнее.

Dzirt 11.04.2009 12:52

Ответ: Speed Text
 
хмммм.странно....я уже пробывал на 3 машинах.И всегда спид текст быстрее.У мну например стандартный выводится за 20-26мс,а спид текст за 0-1мс.


...испытал твой семпл.
Стандартный:50-56мс.
СпидТекст: 6-8мс.

Dzirt 11.04.2009 13:06

Ответ: Speed Text
 
Вообщем ребят,прошу кому не лень потестить и потом постануть результат.

HolyDel 11.04.2009 13:08

Ответ: Speed Text
 
Вложений: 1
вот вам ексешничек:

newman 11.04.2009 13:19

Ответ: Speed Text
 
Blitz - 215-225
SpeedText - 18-19

HolyDel 11.04.2009 13:20

Ответ: Speed Text
 
похоже из-за висты. на другой машине (с хп на борту) скорость спидтекста в 30 раз выше примерно. но все же примерно в 8 раз ниже сижелевской.

Dzirt 11.04.2009 13:26

Ответ: Speed Text
 
Вложений: 1
Виста-всему голова...но голова эта из жопы растет.
Вложение 5902

DartWaider aka Yxo 11.04.2009 13:42

Ответ: Speed Text
 
Blitz ~270-275
SpeedText ~9-10

SBJoker 11.04.2009 13:57

Ответ: Speed Text
 
Blitz3 - 47-103 (дико скачет)
SpeedText - 4-5
Sigel 0.6-0.5

Mhyhr 11.04.2009 14:23

Ответ: Speed Text
 
WinXP
Blitz3 - 42-59
SpeedText - 1-2

Dzirt 11.04.2009 14:27

Ответ: Speed Text
 
Ну все вроде,опрос можно окончить.Результат очевиден.

Venom2 11.04.2009 14:49

Ответ: Speed Text
 
Да это элементарная GDI обертка
Примерно так на PureBasic будет
Код:

Global target.IDIRECTDRAWSURFACE7
Global context.l
Global screen.RECT
Global color.l
Global font.l

ProcedureDLL ST_Initialize(*buffer.LONG)
    *buffer + 3
    target = *buffer\l
    color = $FFFFFF
EndProcedure

ProcedureDLL ST_LoadFont(name.s, height, bold, italic, underline, strikeout, quality)
    ProcedureReturn CreateFont_(height, 0, 0, 0, (bold & 1) * #FW_NORMAL, italic & 1, underline & 1, strikeout & 1, #DEFAULT_CHARSET, #OUT_DEFAULT_PRECIS, #CLIP_DEFAULT_PRECIS, quality, #DEFAULT_PITCH, name)
EndProcedure

ProcedureDLL ST_FreeFont(handle)
    DeleteObject_(handle)
EndProcedure

ProcedureDLL ST_SetFont(handle)
    font = handle
EndProcedure

ProcedureDLL ST_TextColor(red, green, blue)
    color = (red << 16) | (green << 8) | blue
EndProcedure

ProcedureDLL ST_LockBuffer()
    ProcedureReturn target\GetDC(@context)
EndProcedure

ProcedureDLL ST_UnlockBuffer()
    ProcedureReturn target\ReleaseDC(context)
EndProcedure

ProcedureDLL ST_DrawTextFast(xpos, ypos, text, xalign, yalign)
    Static length.l, bound.RECT, size.RECT
    If (context)
        length = lstrlen_(text)
        GetTextExtentPoint32_(context, text, length, size)
        With bound
            \left = xpos
            \top = ypos
            \right = xpos + size\cx
            \bottom = ypos + size\cy
        EndWith
        SetBkMode_(context, #TRANSPARENT)
        SetTextColor_(context, color)
        SelectObject_(context, font)
        DrawText_(context, text, length, bound, xalign | yalign)
    EndIf
EndProcedure

потому не стоит ее юзать :)


Часовой пояс GMT +4, время: 15:41.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot