ওপেনজিএলে পাঠ্য রেন্ডার করার পছন্দের উপায় [বন্ধ]


17

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

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

  • ভাসমান অবজেক্ট / চরিত্রের লেবেল
  • সংলাপ
  • মেনু
  • HUD এর

সম্পাদনা: সাধারণত এটি ফন্টগুলি লোড করতে পারে


1
এটি একটি "প্রশ্নটি ব্যবহার করার জন্য কোন প্রযুক্তি", এবং সম্ভবত এটি বন্ধ করা উচিত।
লরেন্ট কুইভিদু

উত্তর:


4

একটি জনপ্রিয় কাঠামো হ'ল ক্রেজি এডির জিইউআই

তবে যদিও এটি আবেদন করছে, আপনার নিজের রোল করা অস্বাভাবিক নয় (এবং পরে সুযোগটি বৃদ্ধি পাওয়ার সাথে সাথে এটির জন্য আফসোসও হবে;))

বিটম্যাপে আপনার গ্লিফগুলি রাখা এবং তারপরে ওপেনজিএল ব্যবহার করে বিটম্যাপগুলি আঁকানো স্বাভাবিক।

কখনও কখনও আপনি ক্ষণস্থায়ী পাঠ্য প্রদর্শন করেন যা কেবলমাত্র কয়েকটা ফ্রেমের জন্য প্রদর্শিত হতে পারে। কেবলমাত্র GL_QUADS + glVertex ব্যবহার করা যথেষ্ট be তবে কোনও বৃহত পরিমাণে পাঠ্য বা দৃশ্যমানতার দীর্ঘ মেয়াদে এটি GL_QUADS কে একটি ভিবিওতে রাখার উপযুক্ত - আমি এ থেকে বড় পারফরম্যান্সের উন্নতি লক্ষ্য করেছি।

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


9

অনেকগুলি উপায় রয়েছে - আপনি যা চান তার উপর নির্ভর করে ... অন্য কোথাও এর মতো, "সেরা সমাধান" এর মতো কিছু নেই। কোন প্ল্যাটফর্ম আপনার লক্ষ্য? আপনি কোন ভাষা ব্যবহার করছেন? পাঠ্য আকার পরিবর্তন / ঘূর্ণন সম্পর্কে কী - এটি প্রয়োজনীয়? আপনার কি ট্রু টাইপফন্টগুলি রেন্ডার করতে সক্ষম হতে হবে? বহু ভাষা / ইউনিকোড সম্পর্কে কী? আপনি কীভাবে আপনার পাঠ্যটি সংরক্ষণ করতে চান (কোন এনকোডিং ইত্যাদি)?

আমি অতীতেও এফটিজিএল, পাশাপাশি খাঁটি ফ্রিটাইপ ব্যবহার করতাম (http://www.freetype.org/ এফটিজিএল এটি ভিত্তিক), বিভিন্ন ধরণের বিটম্যাপ ফন্ট, রূপরেখা ফন্ট ... এখন আমি বেশিরভাগই বিটম্যাপে আসক্ত হরফ, তবে কেবল আমার ব্যক্তিগত পছন্দকেই পছন্দ করে। কারণ আমি আর আলাদা চরসেট, এনকোডিং এবং এ জাতীয় স্টাফগুলির সাথে আর চুক্তি করতে চাই না - এবং বিটম্যাপফন্টগুলির জন্য লাইসেন্স দেওয়াও ট্রু টাইপফন্টগুলির চেয়ে সহজ এবং সস্তা। এবং চিত্রগুলি লোড করতে পারে এমন প্রতিটি প্ল্যাটফর্মের জন্য এটি ব্যবহারযোগ্য। আমি ওপেনজিএলে কেবল একটি চতুর্থাংশ ব্যবহার করি এবং এটিতে আমার টেক্সচারের একটি অংশ মানচিত্র করি। অন্য দিকটি হ'ল: হরফ + /- 50% সম্পর্কে একটি ফ্যাক্টরে কেবল পরিষ্কার পুনরায় আকার পরিবর্তনযোগ্য হবে। আপনি যদি এটির সাথে থাকতে পারেন তবে আমি একটি বিটম্যাপফন্ট ব্যবহার করার পরামর্শ দেব।

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

এই বিষয়টির উপর নেহস বিভিন্ন টিউটোরিয়াল দেখুন:

http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=13 বিটম্যাপ ফন্ট

http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=14 আউটলাইন ফন্ট

http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=15 টেক্সচার ম্যাপড আউটলাইন ফন্ট

http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=17 2D টেক্সচার ফন্ট

শুভকামনা!


+1 পারফরম্যান্সের মূল্যবান তথ্যের জন্য ধন্যবাদ, আমি নেচের টিউটোরিয়ালগুলি সম্পর্কে জানতাম। আমি মনে করি যে আমি বিটম্যাপ ফন্ট ব্যবহার করেছি ... তবে এটি স্কেল হয়নি: প্রায় 60 টি লেবেল ভাসমান ভাসমানের উপরে একটি লাইনে যোগ হয়েছে, এর কোনও অন্তর্দৃষ্টি? (আমি ভেবেছিলাম ফ্লাইওয়েট প্যাটার্ন বাস্তবায়নের জন্য আমার কোনও উপায় অনুসন্ধান করা উচিত ছিল)
ডিউকুফগেমিং

1
সতর্কতা: নেচের টিউটোরিয়ালগুলি পুরানো ফিক্সড ফাংশন পাইপলাইনের জন্য এবং প্রায়শই আপডেট হয় না। আপনি যদি একটি আধুনিক যেমন OpenGL সমাধান দেখুন খুঁজছি হয় stackoverflow.com/questions/5262951/...
brita_

6

আপনি যদি বিটম্যাপ ফন্ট ব্যবহার করতে চান তবে আপনি অ্যাঞ্জেলকোড বিটম্যাপ ফন্ট জেনারেটরের সাথে খুব বেশি ভুল করতে পারবেন না: http://www.angelcode.com/products/bmfont/

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


1

আমি ওপেনএল (stb_image, stb_truetype) এর অধীনে ট্রুয়েটাইপ-গ্লাইফগুলি রেন্ডার করতে শান ব্যারেটের গ্রন্থাগারগুলি ব্যবহার করছি ।

ঢেলে সাজানো / ঘুরপথ প্রকল্পের একটি ইউজার ইন্টারফেস তৈরি করতে এই লাইব্রেরি ব্যবহার করা হয় ( IMUI )


0

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

পেশাদাররা:

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

কনস:

  • কিউটি একটি বড় কাঠামো
  • ডাইরেক্ট 3 ডি বা ভুলকান প্রকল্পগুলিতে কিউএমএল ব্যবহারের জন্য উপযুক্ত এপিআইতে জিএল টেক্সচারটি পেতে হুপের মধ্য দিয়ে ঝাঁপিয়ে পড়া প্রয়োজন (বা কেউ কিউএমএলের জন্য স্থানীয় ডি 3 ডি / ভলকান রেন্ডার লিখতে অপেক্ষা করছেন)
  • কিউএমএলে এখনও কিছু ছোট ছোট প্রশ্ন রয়েছে যেখানে আপনি কোনও অফস্ক্রিন পৃষ্ঠে রেন্ডার করলেও এটি কোনও নেটিভ কন্ট্রোল ব্যবহার করার চেষ্টা করবে যেমন আপনি যখন কোনও তালিকার আইটেমের জন্য ড্রপডাউন খোলার চেষ্টা করছেন তখন।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.