Allow per pixel transparency in javascript platform

(cherry picked from commit e51c6a0d28)
This commit is contained in:
muiroc
2020-02-07 01:18:11 +01:00
committed by Rémi Verschelde
parent 636093784b
commit 50727d7b22
3 changed files with 25 additions and 2 deletions

View File

@ -220,6 +220,20 @@ void OS_JavaScript::get_fullscreen_mode_list(List<VideoMode> *p_list, int p_scre
p_list->push_back(OS::VideoMode(screen.width, screen.height, true));
}
bool OS_JavaScript::get_window_per_pixel_transparency_enabled() const {
if (!is_layered_allowed()) {
return false;
}
return transparency_enabled;
}
void OS_JavaScript::set_window_per_pixel_transparency_enabled(bool p_enabled) {
if (!is_layered_allowed()) {
return;
}
transparency_enabled = p_enabled;
}
// Keys
template <typename T>
@ -886,10 +900,14 @@ Error OS_JavaScript::initialize(const VideoMode &p_desired, int p_video_driver,
EmscriptenWebGLContextAttributes attributes;
emscripten_webgl_init_context_attributes(&attributes);
attributes.alpha = false;
attributes.alpha = GLOBAL_GET("display/window/per_pixel_transparency/allowed");
attributes.antialias = false;
ERR_FAIL_INDEX_V(p_video_driver, VIDEO_DRIVER_MAX, ERR_INVALID_PARAMETER);
if (p_desired.layered) {
set_window_per_pixel_transparency_enabled(true);
}
bool gles3 = true;
if (p_video_driver == VIDEO_DRIVER_GLES2) {
gles3 = false;
@ -1315,6 +1333,7 @@ OS_JavaScript::OS_JavaScript(int p_argc, char *p_argv[]) {
window_maximized = false;
entering_fullscreen = false;
just_exited_fullscreen = false;
transparency_enabled = false;
main_loop = NULL;

View File

@ -46,6 +46,7 @@ class OS_JavaScript : public OS_Unix {
bool window_maximized;
bool entering_fullscreen;
bool just_exited_fullscreen;
bool transparency_enabled;
InputDefault *input;
Ref<InputEventKey> deferred_key_event;
@ -123,6 +124,9 @@ public:
virtual void set_mouse_mode(MouseMode p_mode);
virtual MouseMode get_mouse_mode() const;
virtual bool get_window_per_pixel_transparency_enabled() const;
virtual void set_window_per_pixel_transparency_enabled(bool p_enabled);
virtual bool has_touchscreen_ui_hint() const;
virtual bool is_joy_known(int p_device);