এইচটিএমএল 5 ক্যানভাস বনাম এসভিজি বনাম ডিভ


476

ফ্লাইতে উপাদান তৈরি করার জন্য এবং তাদের চারপাশে সরাতে সক্ষম হওয়ার জন্য সর্বোত্তম পদ্ধতির কী? উদাহরণস্বরূপ, আসুন আমি বলি যে আমি একটি আয়তক্ষেত্র, বৃত্ত এবং বহুভুজ তৈরি করতে চাই এবং তারপরে objects বস্তুগুলি নির্বাচন করে এগুলিকে চারপাশে স্থানান্তরিত করতে চাই।

আমি বুঝতে পারি যে এইচটিএমএল 5 এমন তিনটি উপাদান সরবরাহ করে যা এটি সম্ভব করে তোলে: এসভিজি , ক্যানভাস এবং ডিভিড । আমি কী করতে চাই, সেই উপাদানগুলির মধ্যে কোনটি সেরা পারফরম্যান্স সরবরাহ করবে?

এই পদ্ধতির তুলনা করতে, আমি তিনটি দৃশ্যত অভিন্ন ওয়েব পৃষ্ঠা তৈরি করার কথা ভাবছিলাম যা প্রত্যেকটিতে একটি শিরোনাম, পাদলেখ, উইজেট এবং পাঠ্য সামগ্রী রয়েছে। প্রথম পৃষ্ঠায় উইজেটটি সম্পূর্ণ canvasউপাদান দিয়ে তৈরি করা হবে , দ্বিতীয়টি সম্পূর্ণ svgউপাদান দিয়ে এবং তৃতীয়টি সরল divউপাদান, এইচটিএমএল এবং সিএসএস সহ।



1
আপনারা এই তত্ত্ববিজ্ঞানে নতুন যারা এই ভিডিওতে এসভিজি এবং ক্যানভাস উভয় এবং কীভাবে এটি এইচটিএমএল 5 তে সংহত হয় সে সম্পর্কে অন্যান্য বিবরণকে অন্তর্ভুক্ত করে।
পাওলো বুয়েনো

12
সংক্ষিপ্ত উত্তর: ক্যানভাস এমএস পেইন্টের যেমন এসভিজি এমএস পাওয়ারপয়েন্টে রয়েছে। ক্যানভাস রাস্টার, এসভিজি ভেক্টোরিয়াল।
গেটফ্রি

2
প্রিয় পাঠক: সমস্ত তুলনা এবং বিবৃতি এখানে নুনের দানার সাথে নিন এবং পোস্টগুলি এবং মন্তব্যের তারিখটি দেখুন। সময় বদলেছে এবং বদলে যাবে। আপেক্ষিক পারফরম্যান্স এবং আপনার কাছে থাকা বিকল্পগুলিও পরিবর্তিত হবে। যেমন সর্বাধিক উত্তর যেখানে লেখা ছিল যখন ওয়েবজিএল ছিল না, এটি অবশ্যই একটি বিকল্প - এটি কয়েক বছরের মধ্যেও পুরানো হয়ে যাবে, তবে আজকের দিনে এটি খুব প্রাসঙ্গিক হতে পারে।
সেবাস্তিয়ান

@ সেবাস্তিয়ান আপনি আজ কোনটি সুপারিশ করবেন? যদি একটি বেস আকার দেওয়া হয় (যেমন, 1280x800) এবং আপনি যদি কোডটিতে উপাদানগুলিতে ম্যানুয়ালি স্কেল করতে বা সার্বক্ষণিক শতাংশ ব্যবহার করতে ইচ্ছুক হন, তবে ডিআইভি ব্যবহারের জন্য এসভিজির কোনও সুবিধা আছে কি?
ক্রশলোট

উত্তর:


563

সংক্ষিপ্ত উত্তর:

এসভিজি আপনার পক্ষে সহজতর হবে , যেহেতু এটি নির্বাচন এবং এটিকে চারপাশে স্থানান্তরিত করা ইতিমধ্যে অন্তর্নির্মিত S SVG অবজেক্টগুলি DOM অবজেক্টস, সুতরাং তাদের "ক্লিক" হ্যান্ডলার ইত্যাদি রয়েছে etc.

Divs ঠিক আছে কিন্তু ক্লাঙ্কি হয় এবং ভয়াবহ বৃহৎ সংখ্যক এ কর্মক্ষমতা লোড হচ্ছে।

