2012-06-16 8 views
6

Ich untersuche Linux und grafische APIs, aber ich bin verwirrt, wie OpenGL in Betriebssystemen implementiert ist. Ist es nur ein Satz von Bibliotheken, die den Kernel verwenden, um mit Ihrer Grafikkarte darüber zu "sprechen", welche Pixel zu färben sind oder nicht? Wenn ja, dann weiß ich nicht, wo die Pipeline kommt - wie 3D-Szenen gerastert werden und Shader die Geometrie beeinflussen.Wie ist OpenGl in einem Betriebssystem implementiert?

Und wie kommen GPUs können Shader Sprachen von DX und OGL unterstützen? - und wo passen Shadersprachen eigentlich hin? - Werden sie zur Laufzeit kompiliert oder interpretiert?

Ich habe selbst nicht sehr viel Erfahrung mit grafischen APIs, obwohl ich mehrere Game-Engines verwende - normalerweise ist das Wesentliche durch mehrere Abstraktionsschichten verloren gegangen.

+1

Sie haben könnten Ein Blick auf diese Reihe von Blog-Beiträge, die Sie aufklären können: http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-1/ – rotoglup

+2

mögliche Duplikate von [Wie funktioniert OpenGL auf der niedrigsten Stufe?] (Http://stackoverflow.com/questions/6399676/how-does-openg-work-at-the-lowest-level) – datenwolf

Antwort

0

Ich kann nicht sprechen, wie die API implementiert ist.

Aber ich weiß aus Erfahrung, dass Shader kompiliert werden. Also kompilieren Sie sie und senden sie an Ihre GPU, wo sie ausgeführt werden.

0

Zumindest bei den meisten typischen Grafikkarten ist der größte Teil der OpenGL-Pipeline (fest oder programmierbar) in der Grafikhardware selbst implementiert. Dies gilt umso mehr für DirectX (d. H., DirectX fehlt eine ganze Menge Funktionalität in OpenGL, die von der aktuellen Hardware nicht direkt unterstützt wird).

Shader werden normalerweise kompiliert. Die Grafikkarte hat einen speziellen Prozessor (oder oft mehr als einen), so dass der Compiler die Eingabe in der Shader-Sprache übernimmt und sie in die Assembler-Sprache für diesen Prozessor umwandelt, ähnlich wie es ein C-Compiler für die CPU tut. Unterstützung von Sprachen unterschiedliche Eingabe ist nicht viel anders aus einer einzigen CPU unterstützt Eingang in C, C++, Pascal, Fortran, Cobol etc.