opengl光照效果的三棱锥+键盘上下左右控制旋转(学习笔记-仅供参考)

#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:其参数值包含一个整数或浮点数,表示对多边形进行单面还是双面的光
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值