ক্যানভাসের হ্যান্ড-ডাউন সেরা পারফরম্যান্স রয়েছে, তবে আপনাকে নিজেরাই পরিচালিত রাষ্ট্রের সমস্ত ধারণা (বস্তু নির্বাচন ইত্যাদি) প্রয়োগ করতে হবে, বা একটি লাইব্রেরি ব্যবহার করতে হবে।


দীর্ঘ উত্তর:

এইচটিএমএল 5 ক্যানভাস একটি বিট-ম্যাপের জন্য কেবল একটি অঙ্কন পৃষ্ঠ। আপনি অঙ্কন করার জন্য সেট আপ করেছেন (একটি রঙ এবং রেখার বেধ দিয়ে বলুন), সেই জিনিসটি আঁকুন, এবং তারপরে ক্যানভাসের কাছে সেই জিনিসটির কোনও জ্ঞান নেই: এটি কোথায় আছে বা এটি সবেমাত্র আঁকেন তা জানেন না, এটি শুধু পিক্সেল। আপনি যদি আয়তক্ষেত্রগুলি আঁকতে চান এবং সেগুলি ঘুরে বেড়াতে চান বা নির্বাচনযোগ্য হতে পারেন তবে কোডগুলি মনে রাখার জন্য যে আপনি সেগুলি আঁকেন সেগুলি সহ আপনাকে স্ক্র্যাচ থেকে এগুলি সমস্ত কোড করতে হবে।

অন্যদিকে এসভিজির অবশ্যই প্রতিটি বস্তুর রেফারেন্স রেফারেন্স বজায় রাখতে হবে। আপনার তৈরি প্রতিটি এসভিজি / ভিএমএল উপাদান ডিওমে একটি আসল উপাদান। ডিফল্টরূপে এটি আপনাকে তৈরির উপাদানগুলির আরও ভাল ট্র্যাক রাখতে দেয় এবং মাউস ইভেন্টের মতো কাজগুলি ডিফল্টরূপে সহজতর করে তোলে, তবে যখন প্রচুর পরিমাণে অবজেক্ট থাকে তখন তা উল্লেখযোগ্যভাবে কমে যায় s

এই এসভিজি ডোম উল্লেখের অর্থ হল যে আপনি আঁকেন সেগুলি নিয়ে কাজ করার কিছু পদাঙ্ক আপনার জন্য করা হয়েছে। সত্যিকারের বৃহত অবজেক্টগুলিকে রেন্ডার করার সময় এবং এসভিজি দ্রুত হয় তবে অনেকগুলি অবজেক্ট রেন্ডার করার সময় ধীর হয় ।

একটি খেলা সম্ভবত ক্যানভাসে আরও দ্রুত হবে। একটি বিশাল মানচিত্র প্রোগ্রাম সম্ভবত এসভিজিতে দ্রুততর হবে। আপনি যদি ক্যানভাস ব্যবহার করতে চান না, তবে অস্থাবর বস্তুগুলি এখানে পেয়ে এবং চালানোর বিষয়ে আমার কিছু টিউটোরিয়াল রয়েছে ।

ক্যানভাস দ্রুত জিনিস এবং ভারী বিটম্যাপ ম্যানিপুলেশন (অ্যানিমেশনের মতো) জন্য ভাল তবে আপনি প্রচুর ইন্টারঅ্যাক্টিভিটি চাইলে আরও কোড নেবে।

আমি এইচটিএমএল ডিআইভি-তৈরি অঙ্কন বনাম ক্যানভাস তৈরি অঙ্কনগুলিতে একগুচ্ছ সংখ্যা চালিয়েছি। আমি প্রত্যেকের সুবিধাগুলি সম্পর্কে একটি বিশাল পোস্ট করতে পারি, তবে আমি আপনার নির্দিষ্ট প্রয়োগের জন্য বিবেচনা করার জন্য আমার পরীক্ষাগুলির কিছু প্রাসঙ্গিক ফলাফল দেব:

আমি ক্যানভাস এবং এইচটিএমএল ডিআইভি পরীক্ষার পৃষ্ঠা তৈরি করেছি, দুজনেরই চলমান "নোড" ছিল। ক্যানভাস নোডগুলি জাভাস্ক্রিপ্টে আমি তৈরি করেছিলাম এবং ট্র্যাক করেছিলাম objects এইচটিএমএল নোডগুলি চলমান ডিভস ছিল।

