PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : einfache möglichkeit, spritebasierte bilder mit c auszugeben



schoppenhauer
01-11-2006, 22:43
Hallo.

Ich hab ein Problem, und zwar möchte ich (seit geraumer zeit nun schon) ein Programm schreiben, das eine einfache möglichkeit braucht, grafiken (ob in einem fenster oder vollbild ist egal, format ist auch prinzipiell egal) die sich z.B. aus sprites aufbauen, auszugeben. Die XLib wäre schön gewesen, ist aber overkill und eignet sich ohnehin nicht so ganz dafür. SDL ist zwar einfacher aber auch overkill.
Qt, GTK und sowas hab ich mir bisher nicht wirklich angeeignet, soll aber relativ kompliziert sein. Außerdem sind das ja eher widget-libraries.

Also Schnelligkeit ist fast egal, sag ich gleich. Und high-end müssen die grafiken auch nicht sein ^^. (Ich hab natürlich auch nix dagegen).
Das Einzige was es können sollte, sind transparente sprites. Also sprites, bei denen einzelne pixel transparent sind.

Ich als ehemaliger java-ausschließlich-benutzer machs bisher (da ich gerne c dafür verwenden würde) so, dass ich ein java-programm laufen lasse, das sich per pipe mit meinem c-programm verbindet (nein, kein socket, wirklich ne pipe ;-) ) und dementsprechend sachen ausgibt... Ist aber totaler Pfusch, hab ich auch nur gemacht, weil es relativ einfach geht, und weil ich erstmal mit den anderen - wichtigeren - teilen des programms fertig werden wollte, bis ich mich um die grafik ernsthaft kümmere.

Schön wäre schon, wenn es per X11 oder so geht, sodass es wirklich immer funktioniert, wenn ein x-server vorhanden ist. Ich denke mal, GTK wäre gut, aber ist eben wie gesagt sehr aufwändig... für meine Zwecke.

Interaktion... nunja... minimal... Also es soll schon auf Tastatureingaben reagieren können, aber mehr muss es auch nicht. Und auch das nicht sooo schnell. Das Wichtigste ist mir: Es soll schnell erlernbar sein, einfach gehen, und man soll nicht viel verstehen müssen. Sprich: Alles schön Quick and Dirty.

Nungut... Soetwas wird es kaum geben... Könntet ihr mir dennoch irgendwas empfehlen?

Fabeltier
03-11-2006, 01:10
Sprich: Alles schön Quick and Dirty.
Redest Du von original Sprites, Software-Sprites oder irgendwelche "Bild-fliegt-ueber-Bildschirm" Darstellungen? Machs doch in Java?!

Ansosten isses in C wohl GTK. Wenn Du mehr machen willst, wird's wohl afaik was mit OpenGL werden (oder hat GTK blitter Funktionen?). Aber bei Sprites immer schoen den Hintergrund zwischenspeichern ;)

schoppenhauer
03-11-2006, 18:03
Danke erstmal soweit.


Redest Du von original Sprites, Software-Sprites oder irgendwelche "Bild-fliegt-ueber-Bildschirm" Darstellungen?Tja. Ich muss gestehen... ich kenn mich mit Grafikprogrammierung nicht so sonderlich gut aus. Was du mit "original sprites" meinst, weiß ich nicht, dito software-sprites? Also im Wesentlichen werde ich irgendwelche bilder aus Tiles aufbauen, die sich aber überlappen können und eben auch transparent sein können sollen.

"Bild-Fliegt-Über-Bildschirm"... nunja... das wäre schon schön, um dann doch etwas Bewegung in die Sache reinzubringen... aber dazu brauch ich ja dann wieder nen doublebuffer und dergleichen... nunja...


Machs doch in Java?!Da ich nun zum Einen bereits ziemlich weit in C geproggt habe (es fehlt fast nur noch die grafik), und mich zum Anderen bei diesem Programm bewusst von meinem bisherigen Java-N00b-Image emanzipieren wollte ;) , ... kommt dies nicht in Frage.


Ansosten isses in C wohl GTK.Ok, hat wohl wenigstens den Vorteil, dass es Plattformunabhängig ist...


Wenn Du mehr machen willst, wird's wohl afaik was mit OpenGL werden (oder hat GTK blitter Funktionen?). Aber bei Sprites immer schoen den Hintergrund zwischenspeichern ;) Hm... Das hatte ich befürchtet... Dann wohl doch eher SDL... SDL kann ich wenigstens schon ein wenig (daher weiß ich ja, dass es overkill ist).

Fabeltier
03-11-2006, 21:58
Ok, ich muss gestehn, ich bin selber kein Grafikprogrammierer und auch nicht gross in C unterwegs. Ich kenne diese Geschichte auch nur aus der Theorie.

Afaik unterscheidet man zwischen "Sprites", diese werden vollstaendig ueber die Hardware verwaltet, afaik ist der Mauszeiger so ein Sprite(?). Software-Sprites, die man afaik auch Shape nennt, diese funktionieren aehnlich wie Sprites, werden aber ueber "Software" im Grafikspeicher gesteuert. Beide funktionieren ueber eine Maske die an gesetzten Bits verwaltet werden. Beim C64 konnte man afaik damit 4 Schichten - je eine Farbe uebereinander legen um einen "bunten" Sprite zu erzeugen, das war bei mir eig auch schon die komplette Sprite Erfahrung.

In der Regel werden afaik heute geblittete Grafiken verwendet, das funktioniert im einfachsten Fall mit BitBlt, StrechBlt, PatBlt etc - den Bezeichnung von diesen weiss ich nicht mehr. Ich weiss nicht, ob diese zur Basisfunktionalitaet von GTK+ gehoeren, denke aber eig. schon, weil sie unter Windows auch in der Win32 schon dabei waren und auch so benannt sind.

Wenn Du mit GTK+ anfaengst, musste Dich da halt vllt etwas mehr einarbeiten als in Java. Prinzipiell sollte es allerdings aehnlich funktionieren, weil die Techniken der Grafikprogrammierung nicht an eine spezielle Sprache gebunden sein sollten (abgesehn von den Unterschieden, die man bei C beachten sollte).

Is sicherlich ne gute Uebung, wenn man Spiele o.ae. programmieren will, fang doch einfach mal mit nem GTK+ Tutorial an, bspw. hier:
http://www.gtk.org/tutorial/

schoppenhauer
03-11-2006, 22:11
Tja... C hat eben seine Tücken.

Danke für das Tutorial... Das sieht ja sogar mal verständlich und gut strukturiiert aus... Sowas bin ich ja garnicht gewohnt... erstaunlich.

Danke. Ich werds mal lesen... Sobald es einigermaßen einfach geht, reicht es für meine Zwecke.

Edit: Wow... Das sieht ja wirklich machbar aus... Ich denk, das isses, was ich brauche. Hm... Liegt wohl daran, dass das Tutorial zur Abwechslung mal gut ist.