Thanks for answering Mazy but no … Here is what I do ; this is the only OpenGL part of the program (I have try to present it the sexiest way possible … I think I failed ):
bool bTest=false;
void InitGL(GLvoid) // All Setup For OpenGL Goes Here
{
GLfloat fogColor[]={0.35f,0.45f,0.7f,1.0f};
glShadeModel(GL_SMOOTH); // Enable Smooth Shading
glClearColor(0.3f, 0.45f, 0.6f, 0.0f); // Blue Background
glClearDepth(1.0f); // Depth Buffer Setup
glFogi(GL_FOG_MODE, GL_EXP); // Fog Mode
glFogfv(GL_FOG_COLOR, fogColor); // Set Fog Color
glFogf(GL_FOG_DENSITY, 0.45f); // How Dense Will The Fog Be
/**** I SET THE MATRIX HERE AND ONLY HERE ****/
glMatrixMode(GL_MODELVIEW);
{
GLfloat f[]={-1.000000f,0.000000f,0.000000f,0.000000f,
0.000000f,0.069829f,0.997559f,0.000000f,
0.000000f,0.997559f,-0.069829f,0.000000f,
0.000000f,-0.179561f,1.015016f,1.000000f};
glLoadMatrixf(f);
}
glMatrixMode(GL_PROJECTION);
{
GLfloat f[]={2.414213f,0.000000f,0.000000f,0.000000f,
0.000000f,2.414213f,0.000000f,0.000000f,
0.000000f,0.000000f,1.010101f,1.000000f,
0.000000f,0.000000f,-1.010101f,0.000000f};
glLoadMatrixf(f);
}
/**** (1) ****/
glEnable(GL_FOG);
glEnableClientState(GL_VERTEX_ARRAY);
}
void DrawGLScene(GLvoid) // Here’s Where We Do All The Drawing
{
GLfloat height=-0.65f;
typedef struct { GLfloat x,y,z; } strVertex;
strVertex first[]={
{-5.0f, 5.0f, height+1.3f}, { 5.0f, 5.0f, height+1.3f}, {-5.0f, -5.0f, height+1.3f},
{-5.0f, -5.0f, height+1.3f}, {5.0f, 5.0f, height+1.3f}, {5.0f, -5.0f, height+1.3f}
};
strVertex second[]={
{-5.0f, 5.0f, height}, { 5.0f, 5.0f, height}, {-5.0f, -5.0f, height},
{-5.0f, -5.0f, height}, { 5.0f, 5.0f, height}, { 5.0f, -5.0f, height}
};
glClear(GL_COLOR_BUFFER_BIT ); // Clear Screen Buffer
/***** (2) ******
if (bTest) {
glDisable(GL_FOG);
glVertexPointer(3,GL_FLOAT, sizeof(strVertex), (GLfloat *)first);
glDrawArrays(GL_TRIANGLES, 0, 6);
}
glEnable(GL_FOG);
glVertexPointer(3,GL_FLOAT, sizeof(strVertex), (GLfloat *)second);
glDrawArrays(GL_TRIANGLES, 0, 6);
}
During the execution, the bTest value is swapped when I put a key, which allow me to draw FIRST a band without fog (2)…
First I have what I should have: a dark blue band in the bottom of the screen [1]. Then I push a key and that’s weird: the bottom band become very “bright”, and the top band is as totally white as I wanted [2].
And more strange: when I push again a key, there is the bottom band, but it isn’t dark blue anymore (it is still bright)… [3]. And I can’t come back to [1]!!!
I have made screen capture:
[1] http://florent.cohen.free.fr/scr_cap1.jpg
[2] http://florent.cohen.free.fr/scr_cap2.jpg
[3] http://florent.cohen.free.fr/scr_cap3.jpg
And stranger, when I comment (1), I go directly to [3]…
I thought the correct behaviour would be [1] and a mix between [2] and [1]…
Any idea? I am totally lost!!!
[This message has been edited by Evan Meakyl (edited 09-08-2003).]