OpenGL—简单图元的绘制

这篇博客展示了如何使用OpenGL库在C++环境中绘制基本图形,包括三角形、矩形和点,并通过glutBitmapCharacter函数显示文本。代码中定义了窗口大小、位置及显示模式,然后在myDisplay函数中进行图形绘制,最后进入主循环执行显示操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验一 简单图元的绘制

#define GLUT_DISABLE_ATEXIT_HACK //防止GLUT版本问题出错
#include <glut.h> //需要正确安装GLUT,安装方法如预备知识中所述
void myDisplay(void)	
{
	glClearColor(0.0, 0.0, 0.0, 0.0);			//背景色(R,G,B,A) A为透明度
	glClear(GL_COLOR_BUFFER_BIT);	//使用缓存中的背景色清空当前背景色
glBegin(GL_TRIANGLES);			//开始画三角形
glColor3f(1.0f, 0.0f, 0.0f);   glVertex2f(0.0f, 1.0f);		//设置顶点
glColor3f(0.0f, 1.0f, 0.0f);   glVertex2f(0.8f, -0.5f);
glColor3f(0.0f, 0.0f, 1.0f);   glVertex2f(-0.8f, -0.5f);
glEnd();	//结束

glColor3f(1.0f, 1.0f, 1.0f);				//设置当前颜色
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);		//绘制矩形(左下角,右上角)

glPointSize(100);		//画点前,指定光栅化点的直径
glBegin(GL_POINTS);  //开始点
glColor3f(1.0f, 0.0f, 0.0f);   glVertex2f(-0.4f, -0.4f);	//设置顶点
glColor3f(0.0f, 1.0f, 0.0f);   glVertex2f(0.0f, 0.0f);
glColor3f(0.0f, 0.0f, 1.0f);   glVertex2f(0.4f, 0.4f);
glEnd();	//结束绘制
glColor3f(0.0f,0.0f, 0.0f);
const char* str = "sdfdqwer";
int n = 6;
//设置要在屏幕上显示字符的起始位置
glRasterPos2i(0, 0);
//逐个显示字符串中的每个字符
for (int i = 0; i < n; i++)
{
	glutBitmapCharacter(GLUT_BITMAP_8_BY_13, *(str + i));
}

glFlush();	//强制刷新缓存,保证绘图命令将被执行
}
void myreshape(GLint w, GLint h) {
	glViewport(0, 0, w, h);//左下角为原点
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(-10, 10, -10, 10, -1.0, 1.0);
}
int main(int argc, char* argv[])
{
	glutInit(&argc, argv);		//初始化
	glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);	//设置显示模式(RGB模式,单缓存窗口)
	glutInitWindowPosition(748, 415);		//设置窗口位置
	glutInitWindowSize(500, 500);		//设置窗口大小
	glutCreateWindow("Hello World!");	//设置窗口标题
	glutDisplayFunc(&myDisplay);	//调用绘制函数
	//glutReshapeFunc(myreshape);
	glutMainLoop();	//进入主循环
	return 0;
}

结果:

image-2011618

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值