You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
4.9 KiB
126 lines
4.9 KiB
//
|
|
// Book: OpenGL(R) ES 2.0 Programming Guide
|
|
// Authors: Aaftab Munshi, Dan Ginsburg, Dave Shreiner
|
|
// ISBN-10: 0321502795
|
|
// ISBN-13: 9780321502797
|
|
// Publisher: Addison-Wesley Professional
|
|
// URLs: http://safari.informit.com/9780321563835
|
|
// http://www.opengles-book.com
|
|
//
|
|
|
|
/*
|
|
* (c) 2009 Aaftab Munshi, Dan Ginsburg, Dave Shreiner
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
* copy of this software and associated documentation files (the "Software"),
|
|
* to deal in the Software without restriction, including without limitation
|
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
* and/or sell copies of the Software, and to permit persons to whom the
|
|
* Software is furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included
|
|
* in all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
* DEALINGS IN THE SOFTWARE.
|
|
*/
|
|
|
|
//
|
|
/// \file ESUtil.h
|
|
/// \brief A utility library for OpenGL ES. This library provides a
|
|
/// basic common framework for the example applications in the
|
|
/// OpenGL ES 2.0 Programming Guide.
|
|
//
|
|
#ifndef ESUTIL_H
|
|
#define ESUTIL_H
|
|
|
|
///
|
|
// Includes
|
|
//
|
|
#include <GLES2/gl2.h>
|
|
#include <EGL/egl.h>
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef struct
|
|
{
|
|
GLfloat m[4][4];
|
|
} ESMatrix;
|
|
|
|
//
|
|
/// \brief multiply matrix specified by result with a scaling matrix and return new matrix in result
|
|
/// \param result Specifies the input matrix. Scaled matrix is returned in result.
|
|
/// \param sx, sy, sz Scale factors along the x, y and z axes respectively
|
|
//
|
|
void esScale(ESMatrix* result, GLfloat sx, GLfloat sy, GLfloat sz);
|
|
|
|
//
|
|
/// \brief multiply matrix specified by result with a translation matrix and return new matrix in result
|
|
/// \param result Specifies the input matrix. Translated matrix is returned in result.
|
|
/// \param tx, ty, tz Scale factors along the x, y and z axes respectively
|
|
//
|
|
void esTranslate(ESMatrix* result, GLfloat tx, GLfloat ty, GLfloat tz);
|
|
|
|
//
|
|
/// \brief multiply matrix specified by result with a rotation matrix and return new matrix in result
|
|
/// \param result Specifies the input matrix. Rotated matrix is returned in result.
|
|
/// \param angle Specifies the angle of rotation, in degrees.
|
|
/// \param x, y, z Specify the x, y and z coordinates of a vector, respectively
|
|
//
|
|
void esRotate(ESMatrix* result, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
|
|
|
|
//
|
|
// \brief multiply matrix specified by result with a perspective matrix and return new matrix in result
|
|
/// \param result Specifies the input matrix. new matrix is returned in result.
|
|
/// \param left, right Coordinates for the left and right vertical clipping planes
|
|
/// \param bottom, top Coordinates for the bottom and top horizontal clipping planes
|
|
/// \param nearZ, farZ Distances to the near and far depth clipping planes. Both distances must be positive.
|
|
//
|
|
void esFrustum(ESMatrix* result, float left, float right, float bottom, float top, float nearZ, float farZ);
|
|
|
|
//
|
|
/// \brief multiply matrix specified by result with a perspective matrix and return new matrix in result
|
|
/// \param result Specifies the input matrix. new matrix is returned in result.
|
|
/// \param fovy Field of view y angle in degrees
|
|
/// \param aspect Aspect ratio of screen
|
|
/// \param nearZ Near plane distance
|
|
/// \param farZ Far plane distance
|
|
//
|
|
void esPerspective(ESMatrix* result, float fovy, float aspect, float nearZ, float farZ);
|
|
|
|
//
|
|
/// \brief multiply matrix specified by result with a perspective matrix and return new matrix in result
|
|
/// \param result Specifies the input matrix. new matrix is returned in result.
|
|
/// \param left, right Coordinates for the left and right vertical clipping planes
|
|
/// \param bottom, top Coordinates for the bottom and top horizontal clipping planes
|
|
/// \param nearZ, farZ Distances to the near and far depth clipping planes. These values are negative if plane is behind the viewer
|
|
//
|
|
void esOrtho(ESMatrix* result, float left, float right, float bottom, float top, float nearZ, float farZ);
|
|
|
|
//
|
|
/// \brief perform the following operation - result matrix = srcA matrix * srcB matrix
|
|
/// \param result Returns multiplied matrix
|
|
/// \param srcA, srcB Input matrices to be multiplied
|
|
//
|
|
void esMatrixMultiply(ESMatrix* result, ESMatrix* srcA, ESMatrix* srcB);
|
|
|
|
//
|
|
//// \brief return an indentity matrix
|
|
//// \param result returns identity matrix
|
|
//
|
|
void esMatrixLoadIdentity(ESMatrix* result);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // ESUTIL_H
|