Du bist nicht angemeldet.

Werbeanzeige

11

08.04.2018, 23:50

Dank dir für die Antwort, ich werd mich allsbald dransetzen und das make erforschen..

Eine kurze Zwischenfrage hätt ich noch..

Ist es mit C eigentlich möglich selbst grafiken aut low-Level Ebene zu erstellen, also pixel an bestimmten Punkten zu erzeugen?
Oder ist dies dann wiederum nur durch ein assembler möglich? Und wenn möglich wie funktioniert das, bzw gibts da nen Tutorial für irgendwo?
Oder ein entsprechendes assembler Tutorial für Grafik erstellung?
Ich finde das wirklich wirklich sehr spannend gerade mit sowelchen ganz simplen pixel Grafiken etwas zusammenstellen zu können.

12

09.04.2018, 00:32

Prinzipiell kannst du (fast) alles machen. Theoretisch kannst du z.B. für jeden Pixel den du zeichnen willst ein Sprite rendern, das wäre aber extrem ineffizient. Daher ist es besser sowas in einem externen Programm zu tun und dann das fertige Sprite (Spielfigur oder whatever) zu rendern. Wenn du dann mal etwas weiter bist, wirst du Shader kennenlernen, damit kannst du quasi kleine GPU programme schreiben, die bspw. pro Pixel ausgeführt werden (-> du kannst ziemlich genau festlegen, wie welcher Pixel aussehen soll).
Assembler benutzt heutzutage meines Wissens nach für Grafikprogrammierung kein Mensch mehr. Prinzipiell kannst du damit auch nicht viel mehr machen, als in C, aber du hast mehr Kontrolle über die Instruktionen, die am Ende auch wirklich auf der CPU ausgeführt werden (in C musst du dem Compiler vertrauen).

Schorsch

Supermoderator

Beiträge: 5 116

Wohnort: Wickede

Beruf: Student

  • Private Nachricht senden

13

09.04.2018, 08:18

Naja du könntest theoretisch mit OpenGL arbeiten. Dann wärst du noch eine Ebene tiefer. Pixel für Pixel zeichnest du da auch nicht, musst aber viel viel mehr von Hand machen. Empfehlen würde ich dir das aktuell nicht. Dafür solltest du besser mit der Sprache und deiner Umgebung vertraut sein. Wenn du dir SDL angesehen hast kannst du da hinterher OpenGL integrieren. Das kannst du dir dann ja bei Gelegenheit mal ansehen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

14

09.04.2018, 11:40

Wenn ich das ganze Thema recht verstanden zu haben glaube, benötige ich also quasi das Wissen, wie ich mit Hilfe von C die ganze Hardware entsprechend ansprechen kann richtig? Und dadurch kann ich dann Grafiken erstellen oder was auch immer man sich vorstellen könnte, bei entsprechender Lern und Zeitaufwandsbereitsschaft versteht sich..

Gibt es dazu Bücher die mir jemand empfehlen kann oder wo bekomme ich das Wissen her?

Ich habe die beiden Bücher: C von A bis Z, und Linux/Unix Programmierung. Doch leider habe ich dort drinne keine Hardware Befehle gefunden um irgendwelche Treiber zu erstellen oder den Prozessor zu bearbeiten oder den Kernel etc..
Kennt jemand ein Buch darüber oder einen Link wo diese Befehle aufgelistet und beschrieben sind?
Ich meine mit C wurden ja mehrere Grafik Bibliotheken erstellt und auch andere Programmiersprachen und sogar ganze Betriebssysteme Zb Linux.. irgendwie ist das dann ja scheinbar möglich. Nur ich finde nirgends etwas darüber.
Kann mir Jemand verraten wonach ich da genau googln muss um mich weiter zu erleuchten? Vielen Dank :)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »M&M's Knabberer« (09.04.2018, 12:17)


Schorsch

Supermoderator

Beiträge: 5 116

Wohnort: Wickede

Beruf: Student

  • Private Nachricht senden

15

09.04.2018, 14:03

Na erst mal solltest du fit genug in C werden. Du solltest dich vor allem noch mal etwas genauer mit dem Buildvorgang auseinander setzen. Thema Bibliotheken zum Beispiel. Danach gibt es viele Möglichkeiten wie es weiter geht. Wenn dich low level und vor allem Linux interessiert dann kannst du ja mal einen Blick in den Kernel werfen. Es gibt zum Beispiel das Buch "Understanding the Linux Kernel". Das kannst du dir mal rein ziehen. In der Richtung solltest du dir vor allem Grundlagen zu Betriebssystemen aneignen. "Modern Operating Systems" von Tanenbaum ist da so ein Standardwerk. Wichtig ist hier vor allem, es geht nicht nur darum dass du gut mit C umgehen kannst, du brauchst vor allem viel Hintergrundwissen um zu verstehen wie so ein Betriebssystem aufgebaut ist und wie der ganze Kram denn genau funktioniert. Unterschätz das nicht. Was Treiber angeht, so kann ich dir grad kein Buch nennen. Es gibt Seiten wie osdev auf denen es soweit ich es im Kopf habe auch ein paar Artikel zu ein paar Treibern gibt. An sich heißt es aber auch hier wieder dass du sehr gut mit C und Assembler umgehen können solltest und zusätzlich eine Menge Hintergrundwissen brauchst. Davon bist du aktuell noch weit entfernt. Programmiersprachen kann man in so ziemlich jeder Sprache entwickeln. Das ist keine Besonderheit von C. Das ist aber an sich schon wieder ein völlig anderes Thema. Dazu gibt es auch massig Bücher, die sind aber auch nicht unbedingt auf deinem Level und hier sollte auch eine Menge Hintergrundwissen vorhanden sein.
Jetzt gibt es einen Unterschied dazwischen low level Grafikanwendungen zu schreiben, oder einen Grafiktreiber zu schreiben. Du stellst dir das falsch vor. Du sagst dem Rechner nicht direkt welchen Pixel er in welcher Farbe zeichnen soll. Du hast eben eine Schnittstelle wie OpenGL, DirectX oder vergleichbares. Und auf der setzt du dann auf.
Ich würde dir vorschlagen einfach mal weiter mit SDL zu machen. Wenn du damit gut klar kommst kannst du dir ansehen wie du OpenGL integriert bekommst. Bei der ganzen Sache solltest du vor allem lernen selbstständig arbeiten zu können. Die Dinge die du ansprichst erfordern eine Menge Arbeit und Disziplin.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