আমি আমার দুটি পরীক্ষার প্রতিটিতে 10,000,000 নোড যুক্ত করেছি। তারা বেশ ভিন্নভাবে অভিনয় করেছেন:

এইচটিএমএল পরীক্ষা ট্যাবটি লোড করতে চিরতরে লেগেছিল (5 মিনিটের কিছুটা কম সময়ে ক্রোম পৃষ্ঠাটি প্রথমবারে হত্যা করতে বলে)। ক্রোমের টাস্ক ম্যানেজার বলেছেন যে ট্যাবটি 168 এমবি গ্রহণ করছে। আমি যখন এটি দেখছি তখন এটি 12-13% সিপিইউ সময় নেয়, 0% যখন আমি দেখছি না।

ক্যানভাস ট্যাবটি এক সেকেন্ডে লোড হয়ে 30MB নেয়। এটি সিপিইউর সময়কালে 13% সময় নেয়, এটির দিকে তাকানো কিনা তা নির্বিশেষে। (২০১৩ সম্পাদনা: তারা বেশিরভাগ স্থির করে দিয়েছে)

এইচটিএমএল পৃষ্ঠায় টেনে আনা মসৃণ, যা ডিজাইনের দ্বারা প্রত্যাশিত, যেহেতু বর্তমান সেটআপটি ক্যানভাস পরীক্ষায় প্রতি 30 মিলিসেকেন্ডে সমস্ত কিছু পুনরায় আঁকতে হবে। এর জন্য ক্যানভাসের জন্য প্রচুর অপ্টিমাইজেশন রয়েছে। (ক্যানভাস অবৈধকরণ সবচেয়ে সহজ, ক্লিপিং অঞ্চলগুলি, নির্বাচনী পুনরায় আঁকানো ইত্যাদি just আপনি বাস্তবায়নের মতো কতটা অনুভব করেন তার উপর নির্ভর করে)

কোনও সন্দেহ নেই যে আপনি ক্যানভাসকে সেই সহজ পরীক্ষায় ডিভ হিসাবে এবং অবৈধভাবে লোডের সময়ে আরও দ্রুত গতিতে অবধি অবধি হেরফের করতে পারবেন। ক্যানভাসে অঙ্কন / লোডিং দ্রুততর এবং অপ্টিমাইজেশনের আরও অনেক বেশি জায়গা রয়েছে (যেমন, অফ-স্ক্রিনের জিনিসগুলি বাদ দেওয়া খুব সহজ)।

উপসংহার:

  • কিছু আইটেমযুক্ত অ্যাপ্লিকেশন এবং অ্যাপ্লিকেশনগুলির জন্য এসভিজি সম্ভবত আরও ভাল (1000 এর চেয়ে কম? সত্যই নির্ভর করে)
  • ক্যানভাস হাজার হাজার অবজেক্টস এবং সাবধানে হেরফেরের জন্য আরও ভাল তবে এটিকে মাটি থেকে নামানোর জন্য আরও অনেক কোড (বা একটি লাইব্রেরি) প্রয়োজন।
  • এইচটিএমএল ডিভগুলি আঠালো এবং স্কেল করে না, বৃত্ত তৈরি করা কেবল গোলাকার কোণগুলি দিয়েই সম্ভব, জটিল আকার তৈরি করা সম্ভব তবে শত শত ক্ষুদ্র পিক্সেল-প্রশস্ত ডিভগুলি অন্তর্ভুক্ত করে। পাগলামি নিশ্চিত।

4
ইসলাম গ্রন্থাগার একটি ক্যানভাসে অস্থাবর বস্তু এবং বস্তুর সঙ্গে অ্যানিমেশন করছেন অন্য একটি উদাহরণ
SiggyF

ভুল: পি ডিভ এর স্কেল করতে পারে যদি ব্রাউজারটি এইচডব্লিউ এক্সিলার্ট সিএসএস ইঞ্জিন ব্যবহার করে, সিএসএস আর্ট আলাদা হয় এবং ক্যানভাস এবং এসভিজি ছাড়াও এখানে যথাযথ পছন্দ হয়, সিএসএস আর্ট / ডিভ আর্ট কেবল তখনই যখন আপনাকে একটি ছোট ওভারলে ওভারকিল করতে হবে না: পি
শ্রেকওভারফ্লো

