Fix OSX Core Profile build

- remove obsolete glPushClient functions

note: this code is still duplicated in the ptexViewer (which still needs to be upgraded to the new framebuffer)

fixes #307
This commit is contained in:
manuelk 2014-05-28 12:39:43 -07:00
parent 84fcf01a40
commit 50874a5d00

View File

@ -271,6 +271,34 @@ void
GLFrameBuffer::BuildUI(GLhud * /* hud */, int /* x */, int /* y */) { GLFrameBuffer::BuildUI(GLhud * /* hud */, int /* x */, int /* y */) {
} }
struct PixelStoreState {
void Push() {
glGetIntegerv(GL_PACK_ROW_LENGTH, &_packRowLength);
glGetIntegerv(GL_PACK_ALIGNMENT, &_packAlignment);
glGetIntegerv(GL_PACK_SKIP_PIXELS, &_packSkipPixels);
glGetIntegerv(GL_PACK_SKIP_ROWS, &_packSkipRows);
}
void Pop() {
Set(_packRowLength, _packAlignment, _packSkipPixels, _packSkipRows);
}
void Set(GLint packRowLength,
GLint packAlignment,
GLint packSkipPixels,
GLint packSkipRows) {
glPixelStorei(GL_PACK_ROW_LENGTH, packRowLength);
glPixelStorei(GL_PACK_ALIGNMENT, packAlignment);
glPixelStorei(GL_PACK_SKIP_PIXELS, packSkipPixels);
glPixelStorei(GL_PACK_SKIP_ROWS, packSkipRows);
}
private:
GLint _packRowLength,
_packAlignment,
_packSkipPixels,
_packSkipRows;
};
void void
GLFrameBuffer::Screenshot() const { GLFrameBuffer::Screenshot() const {
@ -282,12 +310,14 @@ GLFrameBuffer::Screenshot() const {
void * buf = malloc(GetWidth() * GetHeight() * 4 /*RGBA*/); void * buf = malloc(GetWidth() * GetHeight() * 4 /*RGBA*/);
glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT); PixelStoreState pixelStore;
glPixelStorei(GL_PACK_ROW_LENGTH, 0); pixelStore.Push();
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glPixelStorei(GL_PACK_SKIP_PIXELS, 0); pixelStore.Set( /* GL_PACK_ROW_LENGTH */ 0,
glPixelStorei(GL_PACK_SKIP_ROWS, 0); /* GL_PACK_ALIGNMENT */ 1,
/* GL_PACK_SKIP_PIXELS */ 0,
/* GL_PACK_SKIP_ROWS */ 0);
GLint restoreBinding, restoreActiveTexture; GLint restoreBinding, restoreActiveTexture;
glGetIntegerv( GL_TEXTURE_BINDING_2D, &restoreBinding ); glGetIntegerv( GL_TEXTURE_BINDING_2D, &restoreBinding );
@ -300,7 +330,8 @@ GLFrameBuffer::Screenshot() const {
glActiveTexture( restoreActiveTexture ); glActiveTexture( restoreActiveTexture );
glBindTexture( GL_TEXTURE_2D, restoreBinding ); glBindTexture( GL_TEXTURE_2D, restoreBinding );
glPopClientAttrib();
pixelStore.Pop();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);