10.14489/vkit.2014.08.pp.011-016 |
DOI: 10.14489/vkit.2014.08.pp.011-016 Шакаев В. Д., Шабалина О. А. Аннотация. Рассмотрены проблемы разработки кроссплатформенных приложений компьютерной графики. Представлены техники объединения низкоуровневых графических API (Application Programming Interface), таких как OpenGL и Direct3D, под общим абстрактным интерфейсом для создания эффективных графических приложений. Предложена методология построения интерфейса, включающая рекомендации по выбору правильного уровня абстракции интерфейса и требования к нему. Рассмотрены некоторые проектные и технические решения по реализации грамотного интерфейса, соответствующего требованиям гибкости и функциональности, прозрачности и простоты использования, самодостаточности и производительности. В качестве примера грамотной реализации кроссплатформенного графического интерфейса на языке C/C++ рассмотрена библиотека bgfx. Даны описания архитектуры библиотеки и основные детали ее реализации, такие как техники построения эффективной абстракции над низкоуровневыми графическими API. Ключевые слова: разработка видеоигр; кроссплатформенность; интерактивная компьютерная графика; низкоуровневый графический интерфейс.
Shakaev V. D., Shabalina О. А. Abstract. Nowadays, software portability is an important issue. Interactive graphics applications are no exception: currently, cross-platform videogames are some of the most profitable and successful software products. Modern real-time graphics is based on using specialized hardware. Low-level access to the graphics hardware is granted by graphics API (Application Programming Interface) such as OpenGL and Direct3D. This article discusses methods of abstracting low-level graphics APIs for creating portable graphics applications. Considera-tions for designing a practical API-agnostic graphics interface on top of low-level graphics APIs using the C/C++ programming language are outlined. Existing approaches to building a graphics abstraction layer are reviewed. Typical problems occurring in open-source graphics libraries are pointed out. Design solutions and implementation techniques for avoiding those problems are described. A methodology for building a viable graphics abstraction layer is proposed. Recommendations on choosing the right level of abstraction, designing a good public interface and implementing the graphics backend are presented. As a good example of a cross-API software abstraction layer the bgfx graphics library is shown. Its capabilities, high-level architecture and design choices along with several implementation details, in particular, the render state management and shader abstraction are described. Overall, bgfx is shown to be a compact and high-performance cross-platform graphics library making good use of efficient coding techniques and achieving optimal balance between feature set, flexibility, sim-plicity and performance. It is probably the only open-source submission-based renderer. Keywords: Videogame development; Cross-platform; Interactive computer graphics; Low-level graphics application.
РусВ. Д. Шакаев, О. А. Шабалина (Волгоградский государственный технический университет) E-mail: Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript EngV. D. Shakaev, О. А. Shabalina (Volgograd State Technical University) E-mail: Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript
Рус1. Sterna W. Porting Code between Direct3D9 and OpenGL 2.0 / GPU Pro : Advanced Rendering Techniques. A K Peters, Ltd., 2010. P. 529 – 540. Eng1. Sterna W. (2010). Porting code between Direct3D9 and OpenGL 2.0. GPU PRO : Advanced rendering tech-niques. (pp. 529-540). A K Peters, Ltd.
РусСтатью можно приобрести в электронном виде (PDF формат). Стоимость статьи 250 руб. (в том числе НДС 18%). После оформления заказа, в течение нескольких дней, на указанный вами e-mail придут счет и квитанция для оплаты в банке. После поступления денег на счет издательства, вам будет выслан электронный вариант статьи. Для заказа статьи заполните форму: {jform=1,doi=10.14489/vkit.2014.08.pp.011-016} . EngThis article is available in electronic format (PDF). The cost of a single article is 250 rubles. (including VAT 18%). After you place an order within a few days, you will receive following documents to your specified e-mail: account on payment and receipt to pay in the bank. After depositing your payment on our bank account we send you file of the article by e-mail. To order articles please fill out the form below: {jform=2,doi=10.14489/vkit.2014.08.pp.011-016}
. .
|