Mikä olisi hyvä rajapinta C-kielelle? SDL:lää kokeilin, mutta en tykännyt.
onko OpenGL tai D3D mitään? Ja eikös se DX ole kanssa myös yksi rajapinta, eli mikä on näistä kolmesta parhain/helpoin?
Itse suosittelen, että käytät SDL:ää, jos et ole tottunut käsittelemään suuria määriä koodia vain luodaksesi yhden vaivaisen ikkunan. Jos syy siihen, että et tykännyt SDL:stä on se, että se tuntui sekavalta, vaikealta tai ei ottanut muuten vain toimiakseen, on turha siirtyä OpenGL:n tai DirectX:n sillä ne ovat monta kertaa hankalampia. Tällaisessa tapauksessa ainoa järkevä syy käyttää kahta viimeksi mainittua rajapintaa on, että tekee 3D pelin, mutta jos ei SDL tunnut onnistuvan niin sanoisin, että ei ole mahdollisuuksia tehdä myöskään 3D peliä.
D3D on osa DX:ää. OpenGL on käyttöjärjestelmä riippumaton, mutta se on sitten vain grafiikka kirjasto. DirectX toimii vain windows alustoilla, mutta se sisältää kaikki pelintekemiseen tarvittavat ominaisuudet.
OpenGL:llä voi kylläkin piirtää SDL:llä luotuun ikkunaan, mutta tee ne 2D pelit ainakin näin alkuun kokonaan sillä SDL:llä.
Jos SDL kuitenkin tuntuu liian vaikealta, voisit kokeilla Allegroa, joka on ehkä vielä hieman helpompi aloittelijalle. Itse en siitä kyllä suuremmin pidä, ja se tuntuu melko hitaalta. http://www.allegro.cc
Kokeile tykkäätkö wxWidgets tai gtk+ (GIMP toolkit) grafiikkarajapinnoista. Itse en ole käyttänyt kumpaakaan kuin kerran, mutta jäi sellainen kuva, että niillä saa ikkunoita aikaiseksi ihan tarpeeksi vähäisellä vaivalla.
Gaxx kirjoitti:
OpenGL:llä voi kylläkin piirtää SDL:llä luotuun ikkunaan
Tuon kuulee aivan liian usein. Tiedoksenne, nipottajat, että onnistuu se DirectX:lläkin :)
Otin tuosta Allegron ja nyt kun yritin kääntää sitä, niin herjaa jotain ihan kummallisia...
lainaus:
src.fli.c:660: error: invalid lvalue in increment
Noita tulee semmosen parisensataa kappaletta, rivinumero vaa eri.
EDIT: Ja nytpä päätin siirtyä Dev-C++ IDEen ja latasin allegro devpakin ja asensin sen, ei virheitä.
#include <allegro.h> #include <stdio.h> int main(void) { printf("Eka Allegro ohjelmani!\n\n"); allegro_init(); install_keyboard(); while(!key[KEY_SPACE]) {} allegro_exit(); return 1; }
Tuommoisessa herjaa
lainaus:
[Linker error] undefined reference to `WinMain@16'
ld returned 1 exit status
Jos laittaa "END_OF_MAIN;" perään, niin herjaa
lainaus:
12 D:\main.cpp expected constructor, destructor, or type conversion before ';' token
Mikä vikana?
EDIT2: Löysin virheen. Se on "END_OF_MAIN();" eikä "END_OF_MAIN;"
Aihe on jo aika vanha, joten et voi enää vastata siihen.