forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Картинка мигает (http://forum.boolean.name/showthread.php?t=11641)

KingMaks 03.01.2010 17:02

Картинка мигает
 
Вобщем делаю меню,и столкнулся с проблемой:

Graphics3D 1024,768,16,1
SetBuffer BackBuffer()

levels$ = "Menu"

While Not KeyDown(1)

If levels = "Menu" Then
menu()
levels = "NotLevels"
End If

UpdateWorld
RenderWorld
Flip
Wend
End

;=======================
;=== MENU ===
;=======================
Function menu()
ClearWorld
Cls
MenuBackground = LoadImage("Data\image\menu.bmp")

DrawImage MenuBackground,0,0
End Function

Когда в полноекранном режиме то фон мигает,
а когда не в полноекранном режиме то все нормально.
С чем ето связано?И как исправить?

impersonalis 03.01.2010 17:05

Ответ: Картинка мигает
 
Global MenuBackground


....

UpdateWorld
RenderWorld
DrawImage MenuBackground,0,0
Flip

...


Function menu()
ClearWorld
;Cls
MenuBackground = LoadImage("Data\image\menu.bmp")

;DrawImage MenuBackground,0,0
End Function

KingMaks 03.01.2010 17:13

Ответ: Картинка мигает
 
impersonalis

а если когда игра перейдет к первому уровню, мне уже не понадобиться етот фон, и я очищу память от него.

А потом в игре нажму паузу,чтобы вернуться в главное меню,
и его прийдеться загружать уже из функции.

Можно зделать чтобы функция загружала картинку,и рисовала исправно?

Mhyhr 03.01.2010 17:33

Ответ: Картинка мигает
 
KingMaks
Товарищ, понимание превыше всего!

Универсально это выглядит в вашем случае так

Функция Пофиг()
Грузим ресурсы
Цикл и обработка и пишем в переменную ЧтоДальшеДелать
Рвём цикл
Выгружаем ресурсы
Return ЧтоДальшеДелать
конец функции

KingMaks 03.01.2010 20:14

Ответ: Картинка мигает
 
pinqin

почему тогда не в полноекранном режиме нормально работает?

Reizel 03.01.2010 20:33

Ответ: Картинка мигает
 
Где то был забыт Filp. из за него и мигает. И вообще что то я структуру кода не понял...

Randomize 03.01.2010 20:50

Ответ: Картинка мигает
 
CLS лишний:

Цитата:

Graphics3D 1024,768,16,1
SetBuffer BackBuffer()

levels$ = "Menu"

While Not KeyDown(1)

If levels = "Menu" Then
menu()
levels = "NotLevels"
End If

UpdateWorld
RenderWorld
Flip
Wend
End

;=======================
;=== MENU ===
;=======================
Function menu()
ClearWorld
Cls ;<--------- вот гад (в 3D CLS не нужен)
MenuBackground = LoadImage("Data\image\menu.bmp")

DrawImage MenuBackground,0,0
End Function
А конструкцию:
Цитата:

If levels = "Menu" Then
menu()
levels = "NotLevels"
End If
Перениси чтоб прсле RenderWorld была.

Смотри тут какое дело:
UpdateWorld обновляет мир
RenderWorld выводит весь 3D мир в буффер
;ТУТ добавляем своё 2d в буффер ПОВЕРХ ВЫВЕДЕНОГО ранее 3D
Flip выводит на экран

KingMaks 03.01.2010 21:16

Ответ: Картинка мигает
 
Randomize я зделал другим способом , без функции, чтобы не мигало
но всеже переделал старый способ как ты сказал:
Код:

Graphics3D 1024,768,16,1
SetBuffer BackBuffer()

levels$ = "Menu"

While Not KeyDown(1)



UpdateWorld
RenderWorld

If levels = "Menu" Then
menu()
levels = "NotLevels"
End If

Flip
Wend
End

;=======================
;=== MENU ===
;=======================
Function menu()
ClearWorld

MenuBackground = LoadImage("Data\image\menu.bmp")

DrawImage MenuBackground,0,0
End Function

и серовно мигает

NitE 03.01.2010 21:25

Ответ: Картинка мигает
 
нельзя загружать ресы в цикле.

Nex 03.01.2010 21:34

Ответ: Картинка мигает
 
KingMaks, между RenderWorld и Flip выводится 2D и там же цикл находится. Сделай две функции. В первой загружай ресурсы и указывай размер картинок (если надо :)), а во второй рендер картинок (DrawImage). Только первую функцию в цикл не ставь. ;)

Randomize 03.01.2010 21:43

Ответ: Картинка мигает
 
Oo там LoadImage!?
Епстить не заметил.

KingMaks 03.01.2010 21:50

Ответ: Картинка мигает
 
Да я уже без функций зделал.:)


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

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