diff options
Diffstat (limited to 'tests/glean/gl.cpp')
-rw-r--r-- | tests/glean/gl.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/tests/glean/gl.cpp b/tests/glean/gl.cpp new file mode 100644 index 00000000..89ca4ae9 --- /dev/null +++ b/tests/glean/gl.cpp @@ -0,0 +1,82 @@ +// BEGIN_COPYRIGHT +// +// Copyright (C) 1999 Allen Akin All Rights Reserved. +// +// 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 ALLEN AKIN 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. +// +// END_COPYRIGHT + + + + +// OpenGL utility routines for images + +#include "image.h" + +namespace GLEAN { + + +/////////////////////////////////////////////////////////////////////////////// +// draw - draw image using glDrawPixels +/////////////////////////////////////////////////////////////////////////////// +void +Image::draw() { + glPixelStorei(GL_UNPACK_SWAP_BYTES, GL_FALSE); + glPixelStorei(GL_UNPACK_LSB_FIRST, GL_FALSE); + glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); + glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); + glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); + glPixelStorei(GL_UNPACK_ALIGNMENT, alignment()); + glDrawPixels(width(), height(), format(), type(), pixels()); +} // Image::draw + +/////////////////////////////////////////////////////////////////////////////// +// read - read image using glReadPixels +/////////////////////////////////////////////////////////////////////////////// +void +Image::read(GLint x, GLint y) { + glPixelStorei(GL_PACK_SWAP_BYTES, GL_FALSE); + glPixelStorei(GL_PACK_LSB_FIRST, GL_FALSE); + glPixelStorei(GL_PACK_ROW_LENGTH, 0); + glPixelStorei(GL_PACK_SKIP_ROWS, 0); + glPixelStorei(GL_PACK_SKIP_PIXELS, 0); + glPixelStorei(GL_PACK_ALIGNMENT, alignment()); + glReadPixels(x, y, width(), height(), format(), type(), pixels()); +} // Image::read + +/////////////////////////////////////////////////////////////////////////////// +// makeMipmaps - generate and load mipmaps for texturing +/////////////////////////////////////////////////////////////////////////////// +void +Image::makeMipmaps(GLenum internalFormat) { + glPixelStorei(GL_UNPACK_SWAP_BYTES, GL_FALSE); + glPixelStorei(GL_UNPACK_LSB_FIRST, GL_FALSE); + glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); + glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); + glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); + glPixelStorei(GL_UNPACK_ALIGNMENT, alignment()); + gluBuild2DMipmaps(GL_TEXTURE_2D, internalFormat, width(), height(), + format(), type(), pixels()); +} // Image::makeMipmaps + +}; // namespace GLEAN |