המדריך המקיף לגרפיקה עם Perl#
Perl אינה השפה שאליה אנשים פונים כשהם חושבים על ”גרפיקה“, ומוניטין זה הוא בעיקר תאונה היסטורית ולא אמירה על הכלים. סוס העבודה של הרסטר (Imager) מתוחזק באופן פעיל ומהיר, מנוע הווקטור שכולם משתמשים בו מתחת למכסה המנוע (Cairo) הוא בעל כריכות נקיות, ויש ערכת כלים ל־GUI עצמאית עם ליבת גרפיקה משלה (Prima) המציירת לחלון אמיתי בלי ערכת כלים חיצונית להיאבק בה. מה שחסר ל־Perl אינו ספריות אלא מקום יחיד המסדר אותן, מן הפיקסל ועד לתוכנית רצה.
מדריך זה הוא המקום הזה, עבור שני ממדים. הוא מתחיל בתיאוריה שכל מתכנת גרפיקה זקוק לה בסופו של דבר (כיצד קו הופך לפיקסלים, מהו למעשה מרחב צבע, כיצד שקיפות מרכיבה), עובר דרך ערכות הכלים העובדות של CPAN, ואז הולך צעד אחד רחוק יותר מן הסיור הרגיל: הוא משתמש ב־FFI המובנה של pperl כדי להגיע ישירות לספריות גרפיקה של C, באותו אופן ש־pperl כבר מגיע ל־libgmp כדי לתת לך את Math::GMP. הוא מסתיים בשני דברים שאפשר להריץ: יישום ציור ומשחק דו־ממדי.
זו הגרסה הראשונה. שלושה ממדים, OpenGL, מנועי משחק וה־GPU הם המשך מתוכנן, לא חלק מספר זה. הפרק האחרון מסמן קו זה במפורש.
איזה פרק רלוונטי עבורי?#
אני רוצה ל… | התחילו כאן |
|---|---|
להבין כיצד פיקסלים, נתיבים וצבע עובדים למעשה | |
לממש קו, מעגל, מילוי או טשטוש בעצמי | |
לצייר על, לטעון או לשמור תמונת bitmap | |
להשתמש בבסיס קוד של GD או ImageMagick, או בתכונות הספציפיות שלהם | |
להפיק נתיבי ווקטור בלתי־תלויי־רזולוציה, או פלט SVG | |
לקרוא מטא־נתונים של תמונה, או לצייר תרשים | |
לצייר בחלון חי ב־Linux | |
להגיע לספריית גרפיקה של C שאין לה כריכת CPAN | |
לראות כיצד כריכת ה־ | |
לבנות יישום ציור אמיתי | |
לבנות משחק דו־ממדי אמיתי | |
למצוא תלת־ממד, מנועי משחק, או כריכת SDL2 שלמה |
שלוש הקשתות של מדריך זה#
יסודות - 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 באופן מובנה.