三 OpenGL常见平面图形绘制代码

// 代码模板

#include <glut.h>

void displayFunc()
{
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);// 在RGB模式下,使用glClearColor清空之后画布的颜色
    glClear(GL_COLOR_BUFFER_BIT);// 清空画布
    glColor3f(1.0f, 0.0f, 0.0f);// 设置画笔颜色
    // do somethins
    glFlush();// 清空缓冲区,立即执行绘制命令
}

int main(int argc, char* argv[])
{
    glutInit(&argc, argv);// 对GLUT进行初始化
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);// 设置显示模式(RGB颜色|单缓冲,对应的还有索引颜色和双缓冲)
    glutInitWindowPosition(100, 100);// 设置窗口的默认显示位置
    glutInitWindowSize(400, 400);// 设置窗口的大小
    glutCreateWindow("OpenGL");// 设置窗口的标题
    glutDisplayFunc(&displayFunc);// 设置绘图函数
    glutMainLoop();// 开启消息循环
    return 0;
}

// 画点

void displayFunc()
{
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);// 在RGB模式下,使用glClearColor清空之后画布的颜色
    glClear(GL_COLOR_BUFFER_BIT);// 清空画布
    glRectf(0.0f, 0.0f, 0.5f, 0.5f);// 换一个矩形
    glColor3f(1.0f, 0.0f, 0.0f);// 设置画笔颜色
    glPointSize(5.0f);// 设置点的大小
    // 画直线
    glBegin(GL_POINTS);// 设置绘制模式为点
        glVertex2f(-0.5f, 0.0f);
        glVertex2f(-0.5f, -0.5f);
    glEnd();
    glFlush();// 清空缓冲区,立即执行绘制命令
}

// 画线

将画点中的GL_POINTS改为GL_LINE就可以画线;

将画点中的glPointSize改为glLineWidth可以设置线宽。

// 画三角形

void displayFunc()
{
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);// 在RGB模式下,使用glClearColor清空之后画布的颜色
    glClear(GL_COLOR_BUFFER_BIT);// 清空画布
    glColor3f(1.0f, 0.0f, 0.0f);// 设置画笔颜色
    // 画三角形
    glBegin(GL_TRIANGLES);// GL_POLYGON绘制模式三角形
        glVertex2f(-0.5f, 0.0f);
        glVertex2f(-0.5f, -0.5f);
        glVertex2f(0.0f, -0.5f);
    glEnd();
    glFlush();// 清空缓冲区,立即执行绘制命令
}

// 画矩形

void displayFunc()
{
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);// 在RGB模式下,使用glClearColor清空之后画布的颜色
    glClear(GL_COLOR_BUFFER_BIT);// 清空画布
    glColor3f(1.0f, 0.0f, 0.0f);// 设置画笔颜色
    // 画两个点
    glBegin(GL_POLYGON);// GL_POLYGON绘制模式为多边形
        glVertex2f(-0.5f, 0.0f);
        glVertex2f(-0.5f, -0.5f);
        glVertex2f(0.0f, -0.5f);
        glVertex2f(0.0f, 0.0f);
    glEnd();
    glFlush();// 清空缓冲区,立即执行绘制命令
}

时间: 2024-08-10 01:52:41

三 OpenGL常见平面图形绘制代码的相关文章

Android OpenGL入门示例:绘制三角形和正方形 (附完整源码)

Android上对OpenGl的支持是无缝的,所以才有众多3D效果如此逼真的游戏,在Camera的一些流程中也有用到GLSurfaceView的情况.本文记录OpenGL在Android上的入门级示例,绘制一个三角形和正方形.尽管功能简单,可是我捣腾了好几个晚上,大量网上文章上的代码都有点问题,不是绘制不出来就是挂了. 第一个文件:MainActivity.java package com.example.learnopengl1; import android.opengl.GLSurface

Tomcat Jboss Glassfish 三种常见web容器比较

