📄 lesson46.cpp
字号:
/**************************************
* *
* Jeff Molofee's Basecode Example *
* nehe.gamedev.net *
* 2001 *
* *
* All Code / Tutorial Commenting *
* by Jeff Molofee ( NeHe ) *
* *
**************************************/
#include <windows.h> // Header File For Windows
#include <gl\gl.h> // Header File For The OpenGL32 Library
#include <gl\glu.h> // Header File For The GLu32 Library
#include <gl\glaux.h> // Header File For The GLaux Library
#include "NeHeGL.h" // Header File For NeHeGL
#include <math.h> // We'll Need Some Math
// ROACH
#include "arb_multisample.h"
bool domulti = true;
bool doangle = true;
// ENDROACH
#pragma comment( lib, "opengl32.lib" ) // Search For OpenGL32.lib While Linking
#pragma comment( lib, "glu32.lib" ) // Search For GLu32.lib While Linking
#pragma comment( lib, "glaux.lib" ) // Search For GLaux.lib While Linking
#ifndef CDS_FULLSCREEN // CDS_FULLSCREEN Is Not Defined By Some
#define CDS_FULLSCREEN 4 // Compilers. By Defining It This Way,
#endif // We Can Avoid Errors
GL_Window* g_window;
Keys* g_keys;
float angle= 0.0f;
BOOL Initialize (GL_Window* window, Keys* keys) // Any GL Init Code & User Initialiazation Goes Here
{
g_window = window;
g_keys = keys;
// Start Of User Initialization
angle = 0.0f; // Set Starting Angle To Zero
glViewport(0 , 0,window->init.width ,window->init.height); // Set Up A Viewport
glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
glLoadIdentity(); // Reset The Projection Matrix
gluPerspective(50, (float)window->init.width/(float)window->init.height, 5, 2000); // Set Our Perspective
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
glLoadIdentity(); // Reset The Modelview Matrix
glEnable(GL_DEPTH_TEST); // Enable Depth Testing
glShadeModel(GL_SMOOTH); // Select Smooth Shading
glClearColor(0.0f, 0.0f, 0.0f, 0.5); // Set The Clear Color To Black
return TRUE; // Return TRUE (Initialization Successful)
}
void Deinitialize (void) // Any User DeInitialization Goes Here
{
}
void Update (DWORD milliseconds) // Perform Motion Updates Here
{
// ROACH
if(g_keys->keyDown [VK_SPACE] == TRUE)
domulti=!domulti;
if(g_keys->keyDown ['M'] == TRUE)
doangle=!doangle;
// ENDROACH
if (g_keys->keyDown [VK_ESCAPE] == TRUE) // Is ESC Being Pressed?
{
TerminateApplication (g_window); // Terminate The Program
}
if (g_keys->keyDown [VK_F1] == TRUE) // Is F1 Being Pressed?
{
ToggleFullscreen (g_window); // Toggle Fullscreen Mode
}
}
void Draw (void) // Draw The Scene
{
// ROACH
if(domulti)
glEnable(GL_MULTISAMPLE_ARB); // Enable Our Multisampling
// ENDROACH
glClearColor(0.0f, 0.0f, 0.0f, 0.5); // Set The Clear Color To Black
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer
glLoadIdentity(); // Reset The View
for(float i=-10;i<10;i++)
for(float j=-10;j<10;j++)
{
glPushMatrix();
glTranslatef(i*2.0f,j*2.0f,-5.0f);
glRotatef(angle,0.f,0.f,1.f);
glBegin(GL_QUADS);
glColor3f(1.0f,0.0f,0.0f);glVertex3f(i,j,0.0f);
glColor3f(0.0f,1.0f,0.0f);glVertex3f(i + 2.0f,j,0.0f);
glColor3f(0.0f,0.0f,1.0f);glVertex3f(i + 2.0f,j + 2.0f,0.0f);
glColor3f(1.0f,1.0f,1.0f);glVertex3f(i,j + 2.0f,0.0f);
glEnd();
glPopMatrix();
}
if(doangle)
angle+=0.05f;
glFlush (); // Flush The GL Rendering Pipeline
// ROACH
if(domulti)
glDisable(GL_MULTISAMPLE_ARB);
// ENDROACH
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -