#include <windows.h>
#include <gl/gl.h>
#include <gl/glut.h>
#include<stdio.h>
// 旋转参数
static GLfloat xRot = 0.0f;
static GLfloat yRot = 0.0f;
//颜色跟踪模式
BOOL bColorMaterial = FALSE;
//初始化窗口
void SetupRC(void)
{
// 窗口颜色黑色
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glShadeModel(GL_FLAT);
}
void ChangeSize(int w, int h)
{
if (h == 0) h = 1;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (w <= h)
glOrtho(-100.0f, 100.0f, -100.0f * h / w, 100.0f * h / w, -100.0f, 100.0f);
else
glOrtho(-100.0f * w / h, 100.0f * w / h, -100.0f, 100.0f, -100.0f, 100.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
// 窗口内绘图
void RenderScene(void)
{
GLfloat ambient[] = { 0.8f, 0.8f, 0.8f, 1.0f }; //环境光RGBA
GLfloat material_ambient[] = { 0.75f, 0.0f, 0.0f, 1.0f };
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
//1.设置光照
glEnable(GL_LIGHTING); //启动光照
//glDisable(GL_LIGHTING);//关闭光照
//2.设置全局环境光
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);
/*
GL_LIGHT_MODEL_AMBIENT:指定该参数后,其参数值包含四个整数或浮点数,这些参数值指定了场景中RGBA值。参数值在(-1.0,1.0)之间。默认参数值为(0.2,0.2,0.2,1.0),光线相当暗淡。
GL_LIGHT_MODEL_LOCAL_VIEWER:其参数值包含一个整数或浮点数,指定了镜面反射角度。默认是为0,表示视线方向与z轴负方向平行。否则表示坐标原点到Z轴负方向的镜面反射角度。
GL_LIGHT_MODEL_TWO_SIDE:其参数值包含一个整数或浮点数,表示对多边形进行单面还是双面的光