{"id":94504,"date":"2019-06-03T16:13:44","date_gmt":"2019-06-03T16:13:44","guid":{"rendered":"http:\/\/gamefromscratch.com\/post.aspx?id=b21c3bbd-6812-412f-9826-ec3cf7c0c419"},"modified":"2019-06-03T16:13:44","modified_gmt":"2019-06-03T16:13:44","slug":"raylib-2-5-released","status":"publish","type":"post","link":"https:\/\/sickgaming.net\/blog\/2019\/06\/03\/raylib-2-5-released\/","title":{"rendered":"Raylib 2.5 Released"},"content":{"rendered":"<p><a href=\"https:\/\/www.raylib.com\">Raylib<\/a> is an open source C based cross platform game framework released under the zlib\/libpng open source license that I previously referred to as \u201c<a href=\"https:\/\/www.youtube.com\/watch?v=FDbIQZBar7g\">the easiest C\/C++ game framework I\u2019ve ever found<\/a>\u201d and that description is still true today.&nbsp; Raylib started life as a way to teach non-programmers game development in an accessible manner and I would say for the most part, mission accomplished.&nbsp; Since that initial release, raylib has continued to improve and the just released raylib 2.5 is one of the biggest releases yet.<\/p>\n<p>Details from the <a href=\"https:\/\/github.com\/raysan5\/raylib\/releases\">release notes<\/a>:<\/p>\n<ul>\n<li>\n<p>New <strong>window management and filesystem functions<\/strong> to query monitor information, deal with clipboard, check directory files info and even launch a URL with default system web browser. Experimental <strong>High-DPI monitor support<\/strong> has also been added through a compile flag.<\/p>\n<\/li>\n<li>\n<p><strong>Redesigned Gamepad mechanism<\/strong>, now generic for all platforms and gamepads, no more specific gamepad configurations.<br \/><strong>Redesigned UWP input system<\/strong>, now raylib supports UWP seamlessly, previous implementation required a custom input system implemented in user code.<\/p>\n<\/li>\n<li>\n<p><code>rlgl<\/code> module has been redesigned to <strong>support a unique buffer for shapes drawing batching<\/strong>, including LINES, TRIANGLES, QUADS in the same indexed buffer, also added support for multi-buffering if required. Additionally, <code>rlPushMatrix()<\/code>\/<code>rlPopMatrix()<\/code> functionality has been reviewed to behave exactly like OpenGL 1.1, <code>models_rlgl_solar_system<\/code> example has been added to illustrate this behaviour.<\/p>\n<\/li>\n<li>\n<p><strong>VR simulator<\/strong> has been reviewed to <strong>allow custom configuration of Head-Mounted-Device parameters and distortion shader<\/strong>, <code>core_vr_simulator<\/code> has been properly adapted to showcase this new functionality, now the VR simulator is a generic configurable stereo rendering system that allows any VR device simulation with just a few lines of code or even dynamic tweaking of HMD parameters.<\/p>\n<\/li>\n<li>\n<p>Support for <strong>Unicode text drawing<\/strong>; now raylib processes UTF8 strings on drawing, supporting Unicode codepoints, allowing rendering mostly any existent language (as long as the font with the glyphs is provided). An amazing example showing this feature has also been added: <code>text_unicode<\/code>.<\/p>\n<\/li>\n<li>\n<p>Brand <strong>new text management API<\/strong>, with the addition of multiple functions to deal with string data, including functionality like replace, insert, join, split, append, to uppercase, to lower&#8230; Note that most of those functions are intended for text management on rendering, using pre-loaded internal buffers, avoiding new memory allocation that user should free manually.<\/p>\n<\/li>\n<li>\n<p>Multiple <strong>new shapes and textures drawing functions<\/strong> to support rings (<code>DrawRing()<\/code>, <code>DrawRingLines()<\/code>), circle sectors (<code>DrawCircleSector()<\/code>, <code>DrawCircleSectorLines()<\/code>), rounded rectangles (<code>DrawRectangleRounded()<\/code>, <code>DrawRectangleRoundedLines()<\/code>) and also n-patch textures (<code>DrawTextureNPatch()<\/code>), detailed examples have been added to illustrate all this new functionality.<\/p>\n<\/li>\n<li>\n<p>Experimental <strong>cubemap support<\/strong>, to automatically load multiple cubemap layouts (<code>LoadTextureCubemap()<\/code>). It required some internal <code>rlgl<\/code> redesign to allow cubemap textures.<\/p>\n<\/li>\n<li>\n<p><strong>Skeletal animation support for 3d models<\/strong>, this addition implied a redesign of <code>Model<\/code> data structure to accomodate multiple mesh\/multiple materials support and bones information. Multiple models functions have been reviewed and added on this process, also <strong>glTF models loading support<\/strong> has been added.<\/p>\n<\/li>\n<\/ul>\n<p>You can download <a href=\"https:\/\/raysan5.itch.io\/raylib\">raylib here<\/a>, while the source code is <a href=\"https:\/\/github.com\/raysan5\/raylib\">available here<\/a>.&nbsp; In terms of learning the API, pretty much all you need to know is available on this <a href=\"https:\/\/www.raylib.com\/cheatsheet\/cheatsheet.html\">cheatsheet<\/a>.&nbsp; Additionally there are a huge number of examples available (that can run in your browser) <a href=\"https:\/\/www.raylib.com\/examples.html\">right here<\/a>, each including full source code.<\/p>\n<p class=\"under\"> <span class=\"categories\"><a href=\"https:\/\/www.gamefromscratch.com\/category\/GameDev-News.aspx\">GameDev News<\/a><\/span> <span class=\"tags\"><a href=\"https:\/\/www.gamefromscratch.com\/?tag=\/CPP\" rel=\"tag\">CPP<\/a> <a href=\"https:\/\/www.gamefromscratch.com\/?tag=\/2D\" rel=\"tag\">2D<\/a><\/span> <\/p>\n<hr>\n","protected":false},"excerpt":{"rendered":"<p>Raylib is an open source C based cross platform game framework released under the zlib\/libpng open source license that I previously referred to as \u201cthe easiest C\/C++ game framework I\u2019ve ever found\u201d and that description is still true today.&nbsp; Raylib started life as a way to teach non-programmers game development in an accessible manner and [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[71],"tags":[72],"class_list":["post-94504","post","type-post","status-publish","format-standard","hentry","category-game-development","tag-gamedev-news"],"_links":{"self":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/94504","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/comments?post=94504"}],"version-history":[{"count":0,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/94504\/revisions"}],"wp:attachment":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media?parent=94504"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/categories?post=94504"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/tags?post=94504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}