【OpenGL】运行一个简单demo,画一个矩形

本篇文章使用VS2017来运行一个OpenGL的基本程序
如果对配置OpenGL有问题可以看其他博主的文章,这里不介绍了
vs 2015版本配置https://www.cnblogs.com/zpcdbky/p/6724772.html
vs 2017版本配置https://blog.csdn.net/qq321772514/article/details/82846853
vs 2019版本配置https://blog.csdn.net/csr_monkey/article/details/89069767

第一步:建立一个VS的console程序
在这里插入图片描述
右击项目链接OpenGL库
在这里插入图片描述
配置属性->链接器->常规->附加库目录
在这里插入图片描述
在这里输入之前配置好的库的路径
在这里插入图片描述
运行代码,画一个矩形

// ConsoleApplication2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <GLTools.h>	// OpenGL toolkit
#include <GLMatrixStack.h>
#include <GLFrame.h>
#include <GLFrustum.h>
#include <GLBatch.h>
#include <GLGeometryTransform.h>
#pragma comment(lib,"gltools.lib")
#include <math.h>
#ifdef __APPLE__
#include <glut/glut.h>
#include <OpenGL/OpenGL.h>
#else
#define FREEGLUT_STATIC
#include <GL/glut.h>
#endif

#pragma comment(lib,"gltools.lib")

// 初始化参数
void init() {
	glClearColor(0.1, 0.1, 0.4, 0.0);
	glShadeModel(GL_SMOOTH);
}

void DrawObjects() {
	// 定义图形的顶点序列,点坐标都是double型
	// GL_POLYGON是图元标志,表示定义点并绘制矩形,GL_POINTS表示绘制点不连接成矩形
	glBegin(GL_POLYGON);
		glColor3f(0.5, 0.3, 0.7);
		glVertex2f(-7.0, 2.0);
		glVertex2f(-8.0, 3.0);
		glVertex2f(-10.3, 0.5);
		glVertex2f(-7.5, -2.0);
		glVertex2f(-6.0, -1.0);
	glEnd();

	// 绘制点
	glBegin(GL_POINTS);
		glColor3f(1.0, 0.0, 0.0);
		glVertex2f(-10.0, 11.0);
		glColor3f(1.0, 1.0, 0.0);
		glVertex2f(-9.0, 10.0);
		glColor3f(0.0, 1.0, 1.0);
		glVertex2f(-8.0, 12.0);
	glEnd();
	
	// 绘制线
	glBegin(GL_LINES);
		glColor3f(1.0, 1.0, 0.0);
		glVertex2f(-11.0, 8.0);
		glVertex2f(-7.0, 7.0);
		glColor3f(1.0, 0.0, 1.0);
		glVertex2f(-11.0, 9.0);
		glVertex2f(-8.0, 6.0);
	glEnd();
}

// 绘图回调函数
void display() {
	// 清除之前帧数据
	glClear(GL_COLOR_BUFFER_BIT);

	// 绘制图形
	DrawObjects();

	// 执行绘图命令
	glFlush();
}

// 窗口大小变化回调函数
void reshape(int w, int h) {
	// 初始化窗口大小
	glViewport(0, 0, w, h);

	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(60.0, (GLfloat)w / (GLfloat)h, 0.1, 100000.0);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	gluLookAt(0, 0, 25, 0, 0, -1, 0, 1, 0);
}

int main(int argc, char* argv[]) {
	// 初始化显示模式
	glutInit(&argc, const_cast<char **>(argv));
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

	// 初始化窗口
	glutInitWindowSize(500, 500);
	glutInitWindowPosition(100, 100);
	glutCreateWindow(argv[0]);

	init();
	glutReshapeFunc(reshape);
	glutDisplayFunc(display);

	// 开始主循环绘制
	glutMainLoop();
	return 0;
}


运行效果
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小子挺不错

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值