NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 3 - SDL - Základy vykreslování

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
rikenbekr
Člen
Avatar
rikenbekr:29.8.2015 21:54

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

Odpovědět
29.8.2015 21:54
In world without fences and walls, who needs Gates and Windows?
Avatar
Odpovídá 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.

 
Odpovědět
29.8.2015 22:05
Avatar
rikenbekr
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
rikenbekr:29.8.2015 22:13

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

Odpovědět
29.8.2015 22:13
In world without fences and walls, who needs Gates and Windows?
Avatar
David Novák
Tvůrce
Avatar
Odpovídá na rikenbekr
David Novák:29.8.2015 23:13

Řekl bych dokumentace ;)

Odpovědět
29.8.2015 23:13
Chyba je mezi klávesnicí a židlí.
Avatar
Odpovídá na rikenbekr
Patrik Valkovič:29.8.2015 23:16

StackOverflow a dokumentace :D

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

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

Odpovědět
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$
Editováno 25.9.2015 11:25
Odpovědět
25.9.2015 11:25
In world without fences and walls, who needs Gates and Windows?
Avatar
Odpovídá 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.

Odpovědět
25.9.2015 11:31
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
rikenbekr
Člen
Avatar
Odpovídá 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()

Odpovědět
25.9.2015 13:55
In world without fences and walls, who needs Gates and Windows?
Avatar
Odpovídá 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(....).

Odpovědět
25.9.2015 14:03
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 16.