https://i.cnblogs.com/EditPosts.aspx?postid=7596859 Tomcat Jboss Glassfish 三种常见web容器比较<br>一.缘由: 新公司平台是纯Java架构,有用到Java Web(JSP).Java 业务(EJB).Nginx..Websphere MQ.Mysql这样.大家知道java是跑在容器里的, 这里的业务要用到EJB故选用了Glassfish容器. EJB是什么?EJB是一个服务器端的组件模型,可以部署分布式应用程序.J

安卓学习第三课——常见布局

1.相对布局 简单的说,就是通过描述每个组件所在的位置,使用的layout_below等,就是控制组件与组件之间的位置关系. 2.绝对布局 就是通过描述他的x,y坐标来确定位置 3.线性布局 有两种是水平和竖直对其方式,一般情况下整体会使用线性布局,来排列众多的组件 3.帧布局 我感觉就是一层一层的,默认的情况下,多个组件是在同一个位置,所以你需要去修改位置.同时可以选择是否显示. 这可以用来描述视频播放器暂停键的控制方法. 代码如下. <?xml version="1.0" e

验证码的三个常见漏洞和修复方法

把验证码存储在Cookie中 一般来说,我们会把验证码的值用Session存储起来,通过对比用户提交的验证码和Session中的验证码,就可以知道输入是否正确.由于Session会占用服务器资源,我曾经想过是否可以把验证码的值加密后存储在Cookie中.不过事实证明,这只是异想天开罢了. 假设验证码的值是a,通过sha1加密后得到的值为b = sha1(a),并且把b存储在Cookie中.而用户提交的验证码值为c,通过判断sha1(c)是否与b相等,可以知道输入的验证码是否正确.然而,Cooki

OpenGL几种绘制方式

OpenGL几种绘制方式 OpenGL 绘制 本文介绍了OpenGL的几种绘制方式及各自特点.绘制方式如下: 立即模式 显示列表 顶点数组 VBO 1.立即模式 最直接的方式,传统的使用glBegin...glEnd绘制的方式,如下所示: glBegin( GL_TRIANGLES ); glVertex3f(-1.0f, -0.5f, -4.0f); glVertex3f( 1.0f, -0.5f, -4.0f); glVertex3f( 0.0f, 0.5f, -4.0f); glEnd()

用Sketch和PaintCode快速得到绘制代码

http://www.cocoachina.com/ios/20150901/13155.html 作者:codeGlider 授权本站转载. 在我的上一篇文章中 swift10分钟实现炫酷的导航控制器跳转动画,有一个swift logo的形状 上一篇文章的动画 我说的就是中间用来做遮罩的形状. 它不是图片是用一段代码绘制而成的: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24     //绘制swift logo  

ASP 三十二条精华代码 (1)

ASP 三十二条精华代码 (1) 2009-08-10 09:53:03  www.hackbase.com  来源:互联网 1. oncontextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键 <table border oncontextmenu=return(false)><td>no</table> 可用于Table 2. <body onselectstart="return

MySQL最常见错误代码及代码说明你都知道吗?

MySQL常见错误代码及代码说明一览表: 1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败<=================可以忽略 1008:数据库不存在,删除数据库失败<=================可以忽略 1009:不能删除数据库文件导致删除数据库失败 1010:不能删除数据目录导致删除数据库失败 1011:删除数据库文件失败 1012:不能读取系统表中的记录 1020:记录已被其他用户修改 1021:硬盘剩余空间不足,请加大硬盘可用空间 1

【转】三次贝塞尔曲线绘制算法

原文:http://www.cnblogs.com/flash3d/archive/2012/01/30/2332176.html 源码:http://files.cnblogs.com/flash3d/bezier.rar ==================================================== 这学期学图形学,就把自己的一些粗浅的理解发上去让大家拍砖.前些天做三次贝塞尔曲线绘制的上机练习,正好将从直线扫描算法中启发得来的n次多项式批量计算用上了,自认为优化得还