SpriteBlendingMode()
Синтаксис
SpriteBlendingMode(SourceMode , DestinationMode)
Описание
Изменяет способ смешивания цветов спрайта с фоном (при использовании функции DisplayTransparentSprite()). Эта функция предназначена для опытных пользователей. Результат может отличаться в зависимости от базовой подсистемы: например, OpenGL и DirectX ведут себя по разному.
Параметры
SourceMode, DestinationMode И режим источника, и режим назначения могут принимать одно из следующих значений: #PB_Sprite_BlendZero #PB_Sprite_BlendOne #PB_Sprite_BlendSourceColor #PB_Sprite_BlendInvertSourceColor #PB_Sprite_BlendDestinationColor #PB_Sprite_BlendInvertDestinationColor #PB_Sprite_BlendSourceAlpha #PB_Sprite_BlendInvertSourceAlpha #PB_Sprite_BlendDestinationAlpha #PB_Sprite_BlendInvertDestinationAlphaЗначение по умолчанию: SpriteBlendingMode (#PB_Sprite_BlendSourceAlpha, #PB_Sprite_BlendInvertSourceAlpha)
Возвращаемое значение
Ничего.
Пример (фран.)
; Структура, содержащая название и режим прозрачности Structure ModeTransparence Nom$ Numero.l EndStructure ; Список, который содержит все "ModeSource" NewList ModeSource.ModeTransparence() AddElement(ModeSource()) ModeSource()\Nom$ = "#PB_Sprite_BlendZero" ModeSource()\Numero =#PB_Sprite_BlendZero AddElement(ModeSource()) ModeSource()\Nom$ = "#PB_Sprite_BlendOne" ModeSource()\Numero =#PB_Sprite_BlendOne AddElement(ModeSource()) ModeSource()\Nom$ = "#PB_Sprite_BlendSourceColor" ModeSource()\Numero =#PB_Sprite_BlendSourceColor AddElement(ModeSource()) ModeSource()\Nom$ = "#PB_Sprite_BlendInvertSourceColor" ModeSource()\Numero =#PB_Sprite_BlendInvertSourceColor AddElement(ModeSource()) ModeSource()\Nom$ = "#PB_Sprite_BlendDestinationColor" ModeSource()\Numero =#PB_Sprite_BlendDestinationColor AddElement(ModeSource()) ModeSource()\Nom$ = "#PB_Sprite_BlendInvertDestinationColor" ModeSource()\Numero =#PB_Sprite_BlendInvertDestinationColor AddElement(ModeSource()) ModeSource()\Nom$ = "#PB_Sprite_BlendSourceAlpha" ModeSource()\Numero =#PB_Sprite_BlendSourceAlpha AddElement(ModeSource()) ModeSource()\Nom$ = "#PB_Sprite_BlendInvertSourceAlpha" ModeSource()\Numero =#PB_Sprite_BlendInvertSourceAlpha AddElement(ModeSource()) ModeSource()\Nom$ = "#PB_Sprite_BlendDestinationAlpha" ModeSource()\Numero =#PB_Sprite_BlendDestinationAlpha AddElement(ModeSource()) ModeSource()\Nom$ = "PB_Sprite_BlendInvertDestinationAlpha" ModeSource()\Numero =#PB_Sprite_BlendInvertDestinationAlpha ; Список, который содержит все "ModeDestination" NewList ModeDestination.ModeTransparence() CopyList(ModeSource(), ModeDestination()) ; Инициализация спрайтов и клавиатуры InitSprite() InitKeyboard() ; Создание фонового изображения, которое позволит увидеть прозрачность спрайтов CreateImage(1, 800, 600, 32) StartDrawing(ImageOutput(1)) Box(0, 0, 800, 600, RGBA(255, 255, 255, 255)) For i=1 To 1000 Ellipse(Random(800, 1), Random(600, 1), Random(8, 1), Random(8, 1) , RGB(Random(255), Random(255), Random(255))) Next i StopDrawing() ; Открытие экрана OpenScreen(800, 600, 32, "Sprite") ; Целевой спрайт. CreateSprite(0, 100, 100, #PB_Sprite_AlphaBlending) StartDrawing(SpriteOutput(0)) Circle(50, 50, 49, RGBA(255, 255, 0, 255)) Circle(50, 50, 40, RGBA(0, 255, 0, 128)) Circle(50, 50, 30, RGBA(0, 255, 255, 128)) Circle(50, 50, 20, RGBA(0, 0, 255, 128)) Circle(50, 50, 10, RGBA(255, 0, 0, 64)) StopDrawing() ;Для всех комбинаций между ModeSource и ModeDestination ForEach ModeSource() ForEach ModeDestination() ;Программа заканчивается, если кнопка ESC нажата в течение длительного времени ExamineKeyboard() If KeyboardPushed(#PB_Key_Escape) End EndIf ;Отображение фона и некоторой информации StartDrawing(ScreenOutput()) DrawImage(ImageID(1), 1, 1) DrawText(0, 0, "Нажмите Esc на 5 секунд, чтобы выйти") DrawText(50, 100, ModeSource()\Nom$+" / "+ModeDestination()\Nom$, RGB(255, 255, 255), RGB(255, 0, 0)) DrawText(50, 270, "Прозрачный цвет = черный", RGB(255, 255, 0)) DrawText(50, 470, "Прозрачный цвет = красный", RGB(255, 255, 0)) StopDrawing() ;ПРОЗРАЧНОСТЬ спрайта: черный цвет по умолчанию SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero) DisplaySprite(0, 50, 160) SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero) TransparentSpriteColor(0, RGBA(0, 0, 0, 128)) SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero) DisplayTransparentSprite(0, 200, 160, 180) SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero) DisplayTransparentSprite(0, 350, 160, 128, RGBA(255, 0, 0, 180)) SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero) DisplayTransparentSprite(0, 500, 160, 0, RGBA(255, 0, 0, 180)) SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero) DisplayTransparentSprite(0, 500, 160, 255, RGBA(255, 0, 0, 180)) SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero) DisplaySprite(0, 50, 360) SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero) ;ПРОЗРАЧНОСТЬ спрайта: красный цвет TransparentSpriteColor(0, RGBA(255, 0, 0, 180)) SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero) DisplayTransparentSprite(0, 200, 360, 180) SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero) DisplayTransparentSprite(0, 350, 360, 180) SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero) DisplayTransparentSprite(0, 500, 360, 0) SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero) DisplayTransparentSprite(0, 500, 360, 255) ;Экранный дисплей FlipBuffers() ;Очистить буфер ClearScreen(RGBA(255, 255, 255, 255)) ;Задержка 3 секунды Delay(3000) Next Next
Поддерживаемые OS
Все