Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - Reg

Strony: [1] 2 3 4 5 ... 242
1
Oferuję / Odp: praca
« dnia: Listopad 02, 2018, 21:33:41 »
Jeśli chcesz z sukcesem znaleźć tego typu zlecenie, to napisz może coś więcej o sobie - jakie masz doświadczenie w tym, jakie wykształcenie, jakie projekty wcześniej robiłeś, co potrafisz, w czym się specjalizujesz.

2
Ja polecam jednak gotowy silnik, czy to Unity czy Unreal Engine, ponieważ:

1. Większość gier jest obecnie tworzona w ten sposób. Mniej jest chyba w gamedevie stanowisk pracy dla programistów piszących w C++ własny silnik od podstaw i potrzebujących znać szczegóły tego wszystkiego na niskim poziomie, a więcej takich, w których znajomość któregoś z tych popularnych silników jest wymagana/zalecana.
2. Podczas nauki programowania z użyciem gotowego silnika szybciej można stworzyć coś, co będzie efektowne i już będzie cieszyło, zamiast miesiącami siedzieć w czarnej konsoli tekstowej. To lepiej motywuje do nauki.

3
Polecam zacząć od nauki darmowego silnika gier Unity i związanego z nim języka C#.

4
Szkółka / Odp: [C++] xml dla ustawien gry i savów, jaka biblioteczka?
« dnia: Październik 03, 2018, 10:42:05 »
Słyszałem, że RapidJSON jest OK. https://github.com/Tencent/rapidjson

5
Szkółka / Odp: [C++] xml dla ustawien gry i savów, jaka biblioteczka?
« dnia: Październik 02, 2018, 20:37:09 »
Ja z bibliotek do XML dla C++ używałem tinyxml i był spoko, ale jakbym miał wybór, to wybrałbym jakikolwiek inny format pliku. Jeżeli jakiś standardowy, to JSON, ewentualnie stary dobry CSV. Możesz też zaprojektować własny format, czy to tekstowy, czy binarny.

6
W tym roku IGK nie jest oddzielną konferencją, ale sekcją konferencji OKI WZI -  IV Ogólnopolskiej Konferencji Interdyscyplinarnej “Współczesne Zastosowania Informatyki”, która odbędzie się 25 maja na Wydziale Nauk Ścisłych Uniwersytetu Przyrodniczo-Humanistycznego w Siedlcach.

www.wzi.uph.edu.pl

7
OpenGL / Odp: Deffered shading - różne metody oświetlenia / materiały
« dnia: Sierpień 14, 2017, 21:32:53 »
Nie wstawi ifa do kodu shadera. Używanie stencila będzie szybsze, niż pisanie testu w pixel shaderze, bo stencil test, tak jak z-test (kiedy to możliwe) jest wykonywany przed pixel shaderem i dla piksela, który testów nie przechodzi, pixel shader w ogóle się nie uruchomi. Karty graficzne mają specjalny sprzęt do obsługi tego. Nie są aż tak elastyczne, żeby wszystko wsadzać do kodu shadera :)

8
Szkółka / Odp: Płynę przejścia między dwoma kolorami
« dnia: Lipiec 16, 2017, 20:58:01 »
Brzydkie przejścia między kolorami powstają też, jeśli Twoje obliczenia nie są gamma-correct (chociaż to jest dość subtelna różnica). Radzę poczytać o tym, czym jest korekcja gamma i zaimplementować to w swoim kodzie prawidłowo.

W skrócie: Komponenty RGB wszelkich kolorów zarówno wejściowych (dobranych przez artystę, odczytanych z pliku graficznego), jak i wyjściowych (wyświetlanych na ekranie) nie są w przestrzeni "liniowej" w sensie intensywności światła, tylko w funkcji pow(x, 1/2.2) - podniesione do potęgi. Dlatego przesyłając kolor z wejścia prosto na wyjście nie trzeba o tym myśleć, ale wykonując jakiekolwiek operacje na kolorach (choćby interpolację do wykonania gradientu albo alfa-blending do przezroczystości) dla poprawnego i ładniejszego efektu należy wprowadzić korekcję gamma, a więc:

- Po odczytaniu RGB wejściowego zrobić na każdym komponencie: c = pow(c, 2.2)
(Lub, jeśli programujesz w DirectX/OpenGL/Vulkan, po prostu użyć tekstury w formacie "SRGB".)
- Na tych wartościach wykonać obliczenia.
- Przed zapisaniem RGB wyjściowego zrobić: c = pow(c, 1.0/2.2)
(Lub, jeśli programujesz w DirectX/OpenGL/Vulkan, po prostu użyć tekstury w formacie "SRGB".)

