Производительность окна SFML остается низкой после отключения LWA_COLORKEYC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Производительность окна SFML остается низкой после отключения LWA_COLORKEY

Сообщение Anonymous »

У меня есть следующая программа, которая создает окно SFML и включает хроматический ключ с помощью SetLayeredWindowAttributes с LWA_COLORKEY, а затем отключает его через 5 секунд.

Код: Выделить всё

#include 
#include "SFML/Graphics.hpp"
#include 

static void enableWindowChromaKey(sf::RenderWindow* window, sf::Color chromaKeyColour)
{
HWND windowHWND = window->getSystemHandle();
SetWindowLongPtr(windowHWND, GWL_EXSTYLE, GetWindowLongPtr(windowHWND, GWL_EXSTYLE) | WS_EX_LAYERED);
SetLayeredWindowAttributes(windowHWND, RGB(chromaKeyColour.r, chromaKeyColour.g, chromaKeyColour.b), 255, LWA_COLORKEY);
}

static void disableWindowChromaKey(sf::RenderWindow* window)
{
HWND windowHWND = window->getSystemHandle();
SetWindowLongPtr(windowHWND, GWL_EXSTYLE, GetWindowLongPtr(windowHWND, GWL_EXSTYLE) & ~WS_EX_LAYERED);
}

int main()
{
sf::RenderWindow renderWindow;
renderWindow.create(sf::VideoMode(1280, 720), "Transparency Test");

enableWindowChromaKey(&renderWindow, sf::Color::Red); // If this is commented out ~80 FPS

sf::CircleShape redCircle = sf::CircleShape(250.0f);
redCircle.setOrigin(250.0f, 250.0f);
redCircle.setPosition(640.0f, 360.0f);
redCircle.setFillColor(sf::Color::Red);

sf::Clock clock;
sf::Clock timer;

while (renderWindow.isOpen())
{
if (timer.getElapsedTime().asSeconds() > 5.0f)
{
disableWindowChromaKey(&renderWindow); // Does not return to ~80 FPS if chroma-key is enabled prior
}

float deltaT = clock.restart().asSeconds();
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79260457/sfml-window-performance-remains-low-after-disabling-lwa-colorkey[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»