format pass

This commit is contained in:
2024-03-12 20:04:22 +11:00
parent c7b67c0bfd
commit 01a0dd932e

View File

@@ -13,12 +13,12 @@
#include <SDL3/SDL_main.h> #include <SDL3/SDL_main.h>
#include <SDL3/SDL_opengl.h> // Header File For The OpenGL32 Library #include <SDL3/SDL_opengl.h> // Header File For The OpenGL32 Library
SDL_Window* hWnd=NULL; // Holds Our Window Handle SDL_Window* hWnd = NULL; // Holds Our Window Handle
SDL_GLContext hRC=NULL; // Permanent Rendering Context SDL_GLContext hRC = NULL; // Permanent Rendering Context
bool keys[SDL_NUM_SCANCODES]; // Array Used For The Keyboard Routine bool keys[SDL_NUM_SCANCODES]; // Array Used For The Keyboard Routine
bool active=true; // Window Active Flag Set To TRUE By Default bool active = true; // Window Active Flag Set To TRUE By Default
bool fullscreen=true; // Fullscreen Flag Set To Fullscreen Mode By Default bool fullscreen = true; // Fullscreen Flag Set To Fullscreen Mode By Default
bool blend; // Blending ON/OFF bool blend; // Blending ON/OFF
bool bp; // B Pressed? bool bp; // B Pressed?
bool fp; // F Pressed? bool fp; // F Pressed?
@@ -46,7 +46,7 @@ GLfloat yrot; // Y Rotation
GLfloat walkbias = 0; GLfloat walkbias = 0;
GLfloat walkbiasangle = 0; GLfloat walkbiasangle = 0;
GLfloat lookupdown = 0.0f; GLfloat lookupdown = 0.0f;
GLfloat z=0.0f; // Depth Into The Screen GLfloat z = 0.0f; // Depth Into The Screen
GLuint filter; // Which Filter To Use GLuint filter; // Which Filter To Use
GLuint texture[3]; // Storage For 3 Textures GLuint texture[3]; // Storage For 3 Textures
@@ -70,7 +70,7 @@ typedef struct tagSECTOR
SECTOR sector1; // Our Model Goes Here: SECTOR sector1; // Our Model Goes Here:
void readstr(FILE *f,char *string) void readstr(FILE *f, char *string)
{ {
do do
{ {
@@ -87,7 +87,7 @@ void SetupWorld()
char oneline[255]; char oneline[255];
filein = fopen("data/world.txt", "rt"); // File To Load World Data From filein = fopen("data/world.txt", "rt"); // File To Load World Data From
readstr(filein,oneline); readstr(filein, oneline);
sscanf(oneline, "NUMPOLLIES %d\n", &numtriangles); sscanf(oneline, "NUMPOLLIES %d\n", &numtriangles);
sector1.triangle = new TRIANGLE[numtriangles]; sector1.triangle = new TRIANGLE[numtriangles];
@@ -96,7 +96,7 @@ void SetupWorld()
{ {
for (int vert = 0; vert < 3; vert++) for (int vert = 0; vert < 3; vert++)
{ {
readstr(filein,oneline); readstr(filein, oneline);
sscanf(oneline, "%f %f %f %f %f", &x, &y, &z, &u, &v); sscanf(oneline, "%f %f %f %f %f", &x, &y, &z, &u, &v);
sector1.triangle[loop].vertex[vert].x = x; sector1.triangle[loop].vertex[vert].x = x;
sector1.triangle[loop].vertex[vert].y = y; sector1.triangle[loop].vertex[vert].y = y;
@@ -111,8 +111,10 @@ void SetupWorld()
bool FlipSurface(SDL_Surface *surface) bool FlipSurface(SDL_Surface *surface)
{ {
if (!surface) return false; if (!surface || SDL_LockSurface(surface) < 0)
if (SDL_LockSurface(surface) < 0) return false; {
return false;
}
const int pitch = surface->pitch; const int pitch = surface->pitch;
const int numrows = surface->h; const int numrows = surface->h;
@@ -139,34 +141,34 @@ bool FlipSurface(SDL_Surface *surface)
int LoadGLTextures() // Load Bitmaps And Convert To Textures int LoadGLTextures() // Load Bitmaps And Convert To Textures
{ {
int Status=SDL_FALSE; // Status Indicator int Status = SDL_FALSE; // Status Indicator
SDL_Surface *TextureImage = NULL; // Create Storage Space For The Texture SDL_Surface *TextureImage = NULL; // Create Storage Space For The Texture
// Load The Bitmap, Check For Errors, If Bitmap's Not Found Quit // Load The Bitmap, Check For Errors, If Bitmap's Not Found Quit
if ((TextureImage=SDL_LoadBMP("Data/Mud.bmp")) && FlipSurface(TextureImage)) if ((TextureImage = SDL_LoadBMP("Data/Mud.bmp")) && FlipSurface(TextureImage))
{ {
Status=SDL_TRUE; // Set The Status To TRUE Status = SDL_TRUE; // Set The Status To TRUE
glGenTextures(3, &texture[0]); // Create Three Textures glGenTextures(3, &texture[0]); // Create Three Textures
// Create Nearest Filtered Texture // Create Nearest Filtered Texture
glBindTexture(GL_TEXTURE_2D, texture[0]); glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage->w, TextureImage->h, 0, GL_BGR, GL_UNSIGNED_BYTE, TextureImage->pixels); glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage->w, TextureImage->h, 0, GL_BGR, GL_UNSIGNED_BYTE, TextureImage->pixels);
// Create Linear Filtered Texture // Create Linear Filtered Texture
glBindTexture(GL_TEXTURE_2D, texture[1]); glBindTexture(GL_TEXTURE_2D, texture[1]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage->w, TextureImage->h, 0, GL_BGR, GL_UNSIGNED_BYTE, TextureImage->pixels); glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage->w, TextureImage->h, 0, GL_BGR, GL_UNSIGNED_BYTE, TextureImage->pixels);
// Create MipMapped Texture // Create MipMapped Texture
glBindTexture(GL_TEXTURE_2D, texture[2]); glBindTexture(GL_TEXTURE_2D, texture[2]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_GENERATE_MIPMAP,GL_TRUE); glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage->w, TextureImage->h, 0, GL_BGR, GL_UNSIGNED_BYTE, TextureImage->pixels); glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage->w, TextureImage->h, 0, GL_BGR, GL_UNSIGNED_BYTE, TextureImage->pixels);
} }
SDL_DestroySurface(TextureImage); // Free The Image Structure SDL_DestroySurface(TextureImage); // Free The Image Structure
@@ -193,24 +195,24 @@ static void gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdou
GLvoid ReSizeGLScene(GLsizei width, GLsizei height) // Resize And Initialize The GL Window GLvoid ReSizeGLScene(GLsizei width, GLsizei height) // Resize And Initialize The GL Window
{ {
if (height==0) // Prevent A Divide By Zero By if (height == 0) // Prevent A Divide By Zero By
{ {
height=1; // Making Height Equal One height = 1; // Making Height Equal One
} }
glViewport(0,0,width,height); // Reset The Current Viewport glViewport(0, 0, width, height); // Reset The Current Viewport
glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
glLoadIdentity(); // Reset The Projection Matrix glLoadIdentity(); // Reset The Projection Matrix
// Calculate The Aspect Ratio Of The Window // Calculate The Aspect Ratio Of The Window
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f); gluPerspective(45.0f, (GLfloat)width / (GLfloat)height, 0.1f, 100.0f);
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
glLoadIdentity(); // Reset The Modelview Matrix glLoadIdentity(); // Reset The Modelview Matrix
} }
int InitGL(GLvoid) // All Setup For OpenGL Goes Here int InitGL() // All Setup For OpenGL Goes Here
{ {
if (!LoadGLTextures()) // Jump To Texture Loading Routine if (!LoadGLTextures()) // Jump To Texture Loading Routine
{ {
@@ -218,7 +220,7 @@ int InitGL(GLvoid) // All Setup For OpenGL Goes Here
} }
glEnable(GL_TEXTURE_2D); // Enable Texture Mapping glEnable(GL_TEXTURE_2D); // Enable Texture Mapping
glBlendFunc(GL_SRC_ALPHA,GL_ONE); // Set The Blending Function For Translucency glBlendFunc(GL_SRC_ALPHA, GL_ONE); // Set The Blending Function For Translucency
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // This Will Clear The Background Color To Black glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // This Will Clear The Background Color To Black
glClearDepth(1.0); // Enables Clearing Of The Depth Buffer glClearDepth(1.0); // Enables Clearing Of The Depth Buffer
glDepthFunc(GL_LESS); // The Type Of Depth Test To Do glDepthFunc(GL_LESS); // The Type Of Depth Test To Do
@@ -231,7 +233,7 @@ int InitGL(GLvoid) // All Setup For OpenGL Goes Here
return 1; // Initialization Went OK return 1; // Initialization Went OK
} }
int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing int DrawGLScene() // Here's Where We Do All The Drawing
{ {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
glLoadIdentity(); // Reset The View glLoadIdentity(); // Reset The View
@@ -239,13 +241,13 @@ int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing
GLfloat x_m, y_m, z_m, u_m, v_m; GLfloat x_m, y_m, z_m, u_m, v_m;
GLfloat xtrans = -xpos; GLfloat xtrans = -xpos;
GLfloat ztrans = -zpos; GLfloat ztrans = -zpos;
GLfloat ytrans = -walkbias-0.25f; GLfloat ytrans = -walkbias - 0.25f;
GLfloat sceneroty = 360.0f - yrot; GLfloat sceneroty = 360.0f - yrot;
int numtriangles; int numtriangles;
glRotatef(lookupdown,1.0f,0,0); glRotatef(lookupdown, 1.0f, 0.0f, 0.0f);
glRotatef(sceneroty,0,1.0f,0); glRotatef(sceneroty, 0.0f, 1.0f, 0.0f);
glTranslatef(xtrans, ytrans, ztrans); glTranslatef(xtrans, ytrans, ztrans);
glBindTexture(GL_TEXTURE_2D, texture[filter]); glBindTexture(GL_TEXTURE_2D, texture[filter]);
@@ -256,33 +258,33 @@ int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing
for (int loop_m = 0; loop_m < numtriangles; loop_m++) for (int loop_m = 0; loop_m < numtriangles; loop_m++)
{ {
glBegin(GL_TRIANGLES); glBegin(GL_TRIANGLES);
glNormal3f( 0.0f, 0.0f, 1.0f); glNormal3f(0.0f, 0.0f, 1.0f);
x_m = sector1.triangle[loop_m].vertex[0].x; x_m = sector1.triangle[loop_m].vertex[0].x;
y_m = sector1.triangle[loop_m].vertex[0].y; y_m = sector1.triangle[loop_m].vertex[0].y;
z_m = sector1.triangle[loop_m].vertex[0].z; z_m = sector1.triangle[loop_m].vertex[0].z;
u_m = sector1.triangle[loop_m].vertex[0].u; u_m = sector1.triangle[loop_m].vertex[0].u;
v_m = sector1.triangle[loop_m].vertex[0].v; v_m = sector1.triangle[loop_m].vertex[0].v;
glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m); glTexCoord2f(u_m, v_m); glVertex3f(x_m, y_m, z_m);
x_m = sector1.triangle[loop_m].vertex[1].x; x_m = sector1.triangle[loop_m].vertex[1].x;
y_m = sector1.triangle[loop_m].vertex[1].y; y_m = sector1.triangle[loop_m].vertex[1].y;
z_m = sector1.triangle[loop_m].vertex[1].z; z_m = sector1.triangle[loop_m].vertex[1].z;
u_m = sector1.triangle[loop_m].vertex[1].u; u_m = sector1.triangle[loop_m].vertex[1].u;
v_m = sector1.triangle[loop_m].vertex[1].v; v_m = sector1.triangle[loop_m].vertex[1].v;
glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m); glTexCoord2f(u_m, v_m); glVertex3f(x_m, y_m, z_m);
x_m = sector1.triangle[loop_m].vertex[2].x; x_m = sector1.triangle[loop_m].vertex[2].x;
y_m = sector1.triangle[loop_m].vertex[2].y; y_m = sector1.triangle[loop_m].vertex[2].y;
z_m = sector1.triangle[loop_m].vertex[2].z; z_m = sector1.triangle[loop_m].vertex[2].z;
u_m = sector1.triangle[loop_m].vertex[2].u; u_m = sector1.triangle[loop_m].vertex[2].u;
v_m = sector1.triangle[loop_m].vertex[2].v; v_m = sector1.triangle[loop_m].vertex[2].v;
glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m); glTexCoord2f(u_m, v_m); glVertex3f(x_m, y_m, z_m);
glEnd(); glEnd();
} }
return 1; // Everything Went OK return 1; // Everything Went OK
} }
GLvoid KillGLWindow(GLvoid) // Properly Kill The Window GLvoid KillGLWindow() // Properly Kill The Window
{ {
if (fullscreen) // Are We In Fullscreen Mode? if (fullscreen) // Are We In Fullscreen Mode?
{ {
@@ -292,17 +294,17 @@ GLvoid KillGLWindow(GLvoid) // Properly Kill The Window
if (hRC) // Do We Have A Rendering Context? if (hRC) // Do We Have A Rendering Context?
{ {
if (SDL_GL_MakeCurrent(hWnd,NULL)) // Are We Able To Release The DC And RC Contexts? if (SDL_GL_MakeCurrent(hWnd, NULL)) // Are We Able To Release The DC And RC Contexts?
{ {
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_INFORMATION, "SHUTDOWN ERROR", "Release Of RC Failed.", NULL); SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_INFORMATION, "SHUTDOWN ERROR", "Release Of RC Failed.", NULL);
} }
SDL_GL_DeleteContext(hRC); // Delete The RC SDL_GL_DeleteContext(hRC); // Delete The RC
hRC=NULL; // Set RC To NULL hRC = NULL; // Set RC To NULL
} }
SDL_DestroyWindow(hWnd); // Destroy The Window SDL_DestroyWindow(hWnd); // Destroy The Window
hWnd=NULL; // Set hWnd To NULL hWnd = NULL; // Set hWnd To NULL
} }
@@ -317,12 +319,12 @@ GLvoid KillGLWindow(GLvoid) // Properly Kill The Window
bool CreateGLWindow(char* title, int width, int height, int bits, bool fullscreenflag) bool CreateGLWindow(char* title, int width, int height, int bits, bool fullscreenflag)
{ {
SDL_Rect WindowRect; // Grabs Rectangle Upper Left / Lower Right Values SDL_Rect WindowRect; // Grabs Rectangle Upper Left / Lower Right Values
WindowRect.x=0; // Set Left Value To 0 WindowRect.x = 0; // Set Left Value To 0
WindowRect.w=width; // Set Right Value To Requested Width WindowRect.w = width; // Set Right Value To Requested Width
WindowRect.y=0; // Set Top Value To 0 WindowRect.y = 0; // Set Top Value To 0
WindowRect.h=height; // Set Bottom Value To Requested Height WindowRect.h = height; // Set Bottom Value To Requested Height
fullscreen=fullscreenflag; // Set The Global Fullscreen Flag fullscreen = fullscreenflag; // Set The Global Fullscreen Flag
// Create The Window // Create The Window
if (!(hWnd = SDL_CreateWindow(title, if (!(hWnd = SDL_CreateWindow(title,
@@ -354,7 +356,7 @@ bool CreateGLWindow(char* title, int width, int height, int bits, bool fullscree
SDL_ShowMessageBox(&msgbox, &bttnid); SDL_ShowMessageBox(&msgbox, &bttnid);
if (bttnid == 0) if (bttnid == 0)
{ {
fullscreen=false; // Windowed Mode Selected. Fullscreen = FALSE fullscreen = false; // Windowed Mode Selected. Fullscreen = FALSE
} }
else else
{ {
@@ -382,14 +384,14 @@ bool CreateGLWindow(char* title, int width, int height, int bits, bool fullscree
SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 0); // No Stencil Buffer SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 0); // No Stencil Buffer
if (!(hRC=SDL_GL_CreateContext(hWnd))) // Are We Able To Get A Rendering Context? if (!(hRC = SDL_GL_CreateContext(hWnd))) // Are We Able To Get A Rendering Context?
{ {
KillGLWindow(); // Reset The Display KillGLWindow(); // Reset The Display
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "ERROR", "Can't Create A GL Rendering Context.", NULL); SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "ERROR", "Can't Create A GL Rendering Context.", NULL);
return false; // Return FALSE return false; // Return FALSE
} }
if(SDL_GL_MakeCurrent(hWnd, hRC)) // Try To Activate The Rendering Context if (SDL_GL_MakeCurrent(hWnd, hRC)) // Try To Activate The Rendering Context
{ {
KillGLWindow(); // Reset The Display KillGLWindow(); // Reset The Display
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "ERROR", "Can't Activate The GL Rendering Context.", NULL); SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "ERROR", "Can't Activate The GL Rendering Context.", NULL);
@@ -428,7 +430,7 @@ void WndProc(SDL_Event* uMsg)
case SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED: // Resize The OpenGL Window case SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED: // Resize The OpenGL Window
{ {
ReSizeGLScene(uMsg->window.data1,uMsg->window.data2); // LoWord=Width, HiWord=Height ReSizeGLScene(uMsg->window.data1, uMsg->window.data2); // LoWord=Width, HiWord=Height
break; // Jump Back break; // Jump Back
} }
} }
@@ -437,7 +439,7 @@ void WndProc(SDL_Event* uMsg)
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
SDL_Event msg; // Windows Message Structure SDL_Event msg; // Windows Message Structure
bool done=false; // Bool Variable To Exit Loop bool done = false; // Bool Variable To Exit Loop
SDL_Init(SDL_INIT_VIDEO); SDL_Init(SDL_INIT_VIDEO);
@@ -456,22 +458,22 @@ int main(int argc, char* argv[])
SDL_ShowMessageBox(&msgbox, &bttnid); SDL_ShowMessageBox(&msgbox, &bttnid);
if (bttnid == 1) if (bttnid == 1)
{ {
fullscreen=false; // Windowed Mode fullscreen = false; // Windowed Mode
} }
// Create Our OpenGL Window // Create Our OpenGL Window
if (!CreateGLWindow("Lionel Brits & NeHe's 3D World Tutorial",640,480,16,fullscreen)) if (!CreateGLWindow("Lionel Brits & NeHe's 3D World Tutorial", 640, 480, 16, fullscreen))
{ {
return 0; // Quit If Window Was Not Created return 0; // Quit If Window Was Not Created
} }
while(!done) // Loop That Runs While done=FALSE while (!done) // Loop That Runs While done=FALSE
{ {
if (SDL_PollEvent(&msg) > 0) // Is There A Message Waiting? if (SDL_PollEvent(&msg) > 0) // Is There A Message Waiting?
{ {
if (msg.type==SDL_EVENT_QUIT) // Have We Received A Quit Message? if (msg.type == SDL_EVENT_QUIT) // Have We Received A Quit Message?
{ {
done=true; // If So done=TRUE done = true; // If So done=TRUE
} }
else // If Not, Deal With Window Messages else // If Not, Deal With Window Messages
{ {
@@ -483,15 +485,15 @@ int main(int argc, char* argv[])
// Draw The Scene. Watch For ESC Key And Quit Messages From DrawGLScene() // Draw The Scene. Watch For ESC Key And Quit Messages From DrawGLScene()
if ((active && !DrawGLScene()) || keys[SDL_SCANCODE_ESCAPE]) // Active? Was There A Quit Received? if ((active && !DrawGLScene()) || keys[SDL_SCANCODE_ESCAPE]) // Active? Was There A Quit Received?
{ {
done=true; // ESC or DrawGLScene Signalled A Quit done = true; // ESC or DrawGLScene Signalled A Quit
} }
else // Not Time To Quit, Update Screen else // Not Time To Quit, Update Screen
{ {
SDL_GL_SwapWindow(hWnd); // Swap Buffers (Double Buffering) SDL_GL_SwapWindow(hWnd); // Swap Buffers (Double Buffering)
if (keys[SDL_SCANCODE_B] && !bp) if (keys[SDL_SCANCODE_B] && !bp)
{ {
bp=true; bp = true;
blend=!blend; blend = !blend;
if (!blend) if (!blend)
{ {
glDisable(GL_BLEND); glDisable(GL_BLEND);
@@ -505,47 +507,47 @@ int main(int argc, char* argv[])
} }
if (!keys[SDL_SCANCODE_B]) if (!keys[SDL_SCANCODE_B])
{ {
bp=false; bp = false;
} }
if (keys[SDL_SCANCODE_F] && !fp) if (keys[SDL_SCANCODE_F] && !fp)
{ {
fp=true; fp = true;
filter+=1; filter += 1;
if (filter>2) if (filter > 2)
{ {
filter=0; filter = 0;
} }
} }
if (!keys[SDL_SCANCODE_F]) if (!keys[SDL_SCANCODE_F])
{ {
fp=false; fp = false;
} }
if (keys[SDL_SCANCODE_PAGEUP]) if (keys[SDL_SCANCODE_PAGEUP])
{ {
z-=0.02f; z -= 0.02f;
} }
if (keys[SDL_SCANCODE_PAGEDOWN]) if (keys[SDL_SCANCODE_PAGEDOWN])
{ {
z+=0.02f; z += 0.02f;
} }
if (keys[SDL_SCANCODE_UP]) if (keys[SDL_SCANCODE_UP])
{ {
xpos -= (float)sin(heading*piover180) * 0.05f; xpos -= (float)sin(heading * piover180) * 0.05f;
zpos -= (float)cos(heading*piover180) * 0.05f; zpos -= (float)cos(heading * piover180) * 0.05f;
if (walkbiasangle >= 359.0f) if (walkbiasangle >= 359.0f)
{ {
walkbiasangle = 0.0f; walkbiasangle = 0.0f;
} }
else else
{ {
walkbiasangle+= 10; walkbiasangle += 10;
} }
walkbias = (float)sin(walkbiasangle * piover180)/20.0f; walkbias = (float)sin(walkbiasangle * piover180) / 20.0f;
} }
if (keys[SDL_SCANCODE_DOWN]) if (keys[SDL_SCANCODE_DOWN])
@@ -558,9 +560,9 @@ int main(int argc, char* argv[])
} }
else else
{ {
walkbiasangle-= 10; walkbiasangle -= 10;
} }
walkbias = (float)sin(walkbiasangle * piover180)/20.0f; walkbias = (float)sin(walkbiasangle * piover180) / 20.0f;
} }
if (keys[SDL_SCANCODE_RIGHT]) if (keys[SDL_SCANCODE_RIGHT])
@@ -577,21 +579,21 @@ int main(int argc, char* argv[])
if (keys[SDL_SCANCODE_PAGEUP]) if (keys[SDL_SCANCODE_PAGEUP])
{ {
lookupdown-= 1.0f; lookupdown -= 1.0f;
} }
if (keys[SDL_SCANCODE_PAGEDOWN]) if (keys[SDL_SCANCODE_PAGEDOWN])
{ {
lookupdown+= 1.0f; lookupdown += 1.0f;
} }
if (keys[SDL_SCANCODE_F1]) // Is F1 Being Pressed? if (keys[SDL_SCANCODE_F1]) // Is F1 Being Pressed?
{ {
keys[SDL_SCANCODE_F1]=false; // If So Make Key FALSE keys[SDL_SCANCODE_F1] = false; // If So Make Key FALSE
KillGLWindow(); // Kill Our Current Window KillGLWindow(); // Kill Our Current Window
fullscreen=!fullscreen; // Toggle Fullscreen / Windowed Mode fullscreen = !fullscreen; // Toggle Fullscreen / Windowed Mode
// Recreate Our OpenGL Window // Recreate Our OpenGL Window
if (!CreateGLWindow("Lionel Brits & NeHe's 3D World Tutorial",640,480,16,fullscreen)) if (!CreateGLWindow("Lionel Brits & NeHe's 3D World Tutorial", 640, 480, 16, fullscreen))
{ {
return 0; // Quit If Window Was Not Created return 0; // Quit If Window Was Not Created
} }