#include
#include
#include
#include
#include
float angle = 0.0f;
HDC g_HDC;
bool fullScreen = false; bool keyPressed[256];
float lightPosition[] = { 0.0f, 0.0f, 1.0f, 0.0f };
float diffuseLight[] = { 1.0f, 1.0f, 1.0f, 1.0f }; float diffuseMat[] = { 1.0f, 1.0f, 1.0f, 1.0f };
float ballDiffuse[] = { 0.5f, 0.5f, 0.0f, 1.0f }; float ballSpecular[] = { 1.0f, 1.0f, 1.0f, 1.0f }; float ballPosition[] = { 0.0f, 0.0f, 0.0f, 1.0f };
void Initialize()
{
glEnable(GL_LIGHTING);
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight);
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT1, GL_DIFFUSE, ballDiffuse);
glLightfv(GL_LIGHT1, GL_SPECULAR, ballSpecular);
glEnable(GL_LIGHT1);
glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuseMat);
glEnable(GL_COLOR_MATERIAL);
glShadeModel(GL_SMOOTH);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
}
void Render()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
if (angle >= 359.9f)
angle = 0.0f;
angle += 0.1;
glTranslatef(0.0f, 0.0f, -15.0f);
glLightfv(GL_LIGHT1, GL_POSITION, ballPosition);
glPushMatrix();
glColor3f(1.0f, 1.0f, 0.0f);
glTranslatef(ballPosition[0], ballPosition[1], ballPosition[2]);
auxSolidSphere(0.5f);
glPopMatrix();
glPushMatrix();
glRotatef(angle, 0.0f, 1.0f, 0.0f);
glTranslatef(0.0f, 0.0f, 6.0f);
glColor4f(1.0f, 0.2f, 0.2f, 1.0f);
auxSolidSphere(2.0f);
glPopMatrix();
glEnable(GL_BLEND);
glDepthMask(GL_FALSE);
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
glPushMatrix();
glRotatef(angle, 0.0f, 1.0f, 0.0f);
glTranslatef(0.0f, 0.0f, -6.0f);
glColor4f(0.0f, 0.5f, 0.5f, 0.3f);
auxSolidSphere(2.0f);
glPopMatrix();
glDepthMask(GL_TRUE);
glDisable(GL_BLEND);
glFlush();
SwapBuffers(g_HDC); }
void SetupPixelFormat(HDC hDC)
{
int nPixelFormat;
static PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW |
PFD_SUPPORT_OPENGL |
PFD_DOUBLEBUFFER,
PFD_TYPE_RGBA, 32,
0, 0, 0, 0, 0, 0,
0,
0,
0,
0, 0, 0, 0,
16,
0,
0,
PFD_MAIN_PLANE, 0, 0, 0, 0 };
nPixelFormat = ChoosePixelFormat(hDC, &pfd);
SetPixelFormat(hDC, nPixelFormat, &pfd); }