首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用glut openGL绘制四角星

使用glut和OpenGL绘制四角星可以通过以下步骤实现:

  1. 导入必要的库和头文件:
代码语言:txt
复制
#include <GL/glut.h>
#include <math.h>
  1. 定义绘制四角星的函数:
代码语言:txt
复制
void drawStar(float cx, float cy, float radius, int numPoints)
{
    float angle = 2 * 3.1415926 / numPoints;
    float halfAngle = angle / 2;

    glBegin(GL_TRIANGLE_FAN);
    glVertex2f(cx, cy); // 中心点

    for (int i = 0; i <= numPoints; i++)
    {
        float x = cx + radius * cos(i * angle);
        float y = cy + radius * sin(i * angle);
        glVertex2f(x, y);

        x = cx + radius / 2 * cos(i * angle + halfAngle);
        y = cy + radius / 2 * sin(i * angle + halfAngle);
        glVertex2f(x, y);
    }

    glEnd();
}
  1. 定义绘制场景的函数:
代码语言:txt
复制
void renderScene()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0, 1.0, 0.0); // 设置颜色为黄色

    // 绘制四角星
    drawStar(0.0, 0.0, 0.5, 5);

    glFlush();
}
  1. 初始化OpenGL和窗口设置:
代码语言:txt
复制
void init()
{
    glClearColor(0.0, 0.0, 0.0, 0.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(-1.0, 1.0, -1.0, 1.0);
}
  1. 主函数中创建窗口并运行:
代码语言:txt
复制
int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(500, 500);
    glutInitWindowPosition(100, 100);
    glutCreateWindow("OpenGL Star");
    glutDisplayFunc(renderScene);
    init();
    glutMainLoop();

    return 0;
}

这样就可以使用glut和OpenGL绘制一个四角星了。在绘制函数中,我们使用glBegin和glEnd来定义绘制的图形类型,glVertex2f用于指定顶点的坐标。glClear用于清除窗口,glColor3f用于设置绘制颜色,glFlush用于刷新绘图命令。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发(移动推送、移动分析、移动测试等):https://cloud.tencent.com/product/mobile
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云游戏多媒体引擎(GME):https://cloud.tencent.com/product/gme
  • 腾讯云音视频处理(VOD):https://cloud.tencent.com/product/vod
  • 腾讯云网络安全(DDoS 高防、Web 应用防火墙等):https://cloud.tencent.com/product/ddos
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

图形学上机实验

实验环境:win10、VS 2017、OPenGL库 实验一 基于OpenGL的二维图形绘制 要求 编程实现绘制一个五角(基于OpenGL),效果如下图所示 图片 问题分析 可以将一个五角划分为...10个三角形,假设五角的各边长,分别计算出10个定点的坐标,然后逐个绘制三角形,将其拼接为五角; 图片 也可以利用参数方程,如下图所示,设大圆和小圆的半径分别为R、r,已知夹角为37度,在循环中计算绘制三角形...图片 代码 ProjectOne.cpp #include //OpenGL库 #include //OpenGL辅助库 #include <math.h...| GLUT_DOUBLE);//双缓冲,单缓冲为GLUT_SINGLE glutCreateWindow("五角绘制");//创建窗口,参数为窗口标题 init(); glutDisplayFunc...// #include #include //OpenGL库 #include //OpenGL辅助库 #include <math.h