ডিআইভি সম্পর্কিত, আপনি যদি চেনাশোনাগুলি / বিশেষ আকার তৈরি করতে চান এবং যথাযথভাবে এর চিত্র / স্প্রাইট পরিবর্তন করতে চান না, আপনি কেবল একটি পিএনজি তৈরি করতে পারেন এবং এটি হিসাবে ব্যবহার background-imageকরতে পারেন ... যদিও আপনি এসভিজি / ক্যানভাসে একই জিনিস করতে পারেন
লুইজেস 90

4
আপনি যদি একটি ইন্টারেক্টিভ মানচিত্রের গেম তৈরি করছেন? : পি
এন্থনি

এটি (নির্দোষী) ডিআইভি এবং সিএসএস 3 ডি রূপান্তর ব্যবহার করে তৈরি করা হয়েছিল, তাই আমি বলব ডিআইভিগুলি মোটেও ধীর নেই: youtube.com/watch?v=fzBC20B5dsk
এরিক কাপলুন

39

এটি যুক্ত করার জন্য, আমি একটি ডায়াগ্রাম অ্যাপ্লিকেশন করছি, এবং প্রথম দিকে ক্যানভাস দিয়ে শুরু করেছি। ডায়াগ্রামে অনেকগুলি নোড থাকে এবং এগুলি বেশ বড় হতে পারে। ব্যবহারকারী চারদিকে ডায়াগ্রামে উপাদানগুলি টেনে আনতে পারে।

আমি যা খুঁজে পেয়েছি তা ছিল আমার ম্যাকের উপর, খুব বড় চিত্রগুলির জন্য, এসভিজি উচ্চতর is আমার কাছে একটি ম্যাকবুক প্রো 2013 13 "রেটিনা রয়েছে, এবং এটি নীচেটি খুব ভালভাবে চালায়। ডায়াগ্রাম।

আধুনিক ডিসপ্লেগুলিতে আপনাকে বিভিন্ন রেজোলিউশনের জন্যও অ্যাকাউন্ট করতে হবে এবং এখানে এসভিজি আপনাকে বিনামূল্যে এই সমস্ত কিছুই দেয়।

ফিডল: http://jsfiddle.net/knutsi/PUcr8/16/

পূর্ণস্ক্রিন: http://jsfiddle.net/knutsi/PUcr8/16/ এম্বেড / রিসাল্ট /

var wiggle_factor = 0.0;
nodes = [];

// create svg:
var svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
svg.setAttribute('style', 'border: 1px solid black');
svg.setAttribute('width', '6000');
svg.setAttribute('height', '6000');

svg.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xlink",
    "http://www.w3.org/1999/xlink");

document.body.appendChild(svg);


function makeNode(wiggle) {
    var node = document.createElementNS("http://www.w3.org/2000/svg", "g");
    var node_x = (Math.random() * 6000);
    var node_y = (Math.random() * 6000);
    node.setAttribute("transform", "translate(" + node_x + ", " + node_y +")");

    // circle:
    var circ = document.createElementNS("http://www.w3.org/2000/svg", "circle");
    circ.setAttribute( "id","cir")
    circ.setAttribute( "cx", 0 + "px")
    circ.setAttribute( "cy", 0 + "px")
    circ.setAttribute( "r","100px");
    circ.setAttribute('fill', 'red');
    circ.setAttribute('pointer-events', 'inherit')

    // text:
    var text = document.createElementNS("http://www.w3.org/2000/svg", "text");
    text.textContent = "This is a test! ÅÆØ";

    node.appendChild(circ);
    node.appendChild(text);

    node.x = node_x;
    node.y = node_y;

    if(wiggle)
        nodes.push(node)
    return node;
}

// populate with 1000 nodes:
for(var i = 0; i < 1000; i++) {
    var node = makeNode(true);
    svg.appendChild(node);
}

// make one mapped to mouse:
var bnode = makeNode(false);
svg.appendChild(bnode);

document.body.onmousemove=function(event){
    bnode.setAttribute("transform","translate(" +
        (event.clientX + window.pageXOffset) + ", " +
        (event.clientY + window.pageYOffset) +")");
};

setInterval(function() {
    wiggle_factor += 1/60;
    nodes.forEach(function(node) {

        node.setAttribute("transform", "translate(" 
                          + (Math.sin(wiggle_factor) * 200 + node.x) 
                          + ", " 
                          + (Math.sin(wiggle_factor) * 200 + node.y) 
                          + ")");        
    })
},1000/60);

2
ক্যানভাসকে আমাদের জন্য কাজ করার জন্য মরিয়া চেষ্টা করার পরেও আমরা এসভিজিতে স্থির হয়েছি। আমাদের একটি খুব বড় ডায়াগ্রাম রয়েছে এবং এসভিজি ছিলো সবচেয়ে দক্ষ, আরও রেটিনা স্ক্রিনে অটো-স্কেলিং একটি বিশাল বোনাস।
ফিজজিৎ

নট এবং @ ফিজজিট আপনি এসভিজির পরিবর্তে ডিআইভি ব্যবহার করা বিবেচনা করেছেন? যদি একটি বেস আকার দেওয়া হয় (যেমন, 1280x800) আপনি নিজে ডিভগুলি স্কেল করতে পারেন না যাতে তারা এসভিজির মতো তীক্ষ্ণ দেখাচ্ছে? আপনার সাহায্যের জন্য ধন্যবাদ!
ক্র্যাশলোট

24

এসভিজি এবং ক্যানভাসের মধ্যে পার্থক্যগুলি জেনে রাখা সঠিকটি নির্বাচন করতে সহায়ক হবে।

ক্যানভাস

করা SVG

  • রেজুলেশন স্বাধীন
  • ইভেন্ট হ্যান্ডলারের জন্য সমর্থন
  • বৃহত রেন্ডারিং অঞ্চলগুলি (গুগল ম্যাপস) সহ অ্যাপ্লিকেশনগুলির জন্য সেরা উপযুক্ত
  • জটিল হলে আস্তে রেন্ডারিং (কোনও কিছু যা ডমকে প্রচুর পরিমাণে ব্যবহার করে তা ধীর হবে)
  • গেম অ্যাপ্লিকেশন জন্য উপযুক্ত নয়

8
কেন মানুষ ক্যানভাস রেজোলিউশন নির্ভর? আমি বুঝতে পারি যে একবার বিটম্যাপটি রেন্ডার হয়ে গেলে তা ভালভাবে স্কেল হয় না। তবে আপনি রেজোলিউশনের আকারের পরিবর্তনগুলিতে পুনরায় চিত্র আঁকতে পারেন, তাহলে সেই রেজোলিউশনটি কীভাবে স্বাধীন নয়?
অ্যালেক্স বোলবাচ

@ অ্যালেক্সবোলবাচ - ক্যানভাস হ'ল রেজোলিউশন নির্ভর, কারণ ভাল ফলাফল পাওয়ার জন্য আপনাকে রেজুলেশনের উপর বিবেচনা (নির্ভর) করতে হবে। এসভিজির সাহায্যে আপনি রেজোলিউশনটির বিষয়ে চিন্তা করেন না। 2400DPI প্রিন্টার এবং ক্যানভাস ভিত্তিক রেন্ডারিংয়ের জন্য নন-জাগি লাইনগুলি পাওয়ার জন্য সৌভাগ্য। এসভিজি নিয়ে কোনও সমস্যা নেই।
সেবাস্তিয়ান

18

আমি সাইমন স্যারিসের সিদ্ধান্তের সাথে একমত:

আমি প্রোটোভিস (এসভিজি) এর কিছু ভিজ্যুয়ালাইজেশনকে প্রসেসিংজ (ক্যানভাস) এর সাথে তুলনা করেছি যা> 2000 পয়েন্ট এবং প্রসেসিংজে প্রোটোভিসের চেয়ে অনেক দ্রুত গতিতে দেখায়।

এসভিজির সাথে ইভেন্টগুলি পরিচালনা করা অবশ্যই অনেক সহজতর কারণ আপনি সেগুলিকে বস্তুগুলির সাথে সংযুক্ত করতে পারেন। ক্যানভাসে আপনাকে এটি ম্যানুয়ালি করতে হবে (মাউসের অবস্থান ইত্যাদি পরীক্ষা করুন) তবে সাধারণ ইন্টারঅ্যাকশনের জন্য এটি শক্ত হওয়া উচিত নয়।

রয়েছে dojo.gfx Dojo টুলকিট লাইব্রেরি। এটি একটি বিমূর্ত স্তর সরবরাহ করে এবং আপনি রেন্ডারার (এসভিজি, ক্যানভাস, সিলভারলাইট) নির্দিষ্ট করতে পারেন। এটি একটি কার্যকর বিকল্পও হতে পারে যদিও অতিরিক্ত বিমূর্ত স্তরটি কতটা ওভারহেড যুক্ত করে তা আমি জানি না তবে এটি মিথস্ক্রিয়া এবং অ্যানিমেশনগুলিকে কোড করা সহজ করে এবং রেন্ডারার-অজোনস্টিক।

এখানে কিছু আকর্ষণীয় মানদণ্ড রয়েছে:


17

ডিভস বিকল্পটি সম্পর্কে আমার 2 সেন্ট মাত্র।

বিখ্যাত / কুখ্যাত এবং সামসারাজেএস (এবং সম্ভবত অন্যরা) পজিশনিং এবং 2 ডি / 3 ডি রূপান্তরকরণের জন্য ম্যাট্রিক্স 2 ডি / ম্যাট্রিক্স 3 ডি এর সাথে মিলিত একেবারে পজিশনযুক্ত অ-নেস্টেড ডিভগুলি ব্যবহার করে (এবং সংযত মোবাইল হার্ডওয়ারে একটি স্থিতিশীল 60FPS অর্জন করে) সুতরাং আমি ডিভসের বিরুদ্ধে ধীর বিকল্প হিসাবে তর্ক করব।

ইউটিউব এবং অন্য কোথাও প্রচুর স্ক্রিন রেকর্ডিং রয়েছে, ব্রাউজারে উচ্চ-পারফরম্যান্স 2 ডি / 3 ডি স্টাফ চলছে যা একটি ডিওএম উপাদান হিসাবে রয়েছে যা আপনি 60FPS এ এলিমেন্টটি পরিদর্শন করতে পারেন (নির্দিষ্ট প্রভাবের জন্য ওয়েবজিএল এর সাথে মিশ্রিত, তবে এটির জন্য নয়) রেন্ডারিংয়ের মূল অংশ)।


14

যদিও উপরের উত্তরগুলির বেশিরভাগের কাছে এখনও কিছু সত্যতা রয়েছে, আমি মনে করি তারা একটি আপডেটের যোগ্য:

বছরের পর বছর ধরে এসভিজির পারফরম্যান্স অনেক উন্নত হয়েছে এবং এখন এসভিজির জন্য হার্ডওয়্যার-এক্সিলার্ট সিএসএস রূপান্তর এবং অ্যানিমেশন রয়েছে যা জাভাস্ক্রিপ্টের পারফরম্যান্সের উপর নির্ভর করে না depend অবশ্যই জাভাস্ক্রিপ্টের পারফরম্যান্সও উন্নত হয়েছে এবং এর সাথে ক্যানভাসের পারফরম্যান্সও এসেছে, তবে এসভিজি যতটা উন্নত হয়েছে তেমন হয়নি। এছাড়াও ব্লক যে আজ প্রায় সব ব্রাউজারে পাওয়া যায় এবং যে একটি "নতুন ছাগলছানা" হয় WebGL এর । সাইমন উপরে যে একই শব্দ ব্যবহার করেছেন তা ব্যবহার করতে: এটি ক্যানভাস এবং এসভিজি উভয়কেই পিটিয়ে ফেলে। এর অর্থ এই নয় যে এটি চলমান প্রযুক্তি হওয়া উচিত, যদিও এটি কাজ করার জন্য একটি জন্তু এবং খুব নির্দিষ্ট ব্যবহারের ক্ষেত্রে এটি কেবল দ্রুত।

আইএমএইচও আজ বেশিরভাগ ব্যবহারের ক্ষেত্রে, এসভিজি সেরা কর্মক্ষমতা / ব্যবহারের অনুপাত দেয়। ভিজ্যুয়ালাইজেশনগুলি সত্যই জটিল হতে হবে (উপাদানের সংখ্যার সাথে সম্মত) এবং একই সময়ে (উপাদান হিসাবে) যাতে খুব সহজ হতে পারে যাতে ক্যানভাস এবং আরও অনেক বেশি সত্যই ওয়েবজিএল আলোকিত হয়।

ইন একটি অনুরূপ প্রশ্নের এই উত্তর আমি আরো বিস্তারিত জানার প্রদানের, আমি কেন মনে করেন যে সমন্বয় তিনটি প্রযুক্তির মাঝে মাঝে সবচেয়ে ভাল বিকল্প আপনি আছে।


