{"id":3166,"date":"2012-07-31T07:39:42","date_gmt":"2012-07-31T13:39:42","guid":{"rendered":"http:\/\/www.realtimerendering.com\/blog\/?p=3166"},"modified":"2013-10-28T08:28:43","modified_gmt":"2013-10-28T14:28:43","slug":"opengl-insights-and-more","status":"publish","type":"post","link":"https:\/\/www.realtimerendering.com\/blog\/opengl-insights-and-more\/","title":{"rendered":"OpenGL Insights and more"},"content":{"rendered":"<p>In <a href=\"http:\/\/www.realtimerendering.com\/blog\/seven-things-for-july-25\/\">my previous blog post<\/a> I mentioned the newly-released book <strong><a style=\"font-weight: bold;\" href=\"http:\/\/www.amazon.com\/OpenGL-Insights-Patrick-Cozzi\/dp\/1439893764?tag=realtimerenderin\">OpenGL Insights<\/a><\/strong>. It&#8217;s worth a second mention, for a few reasons:<a href=\"http:\/\/www.amazon.com\/OpenGL-Insights-Patrick-Cozzi\/dp\/1439893764?tag=realtimerenderin\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright\" title=\"OpenGL Insights\" alt=\"\" src=\"https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51-ykLoxBpL._SL200_.jpg\" width=\"162\" height=\"200\" \/><\/a><\/p>\n<ul>\n<li>The editors and some contributors will be signing their book at SIGGRAPH at the CRC booth (#929) at Tuesday, 2 pm. This is a great chance to meet a bunch of OpenGL experts and chat.<\/li>\n<li>Five free chapters, which can be found <a href=\"http:\/\/openglinsights.com\/\">here<\/a>. In particular, <a href=\"http:\/\/www.seas.upenn.edu\/~pcozzi\/OpenGLInsights\/OpenGLInsights-TileBasedArchitectures.pdf\">&#8220;Performance Tuning for Tile-Based Architectures&#8221;<\/a> is of use to anyone doing 3D on mobile devices. Most of these devices are tile-based, so have a number of significant differences from normal PC GPUs. Reading this chapter and the (previously-mentioned) slideset\u00a0<em><a href=\"http:\/\/gdcvault.com\/play\/1015331\/Bringing-AAA-Graphics-to-Mobile\">Bringing AAA Graphics to Mobile Platforms<\/a><\/em> (<a href=\"http:\/\/www.unrealengine.com\/files\/downloads\/Smedberg_Niklas_Bringing_AAA_Graphics.pdf\">PDF version<\/a>) should give you a good sense of the pitfalls and opportunities of mobile tile-based architectures.<\/li>\n<li>The book&#8217;s website has an\u00a0<a href=\"http:\/\/openglinsights.com\/pipeline.html\">OpenGL pipeline map page<\/a> (direct link to PDF <a href=\"http:\/\/www.seas.upenn.edu\/~pcozzi\/OpenGLInsights\/OpenGLInsights-Pipeline.pdf\">here<\/a>). Knowing what happens when can clarify some mysteries and solve some bugs.<\/li>\n<li>The website also has a <a href=\"http:\/\/openglinsights.com\/tips.html\">tips page<\/a>, pointing out some of the subtleties of the API and the shading language.<\/li>\n<\/ul>\n<p>While I&#8217;m at it, here are some other worthwhile OpenGL resource links I&#8217;ve been collecting:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.geeks3d.com\/20110428\/download-apitrace-1-0-opengl-and-direct3d-trace-generator-and-analyzer\/\">ApiTrace<\/a>: a simple set of wrapper DLLs that capture graphics API calls (also works for DirectX). You can replay and examine just about everything &#8211; think &#8220;PIX for OpenGL&#8221;, only better. For example, you can edit a shader in a captured run and immediately see the effect. Also, <a href=\"https:\/\/github.com\/apitrace\/apitrace\/tags\">it&#8217;s open-source<\/a> and as of this writing is <a href=\"https:\/\/github.com\/apitrace\/apitrace\/commits\/master\">actively being developed<\/a>.<\/li>\n<li><a href=\"http:\/\/code.google.com\/p\/angleproject\/\">ANGLE<\/a>: software to translate OpenGL ES 2.0 calls to DirectX 9 calls. This package is what both Chrome and Firefox use to run WebGL programs on Windows. Open source, of course. Actually, just assume everything here is open-source unless I say different (which I won&#8217;t).\n<ul>\n<li><em>Edit<\/em>: Patrick Cozzi (one of the editors of OpenGL Insights) notes that there are <a href=\"http:\/\/blog.virtualglobebook.com\/2011\/10\/webgl-in-internet-explorer.html\">several options for WebGL on IE<\/a>. &#8220;Currently, I think the best option is to use Chrome Frame. It painlessly installs without admin rights, and also brings Chrome&#8217;s fast JavaScript engine to IE. We use it on <a href=\"http:\/\/cesium.agi.com\">http:\/\/cesium.agi.com<\/a> and I actually demo it on IE (including installing Chrome Frame) by request quite frequently.&#8221;<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"http:\/\/www.readwriteweb.com\/hack\/2011\/04\/internet-explorer-webgl-and-a.php\">Microsoft Internet Explorer won&#8217;t support WebGL<\/a>, so <a href=\"http:\/\/iewebgl.com\/\">someone else did<\/a> as a plug-in.<\/li>\n<li><a href=\"http:\/\/www.geeks3d.com\/20110510\/equalizer-1-0-swiss-made-framework-for-parallel-opengl-apps\">Equalizer<\/a>: a framework for coarse-parallel OpenGL rendering (think multi-display and multi-machine).<\/li>\n<li><a href=\"http:\/\/code.google.com\/p\/oolongengine\/\">Oolong<\/a> and\u00a0<a href=\"http:\/\/www.geeks3d.com\/20110512\/dengine-opengl-es-rendering-engine-for-iphone-source-code-available\">dEngine<\/a>: OpenGL ES rendering engines for the iPhone and iPad. Good for learning how things work. Oolong is 90% C++, dEngine is pure C. Each has its own features, e.g. <a href=\"http:\/\/www.fabiensanglard.net\/dEngine\/index.php\">dEngine supports bump mapping and shadow mapping<\/a>.<\/li>\n<li>A bit dated (OpenGL ES 1.1), but might be of interest: <a href=\"http:\/\/fabiensanglard.net\/wolf3d\/index.php\">a readable rundown of the ancient Wolf3D engine<\/a> and how it was ported to the iPhone.<\/li>\n<li><a href=\"https:\/\/launchpad.net\/glmark2\">gl2mark<\/a>: benchmarking software for OpenGL ES 2.0<\/li>\n<li>Matrix libraries: GLM is a full-blown matrix library based on OpenGL naming conventions,\u00a0<a href=\"https:\/\/launchpad.net\/libmatrix\">libmatrix<\/a> is\u00a0a template library for vector and matrix transformations for OpenGL, <a href=\"http:\/\/www.geeks3d.com\/20110512\/vsml-very-simple-matrix-lib-for-opengl\">VMSL<\/a> is a tiny library for providing modern OpenGL with the modelview\/projection matrix functionality in OpenGL 1.0.<\/li>\n<li><a href=\"http:\/\/g3d.sourceforge.net\/\">G3D<\/a>: well, it&#8217;s more a user of OpenGL, but worth a mention. It&#8217;s a pretty nice C++ rendering engine that includes deferred shading, as well as ray tracing. I use it a lot for OBJ file display.<\/li>\n<li><a href=\"http:\/\/cairographics.org\/\">OpenGL works with cairo<\/a>, a 2D vector-based drawing engine. Funky.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>In my previous blog post I mentioned the newly-released book OpenGL Insights. It&#8217;s worth a second mention, for a few reasons: The editors and some contributors will be signing their book at SIGGRAPH at the CRC booth (#929) at Tuesday, 2 pm. This is a great chance to meet a bunch of OpenGL experts and [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[16,426,533,485,67],"class_list":["post-3166","post","type-post","status-publish","format-standard","hentry","category-resources","tag-books","tag-debugging","tag-matrix-library","tag-mobile","tag-opengl"],"_links":{"self":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/3166","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/comments?post=3166"}],"version-history":[{"count":15,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/3166\/revisions"}],"predecessor-version":[{"id":3682,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/3166\/revisions\/3682"}],"wp:attachment":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/media?parent=3166"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/categories?post=3166"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/tags?post=3166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}