IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – 3. diel - SDĽ - Základy vykresľovanie

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
rikenbekr
Člen
Avatar
rikenbekr:29.8.2015 21:54

Výborná serie, konečně.
Mohu se zeptat na zdroj?

Odpovedať
29.8.2015 21:54
In world without fences and walls, who needs Gates and Windows?
Avatar
Odpovedá na rikenbekr
Michal Žůrek - misaz:29.8.2015 22:05

Asi žádný není. Autor článku v SDL dělá, tak se rozhodl o tom napsat články.

 
Odpovedať
29.8.2015 22:05
Avatar
rikenbekr
Člen
Avatar
Odpovedá na Michal Žůrek - misaz
rikenbekr:29.8.2015 22:13

To mi doslo ale tak aspon z ceho se ucil :D.

Odpovedať
29.8.2015 22:13
In world without fences and walls, who needs Gates and Windows?
Avatar
David Novák
Tvůrce
Avatar
Odpovedá na rikenbekr
David Novák:29.8.2015 23:13

Řekl bych dokumentace ;)

Odpovedať
29.8.2015 23:13
Chyba je mezi klávesnicí a židlí.
Avatar
Odpovedá na rikenbekr
Patrik Valkovič:29.8.2015 23:16

StackOverflow a dokumentace :D

Odpovedať
29.8.2015 23:16
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
rikenbekr
Člen
Avatar
Odpovedá na Patrik Valkovič
rikenbekr:30.8.2015 9:14

Takže to co mi dělá problemy :D

Odpovedať
30.8.2015 9:14
In world without fences and walls, who needs Gates and Windows?
Avatar
rikenbekr
Člen
Avatar
rikenbekr:25.9.2015 11:25

Mám problém po pokusu zkompilovat tento zdroják gcc vypíše to pod tím.
Proč to nefunguje?
Předchozí příklady fungovali.

#include <stdio.h>
#include <SDL2/SDL.h>

int main(void)
{
        SDL_Init(SDL_INIT_VIDEO);

        SDL_Window *window;
        SDL_Event event;
        SDL_Renderer* renderer;
        SDL_Rect *p_rect;
        SDL_Rect rect;

        p_rect = &rect;

        window = SDL_CreateWindow("SDL3", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 800, 600, SDL_WINDOW_FULLSCREEN);

        rect.x = 100;
        rect.y = 100;
        rect.w = 200;
        rect.h = 100;

        renderer = SDL_CreateRenderer(window, -1, 0);

        while(SDL_PollEvent(&event)){
                if(event.type == SDL_QUIT){
                        SDL_Quit();
                        return 0;
                }
                else if(event.type == SDL_KEYDOWN){
                        switch(event.key.keysym.sym){
                        case SDLK_DOWN :
                                        rect.x-=1;
                                        break;
                        case SDLK_UP :
                                        rect.x+=1;
                                        break;
                        case SDLK_LEFT :
                                        rect.y-=1;
                                        break;
                        case SDLK_RIGHT :
                                        rect.y+=1;
                                        break;
                        default :
                                        break;
                        }
                        SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255);
                        SDL_RenderClear(renderer);
                        SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
                        SDL_RenderFillRect(renderer, p_rect);
                        SDL_RenderPresent(renderer);
                }
                else
                        ;
        }
        return 0;
}



ikar@henryposer:~$ cd programovani/c_c++/c/pokusy/SDL/itnetwork3
ikar@henryposer:~/programovani/c_c++/c/pokusy/SDL/itnetwork3$ gcc SDL_render.c `sdl-config --libs --cflags` -o SDL_render
/tmp/cckkpUVS.o: In function `main':
SDL_render.c:(.text+0x3b): undefined reference to `SDL_CreateWindow'
SDL_render.c:(.text+0x71): undefined reference to `SDL_CreateRenderer'
SDL_render.c:(.text+0x117): undefined reference to `SDL_SetRenderDrawColor'
SDL_render.c:(.text+0x123): undefined reference to `SDL_RenderClear'
SDL_render.c:(.text+0x144): undefined reference to `SDL_SetRenderDrawColor'
SDL_render.c:(.text+0x157): undefined reference to `SDL_RenderFillRect'
SDL_render.c:(.text+0x163): undefined reference to `SDL_RenderPresent'
collect2: error: ld returned 1 exit status
ikar@henryposer:~/programovani/c_c++/c/pokusy/SDL/itnetwork3$
Editované 25.9.2015 11:25
Odpovedať
25.9.2015 11:25
In world without fences and walls, who needs Gates and Windows?
Avatar
Odpovedá na rikenbekr
Patrik Valkovič:25.9.2015 11:31

Napadají mě dvě věci. První je, že nemáš nareferencované knihovny (SDL2.lib, SDL2main.lib) a proto je GCC nemůže najít.
Ze zápisu to vypadá, že se jedná o konzolovou aplikaci. Před tím, než začneš volat funkce SDL musíš zavolat SDL_SetMainRe­ady(int,char**). Ve druhém případě zvol výstup aplikace na okno a main nahraď int SDL_main(int paramn,char** params). Nicméně v obou případech bys měl předat parametry, které se předávají při spuštění (int,char**).
Snad ti to pomůže.

Odpovedať
25.9.2015 11:31
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
rikenbekr
Člen
Avatar
Odpovedá na Patrik Valkovič
rikenbekr:25.9.2015 13:55

No bylo to tím že místo sdl-config --libs --cflags má být sdl**2**-config --libs --cflags .
Je to program pro konzoli protože : a) snáže přídu na to co je špatně
b) SDL_main z nějakého důvodu nefungovala
SDL_SetMainReady() tam sice nebyla, ale zjistil jsem že na funkčnost tohoto programu nemá vliv.

Ve druhém případě zvol výstup aplikace na okno

Nechápu jak a kde?
Pouze tím že místo main() bude SDL_main()

Odpovedať
25.9.2015 13:55
In world without fences and walls, who needs Gates and Windows?
Avatar
Odpovedá na rikenbekr
Patrik Valkovič:25.9.2015 14:03

Nevím jak je to u GNN, ale ve VS (jak bylo popisování v prvním díle) může nastavit SubSystem na Console, Window a Library. Podle toho se taky aplikace chová. Pokud jsi nechal SubSystem jako Console a chtěl jsi použít SDL_main, tak to nefunguje, protože OS explicitně nevolá funkci int main, ale (napříkald pro Windows) HRESULT WINMAIN(....).

Odpovedať
25.9.2015 14:03
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!