Graphics Reference
In-Depth Information
Each application that uses our code framework declares a main entry
point named
esMain
. In the main function in Hello Triangle, you will
see calls to several ES utility functions. The
esMain
function takes an
ESContext
as an argument.
int esMain( ESContext *esContext )
The
ESContext
has a member variable named
userData
that is a
void*
.
Each of the sample programs will store any of the data that are needed
for the application in
userData
. The other elements in the
ESContext
structure are described in the header file and are intended only to be read
by the user application. Other data in the
ESContext
structure include
information such as the window width and height, EGL context, and
callback function pointers.
The
esMain
function is responsible for allocating the
userData
, creating
the window, and initializing the draw callback function:
esContext->userData = malloc ( sizeof( UserData ) );
esCreateWindow( esContext, "Hello Triangle", 320, 240,
ES_WINDOW_RGB );
if ( !Init( esContext ) )
return GL_FALSE;
esRegisterDrawFunc(esContext, Draw);
The call to
esCreateWindow
creates a window of the specified width and
height (in this case, 320 × 240). The “Hello Triangle” parameter is used to
name the window; on platforms supporting it (Windows and Linux), this
name will be displayed in the top band of the window. The last parameter
is a bit field that specifies options for the window creation. In this case,
we request an RGB framebuffer. Chapter 3, “An Introduction to EGL,”
discusses what
esCreateWindow
does in more detail. This function uses
EGL to create an on-screen render surface that is attached to a window.
EGL is a platform-independent API for creating rendering surfaces and
contexts. For now, we will simply say that this function creates a rendering
surface and leave the details on how it works for the next chapter.
After calling
esCreateWindow
, the main function next calls
Init
to
initialize everything needed to run the program. Finally, it registers a