Код: Выделить всё
#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]