Przykładowy obrazek pokazujący tę różnicę zawiera np. ta strona:
https://docs.microsoft.com/en-us/dotnet/framework/winforms/advanced/how-to-apply-gamma-correction-to-a-gradient

9
DirectX / Odp: D3D_FEATURE_LEVEL_9_3?
« dnia: Lipiec 16, 2017, 19:34:07 »
Nie :) Z mojego doświadczenia wynika, że większość współczesnych gier jednak wymaga obsługi Direct3D 11 i odpowiedniego sprzętu, bo większość graczy PC już taki sprzęt ma (co widać na Steam Hardware Survey http://store.steampowered.com/hwsurvey/ wykres drugi). Na wymaganie DirectX 12 albo Vulkan może jeszcze nie czas (a może już?), ale prościej jest napisać renderer mając wyższe bazowe wymagania.

Chyba, że Twoja gra ma w miarę prostą grafikę i jest np. grą sieciową przeznaczoną do jakiś dawno nieaktualizowanych sprzętowo ani programowo kafejek internetowych w Chinach/Rosji/Brazylii. Wtedy może jest sens napisać ścieżkę DirectX 11 Feature Level 9 albo nawet czyste DirectX 9 (żeby działało na Windows XP).

10
Szkółka / Odp: [OpenGL] Wyświetlenie fontów w interkach 4kb
« dnia: Czerwiec 21, 2017, 23:22:05 »
Może dałoby się użyć czcionek systemowych za pomocą funkcji WinAPI? Wtedy nie trzeba pakować do intra żadnych danych, jedynie trochę kodu. CreateFont, HDC itp...

11
Programowanie grafiki / Odp: Program do generowania normal map
« dnia: Luty 06, 2017, 23:10:24 »
Tu nie można mówić o palecie barw, bo w kolorach pikseli na komponentach RGB są po prostu zakodowane wektory. Wektor normalny to (x, y, z) w zakresie -1.0...1.0 wskazujący kierunek prostopadły do powierzchni w danym punkcie, więc się ten zakres upycha do 0.0...1.0 (albo, jeśli przyjmiemy kodowanie jako liczba całkowita 1 bajt, to 0...255), tak że -1.0 to jest komponent koloru 0, 0.0 to jest 0.5 (albo 128), a +1 to jest 1.0 (albo 255).

Dlatego na obrazku powyżej, powierzchnia płaska, która ma wektor zwrócony w kierunku widza (0, 0, 1) ma kolor jasnoniebieski - (0.5, 0.5, 1.0) albo (128, 128, 255) / #8080FF.

12
Szkółka / Odp: c++ Struct , zapis i odczyt z pliku
« dnia: Styczeń 29, 2017, 14:38:05 »
Typy proste - tzw. POD - Plain Old Data, czyli np. bool, char, int, float, a także ich tablice można zapisywać i odczytywać tak, jak próbujesz, czyli jako surowe dane binarne. Wskaźników oraz obiektów różnych klas, takich jak std::vector czy std::string, ogólnie nie należy w ten sposób traktować.

Tym, jaki rozmiar mają poszczególne typy, czy zapis liczb w pamięci jest big-endian, czyli little-endian oraz jakie są zasady wyrównania typów, należy się przejmować przy przenoszeniu danych między programami skompilowanymi na różne architektury (kompilator Visual Studio kontra GCC, Windows kontra Linux, 32-bit kontra 64-bit, procesory x86 kontra ARM itd.) Jeżeli Twój program ma działać tylko na platformie jednego typu, to nie powinno być problemu.

Natomiast Twój konkretny problem najprościej byłoby rozwiązać używając w strukturze tablicy znaków zakończonej zerem, zamiast std::string.

struct st_profil
{
        nazwa[5][256];
        int ilosc;
};

st_profil PROFIL;

Wtedy można taką strukturę zapisać i odczytać z pliku tak, jak chciałeś. Są jednak z tym rozwiązaniem dodatkowe problemy:

- Operowanie na takich łańcuchach jest mniej wygodne, niż z użyciem std::string. Trzeba używać funkcji typu strcpy, strcat, strlen itd.
- Maksymalna długość łańcucha jest ograniczona i z góry określona w kodzie. Trzeba uważać, żeby jej nie przekroczyć.
- Łańcuch zapisany w pliku zawsze zajmuje tyle bajtów, ile wynosi jego maksymalny rozmiar i miejsce na niewykorzystane znaki marnuje się.

13
Dyskusje / Odp: Jak pracują freelancerzy?
« dnia: Styczeń 20, 2017, 23:56:16 »
Z tego co piszesz, to może faktycznie masz w domu wyjątkowo ciężkie warunki i przydałoby się wynająć jakieś miejsce do pracy. Chociaż to nie rozwiąże problemu, jak się czujesz i jak dobrze wypoczywasz poza godzinami pracy. Dlatego ja bym na Twoim miejscu chyba raczej poszukał mieszkania albo pokoju do wynajęcia i wyprowadził się od rodziny, jak tylko zacząłbym zarabiać na tyle, że byłoby mnie na to stać.

Z drugiej strony, może powinieneś się do tego wszystkiego przyzwyczaić? Wielu ludzi ma tak, że w pracy jest open space, w kubiku obok siedzi jakiś manager i ciągle głośno gada przez telefon, panuje ogólny hałas i zamieszanie i trzeba w tych warunkach pracować. Słuchawki na uszach pomagają w tym. W domu natomiast dzieci płaczą i nie dają spać, teściowa zrzędzi, piętrzą się obowiązki domowe... To się nazywa dorosłość :)

