המדריך המקיף לגרפיקה עם Perl#

Perl אינה השפה שאליה אנשים פונים כשהם חושבים על ”גרפיקה“, ומוניטין זה הוא בעיקר תאונה היסטורית ולא אמירה על הכלים. סוס העבודה של הרסטר (Imager) מתוחזק באופן פעיל ומהיר, מנוע הווקטור שכולם משתמשים בו מתחת למכסה המנוע (Cairo) הוא בעל כריכות נקיות, ויש ערכת כלים ל־GUI עצמאית עם ליבת גרפיקה משלה (Prima) המציירת לחלון אמיתי בלי ערכת כלים חיצונית להיאבק בה. מה שחסר ל־Perl אינו ספריות אלא מקום יחיד המסדר אותן, מן הפיקסל ועד לתוכנית רצה.

מדריך זה הוא המקום הזה, עבור שני ממדים. הוא מתחיל בתיאוריה שכל מתכנת גרפיקה זקוק לה בסופו של דבר (כיצד קו הופך לפיקסלים, מהו למעשה מרחב צבע, כיצד שקיפות מרכיבה), עובר דרך ערכות הכלים העובדות של CPAN, ואז הולך צעד אחד רחוק יותר מן הסיור הרגיל: הוא משתמש ב־FFI המובנה של pperl כדי להגיע ישירות לספריות גרפיקה של C, באותו אופן ש־pperl כבר מגיע ל־libgmp כדי לתת לך את Math::GMP. הוא מסתיים בשני דברים שאפשר להריץ: יישום ציור ומשחק דו־ממדי.

זו הגרסה הראשונה. שלושה ממדים, OpenGL, מנועי משחק וה־GPU הם המשך מתוכנן, לא חלק מספר זה. הפרק האחרון מסמן קו זה במפורש.

איזה פרק רלוונטי עבורי?#

אני רוצה ל…

התחילו כאן

להבין כיצד פיקסלים, נתיבים וצבע עובדים למעשה

foundations

לממש קו, מעגל, מילוי או טשטוש בעצמי

raster-algorithms

לצייר על, לטעון או לשמור תמונת bitmap

raster-imager

להשתמש בבסיס קוד של GD או ImageMagick, או בתכונות הספציפיות שלהם

raster-gd-magick

להפיק נתיבי ווקטור בלתי־תלויי־רזולוציה, או פלט SVG

vector-cairo-svg

לקרוא מטא־נתונים של תמונה, או לצייר תרשים

metadata-and-charts

לצייר בחלון חי ב־Linux

gui-toolkits

להגיע לספריית גרפיקה של C שאין לה כריכת CPAN

ffi-graphics-primer

לראות כיצד כריכת ה־Cairo המובנית שמסופקת עם pperl עובדת

ffi-cairo-showcase

לבנות יישום ציור אמיתי

capstone-drawing-app

לבנות משחק דו־ממדי אמיתי

capstone-2d-game

למצוא תלת־ממד, מנועי משחק, או כריכת SDL2 שלמה

whats-next

שלוש הקשתות של מדריך זה#

  • יסודות - foundations ו־raster-algorithms. המודל המנטלי והאלגוריתמים הקלאסיים, כתובים ב־Perl פשוט כך שתחזיק בהם לפני שספרייה כלשהי מסתירה אותם. קראו אותם פעם אחת; כל פרק מאוחר יותר מניח את אוצר המילים.

  • ערכות כלים - חמשת הפרקים מ־raster-imager ועד gui-toolkits. מחסנית הדו־ממד העובדת של CPAN: במה כל ספרייה טובה והיכן אחת גוברת על אחרת. כל פרק עצמאי; פנו לזה שמכנה את הבעיה שלכם.

  • להגיע רחוק יותר - מ־ffi-graphics-primer והלאה. ה־FFI המובנה של pperl, שני פרויקטי הגולה, ומפה כנה של המקום שבו הדרך מסתיימת כרגע.

הערה על זמן הריצה#

These chapters target pperl, a faithful Rust reimplementation of Perl 5.44. The CPAN modules in the toolkit chapters are used exactly as they are on any Perl 5, and the FFI chapters use pperl’s own Peta::FFI, which has no perl5 equivalent.

פערים ידועים#

כל דבר תלת־ממדי, כל נושא של תכנות GPU, ראייה ממוחשבת וניתוח תמונה, ומחברים לשירותי יצירת־תמונות מתארחים הם מחוץ לתחום עבור גרסה זו. הם מוזכרים, עם הסיבה והתוכנית, ב־what’s next. פרקי ה־FFI גם מסמנים, בנקודה שבה זה חשוב, אילו ממשקי C נגישים היום ואילו ממתינים לשכבה הבאה של Peta::FFI.

ראו גם#

  • Auto-FFI (Peta::FFI) - שכבת ה־FFI המובנית שעליה בנויה קשת ה“הגעה רחוק יותר“: dlopen, call, קודי חתימת־הטיפוס, ותבנית הכריכה האצורה.

  • מדריך ארכיטקטורת PPerl - ה־JIT וכיצד pperl מספק מודולים מגובי־C באופן מובנה.