1.6K20
  • opengl视图矩阵_心形线四个图像

    今天我们开始学习Opengl编程。 在学习之前,我们要开始配置Opengl,我这里使用的是VS2010,语言是C++。 Opengl是C++的一个拓展包,用来进行计算机图形方面的编程。...Opengl实用工具库(Opengl Utility Tooklit, GLUT)是独立于窗口系统的工具包,可以隐藏不同窗口系统API所带来的复杂性。...配置好环境,就开始学习如何使用Opengl编程。 第一步就是要导入glut.h头文件。...我们只需要在g lBegin()和glEnd()函数里设置我们所需要绘制的点,然后在glBegin参数里使用 GL_POLYGON,即为画凸多边形(为什么设为 GL_POLYGON?...因为当我们所画的点足够多的时候,就能够近似看做曲线),而后Opengl会把glBegin和glEnd里面所有绘制的点依次相连然后填充其内部,就得到了我们所需要绘制的心形线。

    39820

    写给 python 程序员的 OpenGL 教程

    核心库 GL 3.2 OpenGL 实用库 GLU 3.3 OpenGL 工具库 GLUT 3.4 Windows 专用库 WGL 4 开始 OpenGL 的奇幻之旅 4.1 OpenGL 基本图形的绘制...绘制一个或多个四边形 GL_QUAD_STRIP 绘制连续四边形 4.2 第一个 OpenGL 程序 通常,我们使用工具库(GLUT)创建 OpenGL 应用程序。...使用工具库(GLUT)创建 OpenGL 应用程序只需要四步(当然,前提是你需要先准备好绘图函数,并给它取一个合适的名字): 初始化glut库 创建glut窗口 注册绘图的回调函数 进入glut主循环...指定双缓存窗口 GLUT_ACCUM 窗口使用累加缓存 GLUT_ALPHA 窗口的颜色分量包含 alpha 值 GLUT_DEPTH 窗口使用深度缓存 GLUT_STENCIL 窗口使用模板缓存 GLUT_MULTISAMPLE...《OpenGL编程精粹》杨柏林 陈根浪 徐静 编著 Opengl开发库介绍 OpenGL的API函数使用手册 glut处理鼠标事件 Learn OpenGL 本文写作过程持续了两三周,期间可谓呕心沥血。

    3.2K30

    OpenGL开发库的详细介绍zz

    在跨平台的编程实例和演示中,aux很大程度上已经被glut库取代。OpenGL中的辅助库不能在所有的OpenGL平台上运行。 辅助库函数主要包括以下几类。...OpenGL工具库 OpenGL Utility Toolkit 包含大约30多个函数,函数名前缀为glut。...函数以glut开头,它们作为aux库功能更强的替代品,提供更为复杂的绘制功能,此函数由glut.dll来负责解释执行。...扩展源由扩展函数的后缀来指明(或使用扩展常量后缀)。例如,后缀WIN表明一个符合Windows规范的扩展,EXT或ARB后缀表明该扩展由多个卖主定义。...,应该优先使用ARB扩展 EXT – 多家OpenGL厂商同意支持的扩展 HP – Hewlett-Packard 惠普 IBM – International Business Machines KTX

    1.9K30

    android使用OPENGL ES绘制圆柱体

    本文实例为大家分享了android使用OPENGL ES绘制圆柱体的具体代码,供大家参考,具体内容如下 效果图: ?.... */ import java.io.IOException; import java.io.InputStream; import android.opengl.GLSurfaceView; import...onSurfaceCreated(GL10 gl, EGLConfig config) { //关闭抗抖动 gl.glDisable(GL10.GL_DITHER); //设置特定Hint项目的模式,这里为设置为使用快速模式...currTextureId; } } 编写zgyCH.java *设置圆柱体的控制属性,主要包括纹理、高度、截面半径、截面角度切分单位和高度切分单位,这些属性用于控制圆柱体的大小 *定义各个圆柱体绘制类的三角形绘制方法和工具方法...*实现圆柱体的线性会执法,线性会执法和三角形会执法顶点的获取方法相同,只是采用的绘制顶点顺序和渲染方法不同,并且先行绘制没有光照和纹理贴图 package com.scout.eeeeeee; /*

    90440

    OpenGL及其相关开源库:深入探析图形编程工具与原理

    GL、GLUT、FreeGLUT和GLAD GL(Graphics Library):GL是OpenGL的前身,是图形编程中的基础库之一。它提供了一系列基本的图形函数,如绘制点、线、三角形等。...在早期的OpenGL版本中,开发者通常会直接使用GL库来进行基本的图形绘制,例如通过调用glBegin()和glEnd()来指定绘制的几何形状,并使用glVertex()来指定顶点坐标。...尽管现代OpenGL已经淘汰了这些固定管线的绘制方式,转而采用可编程着色器的方式,但GL仍然作为OpenGL的一部分存在,并且在一些特定的场景下仍然会被使用到。...通过使用GLUT,开发者可以快速地搭建起一个基本的OpenGL应用程序框架,而无需关注底层的窗口管理和事件处理细节。...而在早期的OpenGL开发中,开发者可能会使用GLUT或者FreeGLUT来创建窗口和处理输入。

    1.9K10

    实验2 直线生成算法实现

    下面介绍下OpenGL画线的一些基础知识和glutReshapeFunc()函数。 (1)数学上的直线没有宽度,但OpenGL的直线则是有宽度的。...前面的实验已经知道如何绘“点”,那么OpenGL如何知道拿这些顶点来做什么呢?是一个一个的画出来,还是连成线?或者构成一个多边形?或是做其它事情呢?...为了解决这一问题,OpenGL要求:指定顶点的命令必须包含在glBegin函数之后,glEnd函数之前(否则指定的顶点将被忽略),并由glBegin来指明如何使用这些点。...如果使用的是GLUT,通知将自动完成,并调用向glutReshapeFunc()注册的函数。该函数必须完成下列工作: Ÿ 重新建立用作新渲染画布的矩形区域; Ÿ 定义绘制物体时使用的坐标系。...glViewport()调整像素矩形,用于绘制整个窗口。接下来三个函数调整绘图坐标系,使左下角位置为(0, 0),右上角为(w, h)。

    98820

    万字长文详解如何用Python玩转OpenGL | CSDN 博文精选

    值得一提的是,OpenGL 可以只使用设备的一部分进行绘制,这个部分称为视区或视口(viewport)。投影得到的是视区内的坐标(投影坐标),从投影坐标到设备坐标的计算过程就是设备变换了。...二、第一个 OpenGL 程序 通常,我们使用工具库(GLUT)创建 OpenGL 应用程序。为啥不用 GL 或者 GLU 库呢?画画之前总得先有一块画布吧,不能直接拿起画笔就开画。...使用工具库(GLUT)创建 OpenGL 应用程序只需要四步(当然,前提是你需要先准备好绘图函数,并给它取一个合适的名字): 初始化glut库 创建glut窗口 注册绘图的回调函数 进入glut主循环...使用双缓存窗口,可以避免重绘时产生抖动的感觉。我一般选择 GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH 作为参数来设置初始的显示模式。...如果把这些都放到初始化时候完成,使用一种结构记录该次绘制所需要的所有 VBO 所需信息,把它保存到 VBO特定位置,绘制的时候直接在这个位置取信息绘制,会简化渲染流程、提升渲染速度。

    9.1K21

    实验2 基本图元光栅化

    下面介绍下OpenGL画线的一些基础知识和glutReshapeFunc()函数。 (1)数学上的直线没有宽度,但OpenGL的直线则是有宽度的。...前面的实验已经知道如何绘“点”,那么OpenGL如何知道拿这些顶点来做什么呢?是一个一个的画出来,还是连成线?或者构成一个多边形?或是做其它事情呢?...为了解决这一问题,OpenGL要求:指定顶点的命令必须包含在glBegin函数之后,glEnd函数之前(否则指定的顶点将被忽略),并由glBegin来指明如何使用这些点。...如果使用的是GLUT,通知将自动完成,并调用向glutReshapeFunc()注册的函数。该函数必须完成下列工作: 重新建立用作新渲染画布的矩形区域; 定义绘制物体时使用的坐标系。...glViewport()调整像素矩形,用于绘制整个窗口。接下来三个函数调整绘图坐标系,使左下角位置为(0, 0),右上角为(w, h)。

    1.1K20

    实验3.1 直线光栅化(键盘交互版)

    (4) 了解和使用OpenGL的生成直线的命令,来验证程序运行结果。 3.实验原理: 示范代码原理参见教材直线光栅化一节中的DDA算法。...前面的实验已经知道如何绘“点”,那么OpenGL如何知道拿这些顶点来做什么呢?是一个一个的画出来,还是连成线?或者构成一个多边形?或是做其它事情呢?...为了解决这一问题,OpenGL要求:指定顶点的命令必须包含在glBegin函数之后,glEnd函数之前(否则指定的顶点将被忽略),并由glBegin来指明如何使用这些点。...如果使用的是GLUT,通知将自动完成,并调用向glutReshapeFunc()注册的函数。该函数必须完成下列工作: 重新建立用作新渲染画布的矩形区域; 定义绘制物体时使用的坐标系。...glViewport()调整像素矩形,用于绘制整个窗口。接下来三个函数调整绘图坐标系,使左下角位置为(0, 0),右上角为(w, h)。

    1.3K20

    OpenGL中的二维编程——从简单的矩形开始

    输入与窗口函数不属于OpenGL核心库,但是由于它们在交互式程序中的重要地位,这类函数已被包含在GLUT库中。这些函数使我们能够对屏幕中的窗口进行控制并使用鼠标和键盘。...应用程序既可以使用OpenGL、GLU以及GLX库中的函数,也可以直接使用X库或X工具集中的函数。 另外还有一种折衷的方法是借助GLUT库,这样可以使同一个程序能够在不同的平台下重新编译和运行。...三、GLUT void glutInit(int * argc, char ** argv); //初始化GLUT,应在其他GLUT函数和OpenGL函数之前进行调用。...//glutInit()接收来自main函数的参数,程序可以具体实现相关的方式来使用这些参数 所有的GLUT函数都是以glut为前缀。...GL_COLOR_BUFFER_BIT指颜色缓存 void glFlush() //强制执行之前缓存的所有OpenGL命令 六、示例程序 1 #include 2 void

    1.8K40

    Win10系统配置Python3.6+OpenGL环境详细步骤

    1、首先登录https://www.opengl.org/resources/libraries/glut/,下载下图箭头所指的文件 2、解压缩,如下图所示: 3、粗暴一点,把这些文件全部选中,然后复制到...pyopengl,下载合适版本的whl文件,如图所示(根据自己所安装Python的版本选择32位或64位): 5、下载到Python3.6的安装目录的scripts文件夹中(注意,不要修改文件名),然后使用...from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * class MyPyOpenGLTest: #重写构造函数...): glutInit(sys.argv) glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH)...glBegin(GL_LINES) #设置顶点颜色 glColor3f(0.0, 0.0, 0.0) #绘制多边形顶点 for i in range(1001):

    10.8K70

    机械版CG 实验2 直线生成算法的实现

    ,输出正确结果; (2) 指出示范程序采用的算法,以此为基础将其改造为中点线算法或Bresenham算法,写入实验报告; (3) 根据示范代码,将其改造为圆的光栅化算法,写入实验报告; (4) 了解和使用...前面的实验已经知道如何绘“点”,那么OpenGL如何知道拿这些顶点来做什么呢?是一个一个的画出来,还是连成线?或者构成一个多边形?或是做其它事情呢?...为了解决这一问题,OpenGL要求:指定顶点的命令必须包含在glBegin函数之后,glEnd函数之前(否则指定的顶点将被忽略),并由glBegin来指明如何使用这些点。...如果使用的是GLUT,通知将自动完成,并调用向glutReshapeFunc()注册的函数。该函数必须完成下列工作: 重新建立用作新渲染画布的矩形区域; 定义绘制物体时使用的坐标系。...glViewport()调整像素矩形,用于绘制整个窗口。接下来三个函数调整绘图坐标系,使左下角位置为(0, 0),右上角为(w, h)。

    71020
    领券