14
Dyskusje / Odp: Jak pracują freelancerzy?
« dnia: Styczeń 20, 2017, 01:30:00 »
Piszesz:
Z tym że od czasu założenia firmy sytuacja mocno się zmieniła. Już nie mogę pracować w domu, nie ma tu warunków.
Ale nie podajesz szczegółów, w czym jest problem. Młodszy brat hałasuje? Rodzice każą Ci wyjść na dwór i nie siedzieć przy komputerze? Nie zdradzając szczegółów możesz liczyć tylko na ogólne rady typu:
znaj siebie.
(...)
Lepiej podjąć błędną decyzję, rozumiejąc konsekwencje, niż nie podjąć żadnej.
Ale takie możesz też przeczytać w każdej książce o "kołczingu i rozwoju osobistym" :)

Jeżeli natomiast dobrze rozumiem, że nic konkretnego Ci w tym domu nie przeszkadza, tylko po prostu nie możesz się zmobilizować, żeby usiąść i popracować, to pomyśl, czy to może nie jest kwestia pracy z domu, ale raczej ogólnie niechęci do tej pracy? Jeżeli tak, to myślę, że taki sam problem może wystąpić równie dobrze u kogoś pracującego w biurze jakiejś firmy - chociaż nie ma wtedy tyle rozpraszaczy, to będzie siedział cały dzień na Facebooku czy Kwejku i robił wszystko, żeby tylko nie wziąć się za swoje zadanie. Tak samo niejeden uczeń gotowy jest nawet posprzątać swój pokój, byle tylko dłużej nie zabrać się za naukę :) To się nazywa prokrastynacja - możesz poszukać informacji o tym, jak z nią walczyć. Natomiast wcale nie musi to być spowodowane faktem, że jesteś freelancerem i pracujesz z domu.

15
Projektowanie kodu / Odp: kompozycja, agregacja ich odpowiednik w c++
« dnia: Styczeń 20, 2017, 01:12:45 »
Ja bym dodał jeszcze przypadek inteligentnego wskaźnika - np. kiedy Klasa2 zawiera std::unique_ptr<Klasa1>. Co to jest wtedy?

Moim zdaniem kluczowe jest tu określenie własności.

Jeśli obiekt klasy Klasa2 jest właścicielem obiektu klasy Klasa1 - co można poznać przede wszystkim po tym, że on go tworzy oraz usuwa z pamięci - to mamy tu do czynienia z agregacją lub kompozycją, obojętne czy w C++ zrealizujemy to za pomocą wskaźnika inteligentnego, czy zwykłego Klasa1* z alokacją przez operator new i zwalnianiem przez operator delete.

Natomiast jeśli obiekt Klasa2 przechowuje wskaźnik lub referencję do obiektu Klasa1, ale stworzył i zwolni go zupełnie inny obiekt (trzeba wtedy świadomie kontrolować jego czas życia, żeby przypadkiem nie odwołać się do już zwolnionej pamięci), wtedy mamy do czynienia z asocjacją (bez strzałek).

Strony: [1] 2 3 4 5 ... 242