ইউনিক্স ব্যবহারকারীদের লক্ষ্য করা উচিত যে ফায়ারফক্স এবং ক্রোমিয়াম উভয় ক্ষেত্রেই হার্ডওয়্যার ত্বরণ ডিফল্টরূপে অক্ষম করা আছে, যা 2019 এর মাঝামাঝি সময়ে সত্য
এনভিআরএম

@ এনভিআরএম - এটি সিএসএস এবং এসভিজির হার্ডওয়্যার-এক্সিলারেশন সম্পর্কিত, ভিডিও ডিকোডিং সম্পর্কে নয়। আফিক পূর্বের বছরের জন্য উপলব্ধ ছিল: ক্রোমের আউটপুট পরীক্ষা করুন: // জিপিইউ
সেবাস্তিয়ান

layers.acceleration.force-enabledফায়ারফক্সে ভিডিও ডিকোডিং সম্পর্কে নয়। এটি একটি সুপরিচিত সত্য। যখন অনুরোধটি ব্যবহার করে লুপগুলি করা হয় অ্যানিমেশনফ্রেমটি অন্য স্তরের হয়, যাতে আরও পুনরায় রঙের অনুমতি দেওয়া হয়। ভিডিও সম্পর্কে মোটেই নয়।
এনভিআরএম

@ এনভিআরএম - আপনি কি জিপিইউতে লিনাক্সের জন্য এফএফ এবং ক্রোমিয়াম বাগের লিঙ্ক সরবরাহ করতে পারেন, দয়া করে? এছাড়াও মনে রাখবেন যে "হার্ডওয়্যার ত্বরণযুক্ত" দ্বারা আমি কেবল জিপিইউ ত্বরণকেই উল্লেখ করছি না, তবে মাল্টি-থ্রেডযুক্ত সংমিশ্রণ এবং অ্যানিমেশনগুলি যেমন জাভাস্ক্রিপ্ট চলমান না থাকাকালীন এবং জেএস কার্যকর করার সময় স্পিনিং করে এমন স্পিনিং লোড স্পিনিয়ারগুলিও রেখেছিল। এটি ক্যানভাসের সাথে অসম্ভব এবং খাঁটি "জাভাস্ক্রিপ্ট" এর সাথে সম্পর্কিত এটি অবশ্যই এক ধরণের হার্ডওয়্যার ত্বরণ (মাল্টি-থ্রেডিং) যা অবশ্যই সমস্ত প্ল্যাটফর্মে ক্রোম এবং এফএফ-তে উপলব্ধ। ধন্যবাদ!
সেবাস্তিয়ান

1
বর্তমান পরিস্থিতির সংক্ষিপ্তসার হিসাবে: ক্রোম এবং ক্রোমিয়ামে আমার জন্য কাজ করে। লিনাক্সে। 2019 সালে। সমস্ত দৃষ্টিতে আমি বিশেষ কনফিগারেশন ছাড়াই পরীক্ষা করেছি। ফায়ারফক্স / মজিলা এটিতে লিনাক্সের জন্য কাজ করছে , তবে প্রক্রিয়া রেন্ডারিং এফএফের পক্ষে নতুন কিছু নয়, এবং ক্যানভাসের চেয়ে এসভিজি, সিএসএস ইত্যাদির সাথে সর্বদা আরও ভাল কাজ করবে।
সেবাস্তিয়ান

13

আপনার উদ্দেশ্যগুলির জন্য, আমি এসভিজি ব্যবহারের পরামর্শ দিচ্ছি, যেহেতু আপনি মাউস হ্যান্ডলিংয়ের মতো, ড্রাগ এবং ড্রপ সহ ডিওএম ইভেন্টগুলি অন্তর্ভুক্ত করেছেন, আপনাকে নিজের পুনর্নির্মাণ করতে হবে না এবং আপনার অবস্থার উপর নজর রাখতে হবে না আপনার জিনিস যখন আপনাকে বিটম্যাপ চিত্রের হেরফের করতে হবে তখন ক্যানভাস ব্যবহার করুন এবং যখন আপনি এইচটিএমএলে তৈরি জিনিসগুলি পরিচালনা করতে চান তখন নিয়মিত ডিভ ব্যবহার করুন। পারফরম্যান্সের ক্ষেত্রে, আপনি দেখতে পাবেন যে আধুনিক ব্রাউজারগুলি এখন তিনটিই ত্বরান্বিত করছে, তবে সেই ক্যানভাসটি এখন পর্যন্ত সবচেয়ে বেশি মনোযোগ পেয়েছে। অন্যদিকে, আপনি আপনার জাভাস্ক্রিপ্টটি কতটা ভাল লিখেছেন তা ক্যানভাসের সাথে সর্বাধিক পারফরম্যান্স পাওয়ার জন্য সমালোচনা, সুতরাং আমি এখনও এসভিজি ব্যবহারের পরামর্শ দেব।


