38 struct viewport_params
46 glGetIntegerv( GL_VIEWPORT, (GLint*) &viewport );
48 unsigned char* pixelbuffer = (
unsigned char*) malloc( viewport.x * viewport.y * 4 );
53 glPixelStorei( GL_PACK_ALIGNMENT, 1 );
54 glReadBuffer( GL_BACK_LEFT );
56 glReadPixels( viewport.originX, viewport.originY, viewport.x, viewport.y, GL_RGBA,
57 GL_UNSIGNED_BYTE, pixelbuffer );
59 unsigned char* rgbBuffer = (
unsigned char*) malloc( viewport.x * viewport.y * 3 );
60 unsigned char* alphaBuffer = (
unsigned char*) malloc( viewport.x * viewport.y );
62 unsigned char* rgbaPtr = pixelbuffer;
63 unsigned char* rgbPtr = rgbBuffer;
64 unsigned char* alphaPtr = alphaBuffer;
66 for(
int y = 0; y < viewport.y; y++ )
68 for(
int x = 0; x < viewport.x; x++ )
70 rgbPtr[0] = rgbaPtr[0];
71 rgbPtr[1] = rgbaPtr[1];
72 rgbPtr[2] = rgbaPtr[2];
73 alphaPtr[0] = rgbaPtr[3];
86 aDstImage.SetData( rgbBuffer, viewport.x, viewport.y,
false );
87 aDstImage.SetAlpha( alphaBuffer,
false );
91 aDstImage = aDstImage.Mirror(
false );
97 unsigned char* rgbaBuffer = (
unsigned char*) malloc( aImage.
GetWidth() *
100 unsigned char* dst = rgbaBuffer;
101 const unsigned char* ori = aImage.
GetBuffer();
105 unsigned char v = *ori;
117 glPixelStorei( GL_UNPACK_ALIGNMENT, 4 );
118 glPixelStorei( GL_PACK_ALIGNMENT, 4 );
120 glGenTextures( 1, &texture );
121 glBindTexture( GL_TEXTURE_2D, texture );
123 glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, aImage.
GetWidth(), aImage.
GetHeight(), 0, GL_RGBA,
124 GL_UNSIGNED_BYTE, rgbaBuffer );
126 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
127 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
128 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
129 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
131 glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
133 glBindTexture( GL_TEXTURE_2D, 0 );
156 const float shininess =
159 glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT, &ambient.r );
160 glMaterialfv( GL_FRONT_AND_BACK, GL_DIFFUSE, &diffuse.r );
161 glMaterialfv( GL_FRONT_AND_BACK, GL_SPECULAR, &specular.r );
162 glMaterialfv( GL_FRONT_AND_BACK, GL_EMISSION, &emissive.r );
163 glMaterialf( GL_FRONT_AND_BACK, GL_SHININESS, shininess );
168 bool aUseSelectedMaterial,
SFVEC3F aSelectionColor )
171 const SFVEC4F diffuse =
SFVEC4F( aUseSelectedMaterial ? aSelectionColor : aMaterialDiffuse,
176 glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT, &ambient.r );
177 glMaterialfv( GL_FRONT_AND_BACK, GL_DIFFUSE, &diffuse.r );
178 glMaterialfv( GL_FRONT_AND_BACK, GL_SPECULAR, &specular.r );
179 glMaterialfv( GL_FRONT_AND_BACK, GL_EMISSION, &emissive.r );
180 glMaterialf( GL_FRONT_AND_BACK, GL_SHININESS, 0.0f );
186 glMatrixMode( GL_PROJECTION );
189 glMatrixMode( GL_MODELVIEW );
192 glDisable( GL_LIGHTING );
193 glDisable( GL_COLOR_MATERIAL );
194 glDisable( GL_DEPTH_TEST );
195 glDisable( GL_TEXTURE_2D );
196 glDisable( GL_BLEND );
197 glDisable( GL_ALPHA_TEST );
200 glColor4f( aTopColor.r, aTopColor.g, aTopColor.b, aTopColor.a );
201 glVertex2f( -1.0, 1.0 );
203 glColor4f( aBotColor.r, aBotColor.g, aBotColor.b, aBotColor.a );
204 glVertex2f( -1.0,-1.0 );
205 glVertex2f( 1.0,-1.0 );
207 glColor4f( aTopColor.r, aTopColor.g, aTopColor.b, aTopColor.a);
208 glVertex2f( 1.0, 1.0 );
215 if( !glActiveTexture || !glClientActiveTexture )
216 throw std::runtime_error(
"The OpenGL context no longer exists: unable to Reset Textures" );
218 glActiveTexture( GL_TEXTURE0 );
219 glBindTexture( GL_TEXTURE_2D, 0 );
220 glClientActiveTexture( GL_TEXTURE0 );
221 glDisable( GL_TEXTURE_2D );
222 glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
226 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.