NOVINKA: Začni v IT jako webmaster s komplexním akreditovaným online kurzem Tvůrce WWW stránek. Zjisti více:
NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. 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
Nejnovější komentáře jsou na konci poslední stránky.
Avatar
rikenbekr
Člen
Avatar
rikenbekr:29.8.2015 21:54

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

Odpovědět
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.

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
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
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
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
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
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
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
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
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Nejnovější komentáře jsou na konci poslední stránky.
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.