1
প্রকৃতপক্ষে প্লেইন এইচটিএমএল ব্যবহার করা সিএসএস চিত্রগুলির সাথে একত্রে সবচেয়ে কার্যকর।
রায়নস

16
@ রায়নোস: উত্স?
জানুস ট্রয়লসন

3

Googling যদিও আমি ব্যবহার এবং এর কম্প্রেশন সম্পর্কে একটি ভাল ব্যাখ্যা খুঁজে করা SVG এবং ক্যানভাসhttp://teropa.info/blog/2016/12/12/graphics-in-angular-2.html

আশা করি এটা সাহায্য করবে:

  • এইচটিএমএলের মতো এসভিজিও রেন্ডারিং রেন্ডারিং ব্যবহার করে : আমরা যখন স্ক্রিনে একটি আয়তক্ষেত্র আঁকতে চাই, তখন আমরা ঘোষকভাবে আমাদের ডোমে একটি উপাদান ব্যবহার করি। এরপরে ব্রাউজারটি একটি আয়তক্ষেত্র আঁকবে, তবে এটি একটি মেমরি এসভিজিআরেক্টেক্ট উপাদানও তৈরি করবে যা আয়তক্ষেত্রকে উপস্থাপন করে। এই অবজেক্টটি এমন একটি জিনিস যা আমাদের চালচলন করতে প্রায় স্থির থাকে - এটি ধরে রাখা হয়। আমরা সময়ের সাথে সাথে এটিতে বিভিন্ন অবস্থান এবং আকার নির্ধারণ করতে পারি। এটিকে ইন্টারঅ্যাকটিভ করার জন্য আমরা ইভেন্ট শ্রোতাদেরও সংযুক্ত করতে পারি।
  • ক্যানভাস তাত্ক্ষণিক উপস্থাপনা ব্যবহার করে : যখন আমরা একটি আয়তক্ষেত্র আঁকি , ব্রাউজারটি তাত্ক্ষণিকভাবে স্ক্রিনে একটি আয়তক্ষেত্র সরবরাহ করে তবে এমন কোনও "আয়তক্ষেত্র অবজেক্ট" হতে পারে না যা এটি প্রতিনিধিত্ব করে। ক্যানভাস বাফারে পিক্সেলগুলির একটি গুচ্ছ কেবল আছে। আমরা আয়তক্ষেত্রটি সরাতে পারি না। আমরা কেবল অন্য একটি আয়তক্ষেত্র আঁকতে পারি। আমরা আয়তক্ষেত্রের ক্লিক বা অন্যান্য ইভেন্টের প্রতিক্রিয়া জানাতে পারি না। আমরা কেবল পুরো ক্যানভাসে ইভেন্টগুলিতে প্রতিক্রিয়া জানাতে পারি ।

সুতরাং ক্যানভাসটি এসভিজির চেয়ে আরও নিম্ন-স্তরের, নিয়ন্ত্রণমূলক API। তবে এটিতে একটি ফ্লিপসাইড রয়েছে, এটি হ'ল ক্যানভাসের মাধ্যমে আপনি একই পরিমাণ সংস্থান নিয়ে আরও কিছু করতে পারেন। যেহেতু ব্রাউজারটিকে আমরা আঁকানো সমস্ত জিনিসের ইন-মেমোরি অবজেক্ট গ্রাফ তৈরি করতে এবং বজায় রাখতে হয় না, একই ভিজ্যুয়াল দৃশ্যটি আঁকতে এটির জন্য কম মেমরি এবং গণনার সংস্থান প্রয়োজন। আপনার আঁকার জন্য যদি খুব বড় এবং জটিল ভিজ্যুয়ালাইজেশন থাকে তবে ক্যানভাস আপনার টিকিট হতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.