OpenGL基础demo代码整理(C++)

因为glut只有32位的库,因此配置64位的freeglut代替glut。

freeglut下载地址:freeglut Windows Development Libraries (transmissionzero.co.uk)

1、demo1


#include <glut.h>
#include <freeglut.h>

void renderScene(void)
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glLoadIdentity();
	glBegin(GL_TRIANGLES);
	glVertex3f(-0.5, -0.5, 0.0);
	glVertex3f(0.5, 0.0, 0.0);
	glVertex3f(0.0, 0.5, 0.0);
	glEnd();
	glutSwapBuffers();
}

// 绘制一个三角形
int main(int argc, char** argv)
{
	glutInit(&argc, (char**)argv);
	glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
	glutInitWindowPosition(100, 100);
	glutInitWindowSize(800, 480);
	glutCreateWindow("第一个glut程序");
	glutDisplayFunc(renderScene);

	glutMainLoop();
	return 0;
}

2、demo2(拖拉缩放)


#include <math.h>
#include <glut.h>
#include <freeglut.h>


const double PI = 3.14159265358979323846;
float VIEW[]    = { -0.8, 0.8, -0.8, 0.8, 1.0, 20.0 };
float SCALE_K[] = { 1.0, 1.0, 1.0 };
float EYE[]     = { 0.0, 0.0, 2.0 };
float LOOK_AT[] = { 0.0, 0.0, 0.0 };
float EYE_UP[]  = { 0.0, 1.0, 0.0 };
int WIN_W   = 800;
int WIN_H   = 600;
int MOUSE_X = 0;
int MOUSE_Y = 0;
float DIST  = 2.0;
float PHI   = 0.0;
float THETA = 0.0;
bool mouseLeftDown = false;
bool mouseRightDown = false;


void draw()
{
	// 清除屏幕及深度缓存
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	// 设置投影矩阵, 平行投影 or 透视投影
	glMatrixMode(GL_PROJECTION); 
	glLoadIdentity();

	// 调整视景体
	if (WIN_W > WIN_H)
		glFrustum(VIEW[0] * WIN_W / WIN_H, VIEW[1] * WIN_W / WIN_H, VIEW[2], VIEW[3], VIEW[4], VIEW[5]);
	else
		glFrustum(VIEW[0], VIEW[1], VIEW[2] * WIN_H / WIN_W, VIEW[3] * WIN_H / WIN_W, VIEW[4], VIEW[5]);

	// 设置模型矩阵
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();

	glScalef(SCALE_K[0], SCALE_K[1], SCALE_K[2]);  // 几何变换
	gluLookAt(EYE[0], EYE[1], EYE[2],
		LOOK_AT[0], LOOK_AT[1], LOOK_AT[2],
		EYE_UP[0], EYE_UP[1], EYE_UP[2]);          // 设置视点
	glViewport(0, 0, WIN_W, WIN_H);                // 设置视口

	glBegin(GL_LINES);                 // 开始绘制线段(世界坐标系)
	glColor4f(1.0, 0.0, 0.0, 1.0);     // 设置当前颜色为红色不透明
	glVertex3f(-0.8, 0.0, 0.0);        // 设置x轴顶点(x轴负方向)
	glVertex3f(0.8, 0.0, 0.0);  
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值