34 struct viewport_params
42 glGetIntegerv( GL_VIEWPORT, (GLint*) &viewport );
44 unsigned char* pixelbuffer = (
unsigned char*) malloc( viewport.x * viewport.y * 4 );
49 glPixelStorei( GL_PACK_ALIGNMENT, 1 );
50 glReadBuffer( GL_BACK_LEFT );
52 glReadPixels( viewport.originX, viewport.originY, viewport.x, viewport.y, GL_RGBA,
53 GL_UNSIGNED_BYTE, pixelbuffer );
55 unsigned char* rgbBuffer = (
unsigned char*) malloc( viewport.x * viewport.y * 3 );
56 unsigned char* alphaBuffer = (
unsigned char*) malloc( viewport.x * viewport.y );
58 unsigned char* rgbaPtr = pixelbuffer;
59 unsigned char* rgbPtr = rgbBuffer;
60 unsigned char* alphaPtr = alphaBuffer;
62 for(
int y = 0; y < viewport.y; y++ )
64 for(
int x = 0; x < viewport.x; x++ )
66 rgbPtr[0] = rgbaPtr[0];
67 rgbPtr[1] = rgbaPtr[1];
68 rgbPtr[2] = rgbaPtr[2];
69 alphaPtr[0] = rgbaPtr[3];
82 aDstImage.SetData( rgbBuffer, viewport.x, viewport.y,
false );
83 aDstImage.SetAlpha( alphaBuffer,
false );
87 aDstImage = aDstImage.Mirror(
false );
93 unsigned char* rgbaBuffer = (
unsigned char*) malloc( aImage.
GetWidth() *
96 unsigned char* dst = rgbaBuffer;
97 const unsigned char* ori = aImage.
GetBuffer();
101 unsigned char v = *ori;
113 glPixelStorei( GL_UNPACK_ALIGNMENT, 4 );
114 glPixelStorei( GL_PACK_ALIGNMENT, 4 );
116 glGenTextures( 1, &texture );
117 glBindTexture( GL_TEXTURE_2D, texture );
119 glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, aImage.
GetWidth(), aImage.
GetHeight(), 0, GL_RGBA,
120 GL_UNSIGNED_BYTE, rgbaBuffer );
122 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
123 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
124 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
125 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
127 glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
129 glBindTexture( GL_TEXTURE_2D, 0 );
152 const float shininess =
155 glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT, &ambient.r );
156 glMaterialfv( GL_FRONT_AND_BACK, GL_DIFFUSE, &diffuse.r );
157 glMaterialfv( GL_FRONT_AND_BACK, GL_SPECULAR, &specular.r );
158 glMaterialfv( GL_FRONT_AND_BACK, GL_EMISSION, &emissive.r );
159 glMaterialf( GL_FRONT_AND_BACK, GL_SHININESS, shininess );
164 bool aUseSelectedMaterial,
SFVEC3F aSelectionColor )
167 const SFVEC4F diffuse =
SFVEC4F( aUseSelectedMaterial ? aSelectionColor : aMaterialDiffuse,
172 glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT, &ambient.r );
173 glMaterialfv( GL_FRONT_AND_BACK, GL_DIFFUSE, &diffuse.r );
174 glMaterialfv( GL_FRONT_AND_BACK, GL_SPECULAR, &specular.r );
175 glMaterialfv( GL_FRONT_AND_BACK, GL_EMISSION, &emissive.r );
176 glMaterialf( GL_FRONT_AND_BACK, GL_SHININESS, 0.0f );
182 glMatrixMode( GL_PROJECTION );
185 glMatrixMode( GL_MODELVIEW );
188 glDisable( GL_LIGHTING );
189 glDisable( GL_COLOR_MATERIAL );
190 glDisable( GL_DEPTH_TEST );
191 glDisable( GL_TEXTURE_2D );
192 glDisable( GL_BLEND );
193 glDisable( GL_ALPHA_TEST );
196 glColor4f( aTopColor.r, aTopColor.g, aTopColor.b, aTopColor.a );
197 glVertex2f( -1.0, 1.0 );
199 glColor4f( aBotColor.r, aBotColor.g, aBotColor.b, aBotColor.a );
200 glVertex2f( -1.0,-1.0 );
201 glVertex2f( 1.0,-1.0 );
203 glColor4f( aTopColor.r, aTopColor.g, aTopColor.b, aTopColor.a);
204 glVertex2f( 1.0, 1.0 );
211 if( !glActiveTexture || !glClientActiveTexture )
212 throw std::runtime_error(
"The OpenGL context no longer exists: unable to Reset Textures" );
214 glActiveTexture( GL_TEXTURE0 );
215 glBindTexture( GL_TEXTURE_2D, 0 );
216 glClientActiveTexture( GL_TEXTURE0 );
217 glDisable( GL_TEXTURE_2D );
218 glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
222 glTexEnvfv( GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR,
static_cast<const float*
>( &zero.x ) );
void OglSetDiffuseMaterial(const SFVEC3F &aMaterialDiffuse, float aOpacity, bool aUseSelectedMaterial, SFVEC3F aSelectionColor)
Sets only the diffuse color and keep other parameters with default values.