Build Instructions
------------------

In order to run the code samples, you will need to download
AMD's OpenGL ES 2.0 Emulator from:

  http://developer.amd.com/gpu/opengl/Pages/default.aspx

In order to build and run the samples, please copy the following
files from C:\program files\AMD\OpenGL ES 2.0 Emulator v1.1\bin 
to the \Bin folder:

  * libEGL.dll
  * libGLESv2.dll

Also, please copy the following files from 
C:\program files\AMD\OpenGL ES 2.0 Emulator v1.1\lib to
the \Lib folder:

  * libEGL.lib
  * libGLESv2.lib

For the OpenKODE sample in Chapter 15, place the following file from 
Acrodea's OpenKODE Implementation (http://www.acrodea.co.jp/en/openkode/)
to the \Lib folder:

  * libKD.lib


RenderMonkey Workspaces
-----------------------
Finally, for the RenderMonkey workspaces (.rfx files), please download
RenderMonkey v1.81 from AMD at:

  http://developer.amd.com/gpu/rendermonkey/Pages/default.aspx


Using the Imagination Technologies OpenGL ES 2.0 SDK
----------------------------------------------------
As an alternative to using the AMD OpenGL ES 2.0 Emulator, you can 
instead use the Imagination Technologies emulator from their 
OpenGL ES 2.0 SDK (http://www.imgtec.com/powervr/insider/powervr-sdk.asp).  
In this case, get the .LIB and .DLL files from:

C:\Imagination Technologies\PowerVR SDK\OGLES2_WINDOWS_PCEMULATION_2.02.22.0756\Builds\OGLES2\WindowsPC\Lib

and copy them to /Lib and /DLL respectively.

Also,  copy the header files from:

C:\Imagination Technologies\PowerVR SDK\OGLES2_WINDOWS_PCEMULATION_2.02.22.0756\Builds\OGLES2\Include

to Common/Include (overwriting the existing files).

