Wątek przeniesiony 2020-03-25 18:14 z Ogłoszenia drobne przez furious programming.

Program na zmianę balansu kolorów ekranu - Jaki język?

0

Chcę stworzyć program który mógłby ciągle zmieniać balans kolorów ekranu w taki sposób [Migające światła] . Niestety jestem kompletnie zielony i tylko znam odrobinę c++, w jakim języku to najlepiej napisać i na co zwrócić uwagę?

3

Zrób se GIF-a.

1

Rust, Haskell/Eta ewentualnie Scheme/Racket. W tym chciałbym to zrobić gdybym znalazł czas. Chociaż pewnie znów wyklepałbym to w Scali w żeby przetestować kolejną bibliotekę

1

W czymkolwiek co ma bindingi do OpenGLa (czyli praktycznie wszystkim). A na upartego można to zrobić nawet CSSem i HTMLem bez czegokolwiek innego.

EDIT: By nie być gołosłownym - 10 linijek CSSa

1

Dokładnie w czymkolwiek, ja najlepiej znam C# więc pewnie na szybko bym to klepnął w winforms :) (o ile działałoby z akceptowalną wydajnością)

0
mad_penguin napisał(a):

Dokładnie w czymkolwiek, ja najlepiej znam C# więc pewnie na szybko bym to klepnął w winforms :) (o ile działałoby z akceptowalną wydajnością)

Można grać podczas gdy zmienia balans kolorów? Mam w miarę dobry komputer. Możesz jeszcze polecić jakieś poradniki do C# do tego zadania i prowizorycznie napisać ten program (najlepiej na odwal się, żebym mógł się nauczyć czegoś przy optymalizowaniu kodu)?. Z góry dzięki, zasuwam uczyć się C#!

1

Nie chce mi się szukać poradników ani pisać kodu. Zabrałbym się do tego w ten sposób, że stworzyłbym puste, pełnoekranowe okienko i tylko zmieniał mu kolor tła. Co do wydajności, to zmienianie kolorów z dużą częstotliwością (jeśli chcesz mieć płynne przejścia) to nie jest coś, do czego winformsy są zaprojektowane, dlatego nie zdziwię się, jeśli będzie problem, który będzie ciężko zoptymalizować. Użycie opengla będzie tu bardziej sensownym pomysłem.

0
mad_penguin napisał(a):

Nie chce mi się szukać poradników ani pisać kodu. Zabrałbym się do tego w ten sposób, że stworzyłbym puste, pełnoekranowe okienko i tylko zmieniał mu kolor tła. Co do wydajności, to zmienianie kolorów z dużą częstotliwością (jeśli chcesz mieć płynne przejścia) to nie jest coś, do czego winformsy są zaprojektowane, dlatego nie zdziwię się, jeśli będzie problem, który będzie ciężko zoptymalizować. Użycie opengla będzie tu bardziej sensownym pomysłem.

Dzięki, tego właśnie potrzebowałem!

1

W OpenGL wystarczą dwie instrukcje, ustawienie koloru czyszczenia bufora glClearColor oraz sama procedura czyszcząca glClear. Reszta kodu to stworzenie okienka przy użyciu biblioteki GLFW.:

#include <GLFW/glfw3.h>
#include <GL/gl.h>

int main() {
    glfwInit();
    GLFWwindow* window = glfwCreateWindow(1920, 1080, "test", glfwGetPrimaryMonitor(), nullptr);
    glfwMakeContextCurrent(window);

    while (!glfwWindowShouldClose(window)) {
        glClearColor(0.0f, 0.2f, 0.0f, 1.0f); // RGBA w zakresie do 0.0f do  1.0f
        glClear(GL_COLOR_BUFFER_BIT);
        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    return 0;
}

Kompilacja:

g++ -o main main.cpp -lopengl32 -lglfw3

Musisz sobie tylko dodać do tego np. obsługę klawisza ESC bo tak to trzeba ubijać wątek (przykłady znajdziesz w dokumentacji GLFW). No i oczywiście w pętli coś co wyliczy kolory według określonego wzorca.

Stworzenie okienka możesz zrobić też np. w pythonie przy użyciu GLFW lub pygame:

import pygame
import sys

pygame.init()
screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)

while True:
    for ev in pygame.event.get():
        if ev.type == pygame.QUIT or (ev.type == pygame.KEYDOWN and ev.key == pygame.K_ESCAPE):
            sys.exit()

    screen.fill((0, 22, 0))
    pygame.display.update()

1 użytkowników online, w tym zalogowanych: 0, gości: 1