This repository is a fork of the official samples repository with support for the LinuxDRM platform.
If you are looking for the OpenGL ES 3.0 Programming Guide sample code, you can find it at https://github.com/danginsburg/opengles3-book/ . This repo contains the sample code from the OpenGL ES 2.0 Programming Guide. This was originally hosted on Google Code, but was migrated to GitHub due to the shutdown. The build instructions are provided below. This information is likely to be quite out-of-date. Please see https://github.com/danginsburg/opengles3-book/ for more recent updates.
The sample code from the book is available for the following platforms:
- iPhone
- Windows (Microsoft Visual Studio) using the AMD OpenGL ES 2.0 Emulator or PowerVR Khronos OpenGL ES 2.0 SDK
- WebGL
- Android 2.2+
- Linux
- Blackberry
In order to be able to build and run the code samples, you will need:
- Mac OS X 10.6.5 or later
- iOS 4.2 SDK
Please checkout the source code from the subversion repository by doing:
svn checkout https://opengles-book-samples.googlecode.com/svn/trunk/ opengles-book-samples-read-only
The iPhone projects are located in the /iPhone
directory.
Instructions for building and using the samples are in an e-Chapter on the iPhone 3GS available for download in PDF format from this link: https://www.opengles-book.com/OpenGL_ES_20_Programming_Guide_iPhone_eChapter.pdf.
In order to be able to build and run the code samples, you will need:
- Microsoft Windows XP or Windows Vista/7
- An OpenGL 2.0-capable Graphics Card
- Microsoft Visual Studio 2005 or Microsoft Visual Studio 2008 (you can also use the free Express Edition available from Microsoft at https://www.microsoft.com/express/download/.
You will need to download and install the following:
In order to build and run the code samples, you will need
- AMD's OpenGL ES 2.0 Emulator which can be downloaded from https://www.opengles-book.com/ESEmulator.2009-04-28-v1.4.APRIL_2009_RELEASE.msi. Please note that the OpenGL ES 2.0 Emulator is no longer being actively developed or supported by AMD. The most recent version is provided here for download as is, no support, feature enhancements or bug fixes will be provided by AMD for this software.
- In order to view the
RenderMonkey
example workspaces, you will need to download and installRenderMonkey
v1.81. This tool can be downloaded from AMD Developer Central at https://developer.amd.com/gpu/rendermonkey/Pages/default.aspx. - In order to build and run the OpenKODE sample in Chapter 15, you will need Acrodea's OpenKODE 1.0 Implementation for Windows. This can be downloaded from https://www.acrodea.co.jp/en/openkode/ (NOTE: if you do not care to build/run the OpenKODE sample in Chapter 15, you can skip this step).
All of the code samples and RenderMonkey
workspaces can either be checked out from the opengles-book-samples subversion tree or downloaded from the following link: https://www.opengles-book.com/OpenGL_ES_Programming_Guide_v1.0.2.zip.
- (Updated 4/19/09 - v1.0.2) Paul Bennett reported two bugs in esGenSphere() in esShapes.c..The new update includes his fixes.
- (Updated 8/24/08 - v1.0.1) We have received reports that some users are having difficulty running the samples on Nvidia GPUs when using the AMD OpenGL ES 2.0 Emulator. To workaround this issue, we updated the sample framework to be compatible with the Imagination Technologies PowerVR SDK. For instructions on using the PowerVR SDK, please see Setup Instructions Using the PowerVR SDK Alternative: Setup Instructions Using the PowerVR SDK.
- For those users running on an Nvidia GPU and still wanting to use the
RenderMonkey
samples, Till Rathmann posted a workaround over at the AMD Developer Forums at the following link (7/26/09).
- Unzip
OpenGL_ES_Programming_Guide_v1.0.1.zip
to its own folder or checkout the opengles-book-samples project from subversion. - If you have not done so already, install AMD's OpenGL ES 2.0 Emulator.
- 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 - 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 to the
\Lib
folder: * libKD.lib
- Unzip
OpenGL_ES_Programming_Guide_v1.0.1.zip
to its own folder. - Download Imagination Technologies Khronos OpenGL ES 2.0 SDK from here.
- Copy the following files from
C:\Imagination Technologies\PowerVR SDK\OGLES2_WINDOWS_PCEMULATION_2.02.22.0756\Builds\OGLES2\WindowsPC\Lib
to the\Bin
folder: * libEGL.dll * libGLESv2.dll - Copy the following files from
C:\Imagination Technologies\PowerVR SDK\OGLES2_WINDOWS_PCEMULATION_2.02.22.0756\Builds\OGLES2\WindowsPC\Lib
to the\Lib
folder: * libEGL.lib * libGLESv2.lib - Copy all of the files from
C:\Imagination Technologies\PowerVR SDK\OGLES2_WINDOWS_PCEMULATION_2.02.22.0756\Builds\OGLES2\Include
to the\Common\Include
folder (overwriting the existing headers). - For the OpenKODE sample in Chapter 15, place the following file from Acrodea's OpenKODE Implementation to the \Lib folder: * libKD.lib
The WebGL sample code is available from the opengles-book-samples subversion repository.
svn checkout https://opengles-book-samples.googlecode.com/svn/trunk/ opengles-book-samples-read-only
You can also view the WebGL sample code in action at https://www.opengles-book.com/webgl.html.
I have ported most of the samples to Java on Android 2.2. As of this writing, the emulator does not support OpenGL ES 2.0, so you will have to run the samples on your Android 2.2 device. The code is available in the subversion repository in the /Android
directory.
To build the code using Android SDK API 8 (or greater), in Eclipse:
- Do Import... -> "Existing Projects into Workspace"
- Point to the `/Android' subdirectory
- Select all of the example projects to import
That's it. You should then be able to run on an Android 2.2-device (I have tested them only on the Motorola DroidX, let me know if there are problems on your device).
The Linux versions of the examples have been tested to run against Ubuntu Linux 11.04, 11.11 and Fedora Linux 15. Before trying to compile the source make sure the development environment is set up correctly. To do so, run these commands based on your operating system:
Ubuntu 11.04/11.11:
sudo apt-get install make gcc libgles2-mesa-dev
Fedora 15:
su -c "yum install make gcc mesa-libGLES-devel mesa-libEGL-devel"
Note that you will need superuser rights for the environment you are operating in.
Once the development environment is setup, compiling of the examples is done using the included Makefile. Type:
make
and the process should be completed automatically. Final executables for each example are stored in the subfolder tree. The compiled executables are runnable from their respective places.
The examples are compilable with any Linux/X11 based operating system, which can provide needed requirements. The exact requirements would be development headers for EGL and GLESv2. Those can be obtained from khronos.org directly. Another thing are the EGL and GLESv2 runtime libraries. Those files would be platform specific, and in that case it is suggested to contact your platform vendor for obtaining those. However, majority of the linux distributions are shipping Mesa, which includes GLESv2 and EGL implementations. For these examples the Mesa solution is sufficient, even without hardware acceleration enabled.
The examples have been test driven with following configurations:
- ATI Radeon HD 3200 graphics with Mesa 7.11-0ubuntu3, Ubuntu 11.10
- NVidia Quadro FX 2800M/PCI/SSE2 with Mesa 7.11-0ubuntu3, Ubuntu 11.10
- NVidia Tegra 2, native EGL/GLESv2 drivers, Ubuntu 11.04
This version has only been tested on the Raspberry Pi 4 but should in principle work on any GNU/Linux system not running X11 or Wayland.
Once the development environment is setup, compiling of the examples is done using the included Makefile. Type:
cd LinuxDRM
make
Please see the README.md file in the Blackberry folder of the source tree for instructions on installing and building the samples for the Blackberry Native SDK.