16

09.04.2018, 17:21

Das mit den Pixeln setzen hatte ich gedacht wäre so etwa ähnlich wie bei Assembler. Dort kann man doch auch jedes Pixel einzeln farblich angeben. Hatte angenommen, dergleichen sei auch mit C irgendwie möglich.
Dann werd ich mich auch mal mit Assembler befassen, vielleicht lern ich dadurch mehr über die Hardware Benutzung.

Was sind vertiefte Kenntnisse in C?

Tobiking

1x Rätselkönig

  • Private Nachricht senden

17

09.04.2018, 18:02

Das mit den Pixeln setzen hatte ich gedacht wäre so etwa ähnlich wie bei Assembler. Dort kann man doch auch jedes Pixel einzeln farblich angeben. Hatte angenommen, dergleichen sei auch mit C irgendwie möglich.

Wie setzt du denn Pixel in Assembler?

Der entscheidende Punkt ist meist nicht die Sprache, sondern der Weg. In den üblichen Betriebssystemen kommst du aus einem Benutzerprozess weder auf Hardware, noch auf BIOS Methoden. Wenn dein Weg also irgendwas mit int 13h oder spezielle VGA Speicherbereiche einbezieht, wird das in den meisten Fällen nicht gehen. Auch mit Assembler nicht. Der Linux Kernel stellt dir aber sowas wie das Framebuffer Device (fbdev) zu Verfügung. Da ist es wiederum relativ egal ob du per Assembler, C oder sogar Java drauf zugreifst.

18

09.04.2018, 18:04

Ich würde dir ebenfalls vorschlagen, dich erst mal auf ein Thema und die Grundlagen zu konzentrieren. Du mischst da ziemlich viele sehr fortgeschrittene Themen durcheinander. Mach es so wie Schorsch gesagt hat und schau dir C und die SDL an und schreib vllt. ein kleines Minispiel oder einen andere Anwendung damit. Dann sollte sich z.B. auch ein klareres Bild wie Grafikprogrammierung funktioniert von selbst ergeben. Wenn du dann weiter im Grafik Bereich was machen möchtest kannst du dir bspw. OpenGL anschauen. Wenn du noch mehr low-Level möchtest, dann Vulkan. Mit Assembler macht man im Grafik Bereich wie gesagt eigentlich nichts mehr. Es gibt auch keinen Assembler Befehl "mach diesen Pixel Lila" o.ä., das ganze ist eher wie "lade den wert X in Register Y". Auf diesem Level schreibt kein Mensch irgendwelche Grafikanwendungen.
Falls du dich allerdings eher für Betriebssysteme, Treiber usw. interessierst kann das schon wieder anders aussehen (siehe dazu Schorschs Informationen). Dafür müsstest du dann aber kein OpenGL/Vulkan oder so lernen. Aber du musst halt entscheiden was du willst, alles auf einmal kann keiner am Anfang und ich bezweifle, dass es viele Menschen gibt, die in allen diesen Bereichen gleichzeitig Experten sind. Wenn du jetzt verwirrt bist bzw. unsicher in welche Richtung du eigentlich willst, dann ist es auch noch zu früh diese Entscheidung zu treffen. Wie gesagt, befasse dich in diesem Fall am besten mit den Grundlagen (C & SDL o.ä.).
Vertiefte Kenntnisse in C bedeutet, dass du in der Lage sein solltest Programmcode (in C) zu verstehen und selbstständig zu schreiben, d.h. wenn du bei jeder 2. Zeile Fehler im Code hast oder die entsprechenden C Befehle/Syntax nicht kennst, dann solltest du noch mehr C lernen. Wenn es dir aber einfach fällt, bspw. einen Algorithmus (dessen Logik du im Kopf verstanden hast) in C umzusetzen, dann kann man schon sagen, dass du dich auch mit komplexeren Themen (such dir eins aus) befassen kannst.

19

14.04.2018, 17:28

Ich habe ein Buch gefunden das C Programmierung rein unter Linux enthält und da drin ist sogar eine Grafik Bibliothek vorgestellt die sich LCGI nennt.
Mit dem Buch werd ich mir das erstmal alles erarbeiten. Danach müsste ich C auf höherem Niveu beherrschen und es müsste dann auch nicht mehr schwer fallen andere Grafik Libs zu nutzen wie SDL, OpenGL oder dergleichen..
Übrigents scheint die LCGI die Grafics.h als Linux Version zu sein.. genau sowas hab ich eigentlich gesucht, was simples Altertümliches :)
Ich lass mir aber Zeit, arbeite von A-Z alles durch, habs nicht eilig. Außerdem befass ich mich zum Großteil auch noch mit Linux Administration wo ich noch viel zu lernen hab. (Will LPIC1 schaffen).
Wenn ich in dem Punkt Grafik/Spiele hilfe brauch meld ich mich hier wieder bis dahin danke erstmal :)

Werbeanzeige