Theory
એક program, અનેક ઉપકરણો
કલ્પો કે તમારે એવો graphics program લખવો છે જે અનેક જુદા પડદા, printers અને graphics cards પર ચાલવો જોઈએ, અને દરેકનું પોતાનું hardware છે. કોઈ સહિયારી ભૂમિ ન હોય તો તમારે દરેક ઉપકરણ માટે દોરવાનો code ફરીથી લખવો પડે. એ તો શક્ય જ નથી.
Graphics standards આનો ઉકેલ આપે છે. Standard એટલે સર્વસંમત વિગતવાર વ્યાખ્યા, એટલે કે graphics ના હુકમોનો સહિયારો સમૂહ, જેને ઘણાં ઉપકરણો તથા systems ટેકો આપે છે. તમારો program standard પ્રમાણે લખો, એટલે એ એ બધા પર ચાલે. Unit નો આ છેલ્લો પાઠ સમજાવે છે કે graphics standards શું છે અને portability માટે એ કેમ મહત્ત્વનાં છે.
Theory
Graphics standard શું આપે છે
Graphics standard એક સહિયારો interface વ્યાખ્યાયિત કરે છે: એટલે કે graphics બનાવવા programmer જે functions અને હુકમો વાપરે છે એનો સમૂહ, જે નીચેના ચોક્કસ hardware થી સ્વતંત્ર હોય છે. Program standard ના હુકમો બોલાવે છે ('draw line', 'fill polygon'), અને standard નું implementation એમને ખરા ઉપકરણને જે જોઈએ એમાં ફેરવી આપે છે.
એનાથી ઉપકરણથી સ્વતંત્રતા અને portability મળે છે: એ જ graphics નો code જુદાં યંત્રો પર એ જ પરિણામ આપે છે, અને programmer ની આવડત એક system થી બીજી system માં કામ લાગે છે. Standards hardware બનાવનારાઓ માટે પણ કામ સહેલું કરે છે (standard ને ટેકો આપો એટલે એને અનુસરતું બધું software ચાલે) અને શીખવવા માટે પણ (સો ઉપકરણોની ખાસિયતોને બદલે એક standard શીખો).
At a glance
| Standard કે API | નોંધ |
|---|---|
| GKS (Graphical Kernel System) | 2D graphics માટેનું શરૂઆતનું standard |
| PHIGS | Programmer's Hierarchical Interactive Graphics System, ગોઠવાયેલા 3D માટે |
| OpenGL | બહોળા વપરાશવાળું, અનેક platform પર ચાલતું graphics API |
| DirectX | Microsoft નું graphics અને multimedia નું API (Windows) |
Formula
મુદ્દો છે portability અને સ્વતંત્રતા
કયું ચોક્કસ standard છે એ ગમે તે હોય, મુખ્ય લાભ એક જ છે: એક વાર લખો, અનેક ઉપકરણો પર ચલાવો. કોઈ ચોક્કસ hardware ને બદલે standard સામે program લખવાથી તમારું graphics નું application portable બને છે અને hardware બદલી શકાય એવું, જ્યાં સુધી દરેક ઉપકરણ એ standard ને ટેકો આપતું હોય.
આખા computing માં તમે જોયેલો આ જ વિચાર છે: સહિયારા interface પર સંમત થાઓ, એટલે સ્વતંત્ર ભાગો સાથે કામ કરી શકે (જેમ કે networks માટે TCP/IP, કે OSI model). Graphics standards એને દોરવા પર લગાડે છે અને software ને કોઈ એક ઉપકરણની વિગતોમાંથી મુક્ત કરે છે. Standard શીખો, એટલે તમારો code અને તમારું જ્ઞાન, બંને સાથે મુસાફરી કરે છે.
Quiz
OpenGL જેવા computer graphics ના standard નો મુખ્ય હેતુ શો છે?
- Graphics ની files નાની બનાવવાનો
- Graphics ના હુકમોનો સહિયારો સમૂહ આપવાનો, જેથી program ફરીથી લખ્યા વગર જુદાં hardware પર ચાલી શકે (portability અને ઉપકરણથી સ્વતંત્રતા)
- Graphics card ની જરૂર જ ન રહે એ માટે
- ચિત્રોને vectors તરીકે સંઘરવા માટે
Show the answer
Graphics ના હુકમોનો સહિયારો સમૂહ આપવાનો, જેથી program ફરીથી લખ્યા વગર જુદાં hardware પર ચાલી શકે (portability અને ઉપકરણથી સ્વતંત્રતા)
Graphics standard એક સહિયારો interface આપે છે, એટલે કે graphics ના હુકમોનો સર્વસંમત સમૂહ, જેથી standard પ્રમાણે લખાયેલો program ફરીથી લખ્યા વગર જુદાં ઉપકરણો પર ચાલે, અને એમ portability તથા ઉપકરણથી સ્વતંત્રતા મળે. વિકલ્પ A standards ને file ના સંકોચન સાથે ભેળવી દે છે; standards programming ના interface ની વાત છે, files નાની કરવાની નહીં. વિકલ્પ C ખોટો છે: standard graphics hardware સાથે કામ કરે છે (એના માટે હુકમોનો અનુવાદ કરીને), એની જરૂર દૂર કરતું નથી. વિકલ્પ D file સંઘરવાની પસંદગી વર્ણવે છે (vector સામે raster), જે જુદો વિષય છે; standard એ API છે, file નું format નહીં. મુખ્ય મૂલ્ય છે એક વાર લખો અને અનેક ઉપકરણો પર ચલાવો.
Think first
ચોક્કસ hardware ને બદલે standard સામે program લખવું કેમ સારું?
કોઈ એક ચોક્કસ ઉપકરણ માટે જ ઘડેલો graphics નો code કેમ ન લખવો? Standard તમને શું આપે છે? વિચારીને પછી tap કરો.
Show the answer
કારણ કે code ને ચોક્કસ hardware સાથે બાંધી દેવાથી એ નાજુક અને બિનportable બની જાય છે, જ્યારે standard સામે લખવાથી એ standard ને જ્યાં ટેકો હોય ત્યાં બધે ચાલે છે, અને software તથા hardware, બંનેને સ્વતંત્ર રીતે વિકસવા દે છે.
તમે કોઈ એક ચોક્કસ graphics card કે પડદા માટે સીધું graphics લખો, તો તમારો program ફક્ત એ જ hardware પર ચાલે; જુદું ઉપકરણ, નવું card કે બીજું platform આવે એટલે દોરવાનો code ફરીથી લખવો પડે, જે પ્રચંડ અને વારંવારની મહેનત છે; અને તમારા વપરાશકારો ચોક્કસ યંત્રો સાથે બંધાઈ જાય.
OpenGL જેવા standard સામે લખવાથી તમે હુકમોનો સહિયારો સમૂહ બોલાવો છો, અને દરેક ઉપકરણ પોતાનું implementation (driver) આપે છે જે એ હુકમોને પોતાના hardware ને જોઈએ એમાં ફેરવે છે. એટલે એ જ graphics નો program કશા ફેરફાર વગર અનેક જુદાં cards અને systems પર ચાલે છે, કારણ કે એ બધાં standard સમજે છે.
આનાથી તમારું software hardware થી છૂટું પડે છે: hardware બનાવનારા નવાં, વધુ ઝડપી ઉપકરણો બનાવી શકે છે જેના પર હયાત બધું standard આધારિત software ચાલતું જ રહે (એમણે ફક્ત standard નું implementation કરવાનું), અને software બનાવનારા એક વાર લખીને પ્રચંડ સંખ્યાનાં ઉપકરણો સુધી પહોંચી શકે છે.
એનાથી નિપુણતા પણ એક જગ્યાએ કેન્દ્રિત થાય છે: driver લખનારા standard ના હુકમોને પોતાના hardware માટે ધારદાર બનાવે છે, એટલે તમારી app ને એ ઝડપ મફતમાં મળે છે. અને જ્ઞાન પણ portable બને છે: standard શીખો, એટલે તમે એને અનુસરતા કોઈ પણ ઉપકરણ માટે graphics લખી શકો.
આખા computing માં ચાલતો interface સામે implementation નો આ જ સિદ્ધાંત છે (જેમ કે API કે network નું protocol): interface પર સંમત થાઓ, એટલે બંને બાજુના ભાગ મુક્ત રીતે બદલી શકે. Standards 'આ એક ઉપકરણ પર ચાલે છે' ને 'બધે ચાલે છે' માં ફેરવી નાખે છે, અને એટલે જ એ graphics ના programming નો પાયો છે. Standard ને નિશાન બનાવો, ધાતુને નહીં.
Summary
Key takeaways
- Graphics standard એટલે સર્વસંમત વિગતવાર વ્યાખ્યા: graphics ના હુકમોનો સહિયારો સમૂહ, જેને અનેક ઉપકરણો ટેકો આપે છે.
- એ ઉપકરણથી સ્વતંત્રતા અને portability આપે છે, એટલે એ જ graphics નો code જુદાં hardware પર ચાલે છે.
- Program standard ના હુકમો બોલાવે છે, અને એનું implementation એમને ખરા ઉપકરણ માટે અનુવાદિત કરે છે.
- જાણીતાં standards અને APIs: GKS, PHIGS, OpenGL (અનેક platform પર), DirectX (Microsoft અને Windows).
- Standards software ને મદદ કરે છે (એક વાર લખો, અનેક પર ચલાવો), hardware બનાવનારાઓને (standard ને ટેકો આપો, અનુસરતી બધી apps ચાલે) અને શીખનારાઓને પણ.
- Networking માટેનાં network protocols જેમ, આ interface સામે implementation નો વિચાર graphics પર લગાડેલો છે.
- યાદ રાખવાની કડી: ચોક્કસ hardware ને બદલે standard સામે program લખો, જેથી તમારો code અનેક ઉપકરણો પર ચાલે.