<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AncaA&#039;s tech journal &#187; OpenGL</title>
	<atom:link href="http://ancaa.eu/category/opengl/feed/" rel="self" type="application/rss+xml" />
	<link>http://ancaa.eu</link>
	<description></description>
	<lastBuildDate>Tue, 13 Jul 2010 10:01:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Useful tutorials for starting OpenGL development</title>
		<link>http://ancaa.eu/opengl/useful-tutorials-for-starting-opengl-development/</link>
		<comments>http://ancaa.eu/opengl/useful-tutorials-for-starting-opengl-development/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 09:10:00 +0000</pubDate>
		<dc:creator>Anca Alimanescu</dc:creator>
				<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[OpenGL ES]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[mobile development]]></category>
		<category><![CDATA[openGLES]]></category>

		<guid isPermaLink="false">http://aanca.com/?p=49</guid>
		<description><![CDATA[Some very useful tutorials and demos that I&#8217;ve found about implementing OpenGL:

Nehe Tutorials
Zeus Tutorials
Public API Implementations
OpenGL  ES Implementations
Glut
Glut ES
GlUT Windows Libraries
GLUT on Windows

]]></description>
			<content:encoded><![CDATA[<p>Some very useful tutorials and demos that I&#8217;ve found about implementing OpenGL:
<ul>
<li><a href="http://nehe.gamedev.net/">Nehe Tutorials</a></li>
<li><a href="http://www.zeuscmd.com/tutorials/opengl/index.php">Zeus Tutorials</a></li>
<li><a href="http://www.khronos.org/developers/resources/">Public API Implementations</a></li>
<li><a href="http://www.khronos.org/developers/resources/opengles/">OpenGL  ES Implementations</a></li>
<li><a href="http://www.opengl.org/resources/libraries/glut/">Glut</a></li>
<li><a href="http://glutes.sourceforge.net/">Glut ES</a></li>
<li><a href="http://www.xmission.com/%7Enate/glut.html">GlUT Windows Libraries</a></li>
<li><a href="http://www.cs.csustan.edu/%7ersc/SDSU/GLUTinstall.html">GLUT on Windows</a></li>
<p></ul>
]]></content:encoded>
			<wfw:commentRss>http://ancaa.eu/opengl/useful-tutorials-for-starting-opengl-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OBJ File Loader for OpenGL</title>
		<link>http://ancaa.eu/opengl/obj-file-loader-for-opengl/</link>
		<comments>http://ancaa.eu/opengl/obj-file-loader-for-opengl/#comments</comments>
		<pubDate>Thu, 17 Jan 2008 15:03:00 +0000</pubDate>
		<dc:creator>Anca Alimanescu</dc:creator>
				<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[OpenGL ES]]></category>

		<guid isPermaLink="false">http://aanca.com/?p=26</guid>
		<description><![CDATA[In the followings a simple Obj File Loader using OpenGL ES will be described. For that, I used a structure to describe the mesh object:typedef struct _ObjMesh { ObjVertex *m_aVertexArray; ObjNormal *m_aNormalArray; ObjTexCoord *m_aTexCoordArray; ObjFace *m_aFaces;
unsigned long int *m_aIndices; unsigned long int m_iNumberOfVertices,
             [...]]]></description>
			<content:encoded><![CDATA[<p>In the followings a simple Obj File Loader using OpenGL ES will be described. For that, I used a structure to describe the mesh object:<br /><code><br />typedef struct _ObjMesh { ObjVertex *m_aVertexArray; ObjNormal *m_aNormalArray; ObjTexCoord *m_aTexCoordArray; ObjFace *m_aFaces;</p>
<p>unsigned long int *m_aIndices; unsigned long int m_iNumberOfVertices,</p>
<p>                      m_iNumberOfNormals,<br />                      m_iNumberOfTexCoords,<br />                      m_iNumberOfFaces;</p>
<p>struct _ObjMesh *m_pNext; ObjFile m_iMeshID; unsigned char m_iMode; unsigned long int m_iDisplayListNum; } ObjMesh;<br /></code><br />Each of the Vertices,Normals and Texture coordinates are also described in a structure:<br /><code><br />typedef struct {</p>
<p>float x,   /* The x component of the vertex position */<br />         y,   /* The y component of the vertex position */<br />  z;   /* The z component of the vertex position */</p>
<p>} ObjVertex;</p>
<p>typedef struct {</p>
<p>float x,   /* The x component of the normal vector */<br />  y,   /* The y component of the normal vector */<br />  z;   /* The z component of the normal vector */</p>
<p>} ObjNormal;</p>
<p>typedef struct {</p>
<p>float u,   /* The u parametric texturing co-ordinate */<br />               v;   /* The v parametric texturing co-ordinate */</p>
<p>} ObjTexCoord;<br /></code></p>
<p>In the source file, each row of the file will be read in the loadFile(”file.obj”) method and the values will be recorderd in the structure. In order to draw the shape the DrawObj() method will be used.</p>
]]></content:encoded>
			<wfw:commentRss>http://ancaa.eu/opengl/obj-file-loader-for-opengl/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>OBJ File Format &amp; OBJ File Loader</title>
		<link>http://ancaa.eu/opengl/obj-file-format-obj-file-loader/</link>
		<comments>http://ancaa.eu/opengl/obj-file-format-obj-file-loader/#comments</comments>
		<pubDate>Thu, 17 Jan 2008 15:02:00 +0000</pubDate>
		<dc:creator>Anca Alimanescu</dc:creator>
				<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[OpenGL ES]]></category>

		<guid isPermaLink="false">http://aanca.com/?p=25</guid>
		<description><![CDATA[The OBJ file format is a text file format, which means you can edit OBJ files in a text editor if you are hard-core. Unfortunately, the original specification didn’t seem to state what the end of line character should be, so some tools use carriage-returns and some use linefeeds. You may have to convert the [...]]]></description>
			<content:encoded><![CDATA[<p>The OBJ file format is a text file format, which means you can edit OBJ files in a text editor if you are hard-core. Unfortunately, the original specification didn’t seem to state what the end of line character should be, so some tools use carriage-returns and some use linefeeds. You may have to convert the end of line characters depending on which tools you are reading the OBJ file in from. (Most notably the OBJIMP plugin for 3DS MAX will crash when reading in any of the OBJ files that shipped with Poser.) Also your Windows text editors may think the files are binary because of this.</p>
<p>The first character of each line specifies the type of command. If the first character is a pound sign, #, the line is a comment and the rest of the line is ignored. Any blank lines are also ignored. The file is read in by a tool and parsed from top to bottom just like you would read it. In the descriptions that follow, the first character is a command, followed by any arguments. Anything shown in square brackets is optional.</p>
<blockquote><p># a comment line</p></blockquote>
<p>These are always ignored. Usually the first line of every OBJ file will be a comment that says what program wrote the file out. Also, its quite common for comments to contain the number of verticies and/or faces an object used.</p>
<blockquote><p>v x y z</p></blockquote>
<p>The vertex command, this specifies a vertex by its three coordinates. The vertex is implicitly named by the order it is found in the file. For example, the first vertex in the file is referenced as ‘1’, the second as ‘2’ and so on. None of the vertex commands actually specify any geometry, they are just points in space.</p>
<blockquote><p>vt u v [w]</p></blockquote>
<p>The vertex texture command specifies the UV (and optionally W) mapping. These will be floating point values between 0 and 1 which say how to map the texture. They really don’t tell you anything by themselves, they must be grouped with a vertex in a ‘f’ face command.</p>
<blockquote><p>vn x y z
</p></blockquote>
<p>The vertex normal command specifies a normal vector. A lot of times these aren’t used, because the ‘f’ face command will use the order the ‘v’ commands are given to determine the normal instead. Like the ‘vt’ commands, they don’t mean anything until grouped with a vertex in the ‘f’ face command.</p>
<blockquote><p>f v1[/vt1][/vn1] v2[/vt2][/vn2] v3[/vt3][/vn3] &#8230;</p></blockquote>
<p>The face command specifies a polygon made from the verticies listed. You may have as many verticies as you like. To reference a vertex you just give its index in the file, for example ‘f 54 55 56 57’ means a face built from vertecies 54 &#8211; 57. For each vertex, there may also be an associated vt, which says how to map the texture at this point, and/or a vn, which specifies a normal at this point. If you specify a vt or vn for one vertex, you must specify one for all. If you want to have a vertex and a vertex normal, but no vertex texture, it will look like: ‘f v1//vt1’. The normal is what tells it which way the polygon faces. If you don’t give one, it is determined by the order the verticies are given. They are assumed to be in counter-clockwise direction. If you aren’t using vn’s to specify the normal and you wanted to ‘flip the normal’ you would reverse the order of the verticies. In most 3D programs, if the normal points the wrong way, there will appear to be a hole in the object. g name</p>
<p>The group name command specifies a sub-object grouping. All ‘f’ face commands that follow are considered to be in the same group.</p>
<p>usemtl name</p>
<p>The use material command lets you name a material to use. All ‘f’ face commands that follow will use the same material, until another usemtl command is encountered. For all of the Poser OBJ files I’ve seen, all ‘g’ commands should be followed by a ‘usemtl’ command.</p>
<p>Remember that for verticies, they can be interspersed throughout the file, only the order they appear makes a difference. The faces can also be spread throughout the file, except they must follow the verticies they use (I think), and they will be part of whichever group and/or material they follow. That said, most OBJ files follow a consistant layout. Now the ‘normal’ layout of the file will be:</p>
<p># comment about what application generated this file. # all of the ‘v’ commands will be listed v x y z v &#8230; # all of the ‘vn’ commands will be listed, although most Poser OBJ files # do not use the ‘vn’ commands vn x y z vn &#8230; # all of the ‘vt’ commands will be listed vt x y z vt &#8230; # the object and its material will be set g object usemtl material # all of the ‘f’ commands are listed f 1/1 2/2 3/3 4/4 f &#8230;.</p>
<p>Additional Items:</p>
<p>If you had two OBJ files and wanted to merge them, you can cut all the ‘v’, ‘vt’, and ‘vn’ commands from the second file and paste them at the end of the first. However, you cannot just copy over the ‘f’ commands, because they will have to have all their verticies offset. I’m thinking there has to be a tool out there somewhere that will do this for you, but I don’t know of any.</p>
<p>Hair objects with separate pieces like the ponytails that have a hairtie that can be colored separately, are actually a single group. They use additional usemtl commands to perform their magic. You can setup the additional material parameters in the .hr2 file (MAC). Example OBJ:</p>
<blockquote><p>v x y z v &#8230; g hair usemtl hair f 1 2 3 4 f &#8230; # there is NOT another g command here usemtl hairTie f 10 11 12 13 f &#8230;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ancaa.eu/opengl/obj-file-format-obj-file-loader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenGL ES Implementations</title>
		<link>http://ancaa.eu/opengl/opengl-es-implementations/</link>
		<comments>http://ancaa.eu/opengl/opengl-es-implementations/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 10:19:00 +0000</pubDate>
		<dc:creator>Anca Alimanescu</dc:creator>
				<category><![CDATA[OpenGL]]></category>

		<guid isPermaLink="false">http://aanca.com/?p=19</guid>
		<description><![CDATA[Vincent Mobile 3D Rendering Library
The Vincent Mobile 3D Rendering Library an OpenGL ES implementation that can be used for both commercial and non-commercial projects without having to pay license fees. Another great feature is that the library arrives standard with window management functions, allowing applications to be setup quickly and easily.  
Hybrid&#8217;s &#8220;Rasteroid&#8221; Implementation
The [...]]]></description>
			<content:encoded><![CDATA[<h4>Vincent Mobile 3D Rendering Library</h4>
<p>The <a href="http://sourceforge.net/project/showfiles.php?group_id=87506" target="_blank">Vincent Mobile 3D Rendering Library</a> an OpenGL ES implementation that can be used for both commercial and non-commercial projects without having to pay license fees. Another great feature is that the library arrives standard with window management functions, allowing applications to be setup quickly and easily.  </p>
<h4>Hybrid&#8217;s &#8220;Rasteroid&#8221; Implementation</h4>
<p>The <a href="http://hybrid.fi/main/download/tools.php" target="_blank">Hybrid</a> implementation is a commercial library which can be used freely for non-commercial use. License fees need to be payed if you wish to develop a commercial application using this library. The Hybrid implementation does offer advantages over the Vincent library. Some advantages I have come across include a higher frame rate for tested devices as well as the ability to use a depth buffer with greater precision.  </p>
<h4>GLUT|ES</h4>
<p>The <a href="http://iparla.labri.fr/softwares/glutes/" target="_blank">GLUT|ES</a> library will be used in conjunction with these implementations as it greatly simplifies the creation and usage of an OpenGL ES window.  </p></p>
]]></content:encoded>
			<wfw:commentRss>http://ancaa.eu/opengl/opengl-es-implementations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is OpenGL ES ?</title>
		<link>http://ancaa.eu/opengl/what-is-opengl-es/</link>
		<comments>http://ancaa.eu/opengl/what-is-opengl-es/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 10:18:00 +0000</pubDate>
		<dc:creator>Anca Alimanescu</dc:creator>
				<category><![CDATA[OpenGL]]></category>

		<guid isPermaLink="false">http://aanca.com/?p=18</guid>
		<description><![CDATA[OpenGL ES (OpenGL for Embedded Systems) is a subset of the OpenGL 3D graphics API designed for embedded devices such as mobile phones, PDAs, and video game consoles. It is defined and promoted by the Khronos Group, a graphics hardware and software industry consortium interested in open APIs for graphics and multimedia.
In creating OpenGL ES [...]]]></description>
			<content:encoded><![CDATA[<p><b>OpenGL ES</b> (<b>OpenGL</b> for <b>E</b>mbedded <b>S</b>ystems) is a subset of the <a href="http://en.wikipedia.org/wiki/OpenGL">OpenGL</a> <a href="http://en.wikipedia.org/wiki/3D_computer_graphics">3D graphics</a> <a href="http://en.wikipedia.org/wiki/Application_programming_interface">API</a> designed for <a href="http://en.wikipedia.org/wiki/Embedded_device">embedded devices</a> such as <a href="http://en.wikipedia.org/wiki/Mobile_phone">mobile phones</a>, <a href="http://en.wikipedia.org/wiki/Personal_digital_assistant">PDAs</a>, and <a href="http://en.wikipedia.org/wiki/Video_game_console">video game consoles</a>. It is defined and promoted by the <a href="http://en.wikipedia.org/wiki/Khronos_Group">Khronos Group</a>, a graphics hardware and software industry <a href="http://en.wikipedia.org/wiki/Consortium">consortium</a> interested in open APIs for graphics and multimedia.</p>
<p>In creating OpenGL ES 1.0, much functionality has been stripped from the original OpenGL API and a little bit added.</p>
<p>The definition given by the Khronos group:</p>
<p>« OpenGL® ES is a royalty-free, cross-platform API for full-function 2D and 3D graphics on embedded systems &#8211; including consoles, phones, appliances and vehicles. It consists of well-defined subsets of desktop OpenGL, creating a flexible and powerful low-level interface between software and graphics acceleration. OpenGL ES includes profiles for floating-point and fixed-point systems and the EGL™ specification for portably binding to native windowing systems. OpenGL ES 1.X is for fixed function hardware and offers acceleration, image quality and performance. OpenGL ES 2.X enables full programmable 3D graphics. OpenGL SC is tuned for the safety critical market. » (<a href="http://www.khronos.org/opengles/">http://www.khronos.org/opengles/</a>)</p>
<p>Several versions of the OpenGL ES specification now exist. OpenGL ES 1.0 is drawn up against the OpenGL 1.3 specification, OpenGL ES 1.1 is defined relative to the OpenGL 1.5 specification and OpenGL ES 2.0 is defined relative to the OpenGL 2.0 specification. Version 1.0 and 1.1 both have <i>common</i> and <i>common lite</i> <a href="http://en.wikipedia.org/wiki/Profile">profiles</a>, the difference being that the common lite profile only supports <a href="http://en.wikipedia.org/wiki/Fixed-point_arithmetic">fixed-point</a> in lieu of <a href="http://en.wikipedia.org/wiki/Floating_point">floating point</a> data type support, whereas common supports both.</p>
<p>OpenGL ES 1.1 adds to the OpenGL ES 1.0 functionality by introducing additional features such as mandatory support for multitexture, better multitexture support (with combiners and dot product texture operations), automatic <a href="http://en.wikipedia.org/wiki/Mipmap">mipmap</a> generation, vertex buffer objects, state queries, user clip planes, and greater control over point rendering.</p>
<p>The common profile for OpenGL ES 2.0, publicly released in August 2005, completely eliminates all fixed-function API support in favor of an entirely programmable model, so features like the specification of surface normals in the API for use in a lighting calculation are eliminated in favor of abstract variables, the use of which is defined in a <a href="http://en.wikipedia.org/wiki/Vertex_and_pixel_shaders">shader</a> written by the graphics programmer.</p>
<p>OpenGL ES also defines an additional safety-critical profile that is intended to be a testable and demonstrably robust subset for safety-critical embedded applications such as <a href="http://en.wikipedia.org/wiki/Glass_cockpit">glass cockpit</a> <a href="http://en.wikipedia.org/wiki/Avionics">avionics</a> displays.</p>
<p>OpenGL ES has been chosen as the official graphics <a href="http://en.wikipedia.org/wiki/Application_programming_interface">API</a> in <a href="http://en.wikipedia.org/wiki/Symbian_OS">Symbian OS</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ancaa.eu/opengl/what-is-opengl-es/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is GLUT ?</title>
		<link>http://ancaa.eu/opengl/what-is-glut/</link>
		<comments>http://ancaa.eu/opengl/what-is-glut/#comments</comments>
		<pubDate>Wed, 07 Nov 2007 15:57:00 +0000</pubDate>
		<dc:creator>Anca Alimanescu</dc:creator>
				<category><![CDATA[OpenGL]]></category>

		<guid isPermaLink="false">http://aanca.com/?p=16</guid>
		<description><![CDATA[GLUT is a library written by Mark Kilgard that addresses these issues by providing a platform-independent interface to window management, menus, and input devices in a simple and elegant manner. 
Using GLUT comes at the price of some flexibility.Because OpenGL doesn&#8217;t provide routines for interfacing with a windowing system or input devices, an application must [...]]]></description>
			<content:encoded><![CDATA[<p>GLUT is a library written by Mark Kilgard that addresses these issues by providing a platform-independent interface to window management, menus, and input devices in a simple and elegant manner. </p>
<p>Using GLUT comes at the price of some flexibility.Because OpenGL doesn&#8217;t provide routines for interfacing with a windowing system or input devices, an application must use a variety of other platform-specific routines for this purpose. </p>
<p>The result is nonportable code.Furthermore, these platform-specific routines tend to be full-featured, which complicates construction of small programs and simple demos.</p>
]]></content:encoded>
			<wfw:commentRss>http://ancaa.eu/opengl/what-is-glut/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is OpenGL?</title>
		<link>http://ancaa.eu/opengl/what-is-opengl/</link>
		<comments>http://ancaa.eu/opengl/what-is-opengl/#comments</comments>
		<pubDate>Wed, 07 Nov 2007 15:02:00 +0000</pubDate>
		<dc:creator>Anca Alimanescu</dc:creator>
				<category><![CDATA[OpenGL]]></category>

		<guid isPermaLink="false">http://aanca.com/?p=15</guid>
		<description><![CDATA[&#8220;OpenGL is the premier environment for developing portable, interactive 2D and 3D graphics applications. Since its introduction in 1992, OpenGL has become the industry&#8217;s most widely used and supported 2D and 3D graphics application programming interface (API), bringing thousands of applications to a wide variety of computer platforms. OpenGL fosters innovation and speeds application development [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;OpenGL is the premier environment for developing portable, interactive 2D and 3D graphics applications. Since its introduction in 1992, OpenGL has become the industry&#8217;s most widely used and supported 2D and 3D graphics application programming interface (API), bringing thousands of applications to a wide variety of computer platforms. OpenGL fosters innovation and speeds application development by incorporating a broad set of rendering, texture mapping, special effects, and other powerful visualization functions. Developers can leverage the power of OpenGL across all popular desktop and workstation platforms, ensuring wide application deployment.&#8221; &#8211; <a href="http://www.opengl.org/" target="_blank">OpenGL.org</a>
</p>
<p>The 2 most commonly used graphics APIs are OpenGL and Microsoft&#8217;s DirectX.  </p>
<p>A great advantage of OpenGL is that it is <span style="font-style: italic;">platform independent</span>, allowing your applications to be developed for Windows, Linux, Mac OS and other operating systems.  </p>
<p>Porting a graphics program requires only that you install the appropriate OpenGL libraries on the new machine. The application itself requires no change: it calls the same functions in this library with the same parameters, and the same graphical results are produced.  </p>
<p>OpenGL is often called an « application programming interface »(API). The interface is a collection of routines that the programmer can call, along with a model of how the routines work together to produce graphics. The programmer sees only the interface, and is therefore shielded from having to cope with the specific hardware work in a somewhat restricted fashion.</p>
<p>Many modern graphics systems are <i>windows-based </i><span style="font-style: normal;">and manage the display of multiple overlapping windows. Using OpenGL the user can move the windows around the screen using the mouse and can resize them.</span></p>
<p><span style="font-style: normal;">Another property of most windows-based  programs is that they are </span><i>event driven. </i><span style="font-style: normal;">This means that the program responds to various events, such as mouse click, the press of a keyboard key, or the resizing of the screen window.</span></p>
<p><span style="font-style: normal;">The three main OpenGL libraries of interst are:</span></p>
<ol>
<li>
<p><span style="font-style: normal;">Basic GL : The fundamental  OpenGL library. It provides functions that are a permanent part of  OpenGL. Each OpenGL function starts with the characters «GL ».</span></p>
</li>
<li>
<p><span style="font-style: normal;">GLUT: the GL Utility  Toolkit, is in connection with opening windows, developing and  managing menus, and managing events.</span></p>
</li>
<li>
<p><span style="font-style: normal;">GLU: the GL Utility Library,  which provides high-level routines to handle certain matrix  operations, the drawing of quadratic surfaces such as spheres and  cylinders. GLU also assists in the decomposition of nonconvex and  nonsimple polygons into simple shapes such as triangles.</span></p>
</li>
<li>
<p><span style="font-style: normal;">GLUI: the User Interface  Library, as long as GLUT is available, GLUI will operate  properly.The GLUI provides programmers with the ability to add  sophisticated controls and menus to their OpenGL applications. </span></p>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://ancaa.eu/opengl/what-is-opengl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
