OpenGL入门练习——点、直线和多边形简单操纵

绘制几何图形的一些细节:

点可以设置大小

直线可以设置宽度;可以将直线画成虚线。

多边形的两个面的绘制方法可以分别设置;在三维空间中,不可见的多边形可以被剔除;可以将填充多边形绘制成镂空的样式。

 另外,把一些数据写到程序之外的文件中,并用专门的工具编辑之,有时可以显得更方便。

#include<GL/glut.h>
#include<math.h>
#include<stdio.h>
#include<stdlib.h>

void myDisplay1(void) //点&像素点验证
{
	//GLfloat x;
	glClear(GL_COLOR_BUFFER_BIT);
	glPointSize(5.0f);

	glBegin(GL_POINTS);
	glVertex2f(0.0f, 0.0f);
	glVertex2f(0.5f, 0.5f);
	glEnd();

	glFlush();
}

void myDisplay2(void)
{
	//线段 虚线 直线 样式
	glClear(GL_COLOR_BUFFER_BIT);
	glEnable(GL_LINE_STIPPLE);
	glLineStipple(2, 0x0F0F);
	glLineWidth(10.0f);
	glBegin(GL_LINES);
	glVertex2f(0.0f, 0.0f);
	glVertex2f(0.8f, 0.8f);
	glEnd();
	glFlush();
}

void myDisplay3(void)
{
	//多边形练习1 两面 变换 反转
	glClear(GL_COLOR_BUFFER_BIT);
	glPolygonMode(GL_FRONT, GL_FILL);//正面 填充
	glPolygonMode(GL_BACK, GL_LINE);//反面 线型
	glFrontFace(GL_CCW);//设置逆时针方向为正面

	glBegin(GL_POLYGON);//按照逆时针绘制一个正方形
	glVertex2f(-0.5f, -0.5f);
	glVertex2f(0.0f, -0.5f);
	glVertex2f(0.0f, 0.0f);
	glVertex2f(-0.5f, 0.0f);
	glEnd();

	glBegin(GL_POLYGON);//按照顺时针绘制一个正方形
	glVertex2f(0.0f, 0.0f);
	glVertex2f(0.0f, 0.5f);
	glVertex2f(0.5f, 0.5f);
	glVertex2f(0.5f, 0.0f);
	glEnd();

	glFlush();
}

void myDisplay4()
{
	//图像镂空
	static GLubyte Mask[128];
	FILE *fp;
	fp = fopen("mask.bmp", "rb");
	if (!fp)
		exit(0);
	if (fseek(fp, -(int)sizeof(Mask), SEEK_END))
		exit(0);
	if (!fread(Mask, sizeof(Mask), 1, fp))
		exit(0);
	fclose(fp);

	glClear(GL_COLOR_BUFFER_BIT);
	glEnable(GL_POLYGON_STIPPLE);
	glPolygonStipple(Mask);
	glRectf(-0.5f, -0.5f, 0.0f, 0.0f);
	glDisable(GL_POLYGON_STIPPLE);
	glRectf(0.0f, 0.0f, 0.5f, 0.5f);
	glFlush();
}

int main(int argc, char *argv[])
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
	glutInitWindowPosition(100, 100);
	glutInitWindowSize(400, 400);
	glutCreateWindow("OpenGL 2");
	glutDisplayFunc(&myDisplay3);
	glutMainLoop();
	return 0;
}

参考资料:OpenGL入门教程

全部评论

相关推荐

2024-12-21 18:48
西安邮电大学 C++
黑皮白袜臭脚体育生:按使用了什么技术解决了什么问题,优化了什么性能指标来写会更好另外宣传下自己的开源仿b站微服务项目,GitHub已经390star,牛客上有完整文档教程
点赞 评论 收藏
分享
2024-12-27 10:21
已编辑
海南师范大学 媒介策划
到我怀里来:身高体重住址这些就别写了,留几个关键的就行,工作经历突出重点写详细点
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务