forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Проблема с DrawImage (http://forum.boolean.name/showthread.php?t=14616)

Drayfer 20.04.2011 18:43

Проблема с DrawImage
 
Я так понимаю структура использования DrawImage такая:

Код:

Graphics3D 640,480
SetBuffer BackBuffer()
:здесь какой-то код
Global img = LoadImage("captain1.jpg")

While Not KeyHit(1)
;здесь какой-то код
UpdateWorld
RenderWorld
Picture()
Flip
Wend

Function Picture()
        While Not KeyHit(2)
                DrawImage img,0,0
                Flip
        Wend
End Function

1. Но почему на выводимом изображении, там где есть черный цвет - он становится как прозрачным и сквозь него видно мой последний кадр моего игрового мира - до того как вывелась эта картинка на экран?

2. И хотя может это и не важно, но все равно: почему в тех местах, где видно мой игровой мир, тот последний кадр жутко дергается, а не останавливается в спокойном недвижимом кадре?

Хотелось бы получить ответ на первый вопрос приемущественно.

Mhyhr 20.04.2011 19:39

Ответ: Проблема с DrawImage
 
Привет! План таков!
1) MaskImage, почитай про эту функцию.
2) Честно говоря, какой-то страшный у тебя код. Православнее так:
PHP код:

Graphics3D 640,480
SetBuffer BackBuffer
() 
Global 
img LoadImage("captain1.jpg")

MaskImage(img,100,100,100); Теперь прозрачный цвет серо-какой-то

While Not KeyHit(1
    ;
как-бэ очистка
    Cls
();

    ;
здесь логика
    
if(KeyHit(2)) then ILikeDrugs();


    ;
здесь как-бэ 3д обновка-отрисовка
    UpdateWorld
    RenderWorld

    
;здесь как-бэ 2д отрисовка DrawImage img,0,0

    
Здесь буферы флип-флип и выводится на монитор.
    
Flip()
Wend

Function ILikeDrugs()
    While 
Not KeyHit(2
    
Cls();

    
RenderWorld
    DrawImage img
,0,0
    Flip
    Wend
End 
Function 


Reizel 21.04.2011 12:35

Ответ: Проблема с DrawImage
 
Охлол :-D Один другого не лучше :)

Код:

MAIN_MENU_1%=0
img1=LoadImage("image.png")
maskimage img1,100,100,100
Repeat
        RenderWorld()
        UpdateWorld()
        'Теперь очередь 2D
        If(KeyHit(2)) MAIN_MENU_1=Not MAIN_MENU_1
        If(MAIN_MENU_1)
                DrawImage(img1,0,0)
        EndIf
        Flip
Until KeyHit(1)
End

PS судя по коду автора он отел сделать как раз это

Mhyhr 21.04.2011 13:25

Ответ: Проблема с DrawImage
 
Не не не судя по коду, автор хотел отдельную функцию с блекджеком и циклом))

Reizel 21.04.2011 23:44

Ответ: Проблема с DrawImage
 
Та не, это ж очевидный бред :)

Colossus 23.04.2011 03:20

Ответ: Проблема с DrawImage
 
подожди, а нахрена тебе 2 флипа то? конечно изображение будет дергаться, потому что мир "выворачивается" 2 раза)) если у тебя вызов функции идет между RenderWorld и Flip то в функции не нужно прописывать команду Flip еще раз

З.Ы, и зачем тебе в функции еще один цикл? когда RenderWorld и Flip уже находятся в цикле? ))

удачи :)


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

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