OpenGL入门之“顶点”:OpenGL规定,一个多边形必须是一个“凸多边形”,即连接多边形上任意两点,其连线都在多边形内部。多边形可以由其边上的端点(这里可称为顶点)来确定。所以“顶点”的概念在图形学中非常重要,定义了顶点数组和顶点的连接方式,就可以组合出各种形态。

OpenGL中顶点连接形式:顶点的连接形式由glBegin函数定义,每种参数对应的连接形式如下:

对OpenGL绘图的初步实践,分别绘制圆、五角星和正弦曲线。

#include <glut.h>
#include "math.h"
#include <iostream> using namespace std; int n=3600; //圆绘制次数
float PI=3.1415926f;
float R=0.8f; //半径 void myDisplay(void)
{
//画圆
glClear(GL_COLOR_BUFFER_BIT);
glClearColor(0,0,0,0);
glColor4f(0,0,1,0);
glBegin(GL_POLYGON);
for(int i=0;i<n;i++)
{
glVertex2f(R*cos(2*PI*i/n),R*sin(2*PI*i/n)); //定义顶点
}
glEnd();
glFlush(); cout<<"画圆成功,任意键继续…"<<endl;
system("pause"); //画五角星
glClear(GL_COLOR_BUFFER_BIT);
glClearColor(0,0,0,0);
glColor4f(0,0,1,0);
glBegin(GL_LINE_LOOP); //以下ABCDE分别是五角星的5个顶点
GLfloat xA=R*cos(90*2*PI/360);
GLfloat yA=R*sin(90*2*PI/360); GLfloat xB=R*cos(306*2*PI/360);
GLfloat yB=R*sin(306*2*PI/360); GLfloat xC=R*cos(162*2*PI/360);
GLfloat yC=R*sin(162*2*PI/360); GLfloat xD=R*cos(18*2*PI/360);
GLfloat yD=R*sin(18*2*PI/360); GLfloat xE=R*cos(234*2*PI/360);
GLfloat yE=R*sin(234*2*PI/360); glVertex2f(xA,yA);
glVertex2f(xB,yB);
glVertex2f(xC,yC);
glVertex2f(xD,yD);
glVertex2f(xE,yE);
glEnd();
glFlush(); cout<<"画五角星成功,任意键继续…"<<endl;
system("pause"); //画正弦曲线,画5个,在x方向上压缩
GLfloat x=-1.0;
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES); glVertex2f(-1.0f,0.0f); //过中心的十字
glVertex2f(1.0f,0.0f);
glVertex2f(0.0f,-1.0f);
glVertex2f(0.0f,1.0f); glEnd();
glBegin(GL_LINE_STRIP);
for(float x=-5*PI;x<5*PI;x+=0.1f)
{
glVertex2f(x/(5*PI),sin(x));
}
glEnd();
glFlush();
cout<<"正弦线完成"<<endl;
} int main(int argc, char *argv[])
{
glutInit(&argc, argv); //初始化GLUT
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("My first OpenGL program");
glutDisplayFunc(&myDisplay); //回调函数
glutMainLoop(); //持续显示,当窗口改变会重新绘制图形
return 0;
}

圆:

五角星:

正弦曲线:

1. OpenGL中窗口的坐标是笛卡尔坐标系,原点在窗口的中心点,左右和上下边界坐标分别为-1、1、1、-1。水平方向上是x轴,垂直方向上是y轴。

2. 图像窗口每次改变,都会引发重绘。

3. 绘制这些简单图形的核心是顶点坐标的确定,依序分别绘制,顺序很重要。

OpenGL(一)绘制圆、五角星、正弦曲线的更多相关文章

  1. OpenGL学习-------绘制简单的几何图形

    本次课程所要讲的是绘制简单的几何图形,在实际绘制之前,让我们先熟悉一些概念. 一.点.直线和多边形我们知道数学(具体的说,是几何学)中有点.直线和多边形的概念,但这些概念在计算机中会有所不同.数学上的 ...

  2. 【AR实验室】OpenGL ES绘制相机(OpenGL ES 1.0版本)

    0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLA ...

  3. CSharpGL(6)在OpenGL中绘制UI元素

    CSharpGL(6)在OpenGL中绘制UI元素 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立的Demo,更适合入 ...

  4. C# Graphic 绘制圆、三角形、椭圆、图片

    在form和panel上可以绘制图形,线段,圆,文字,图形等等. 绘制代码必须放在OnPaint()函数里面,因为窗体刷新的时候,都会调用该函数,重新刷新所绘的图. 示例代码在Panel上绘制图形来简 ...

  5. 使用OpenGL ES绘制3D图形

    如果应用定义的顶点不在同一个平面上,并且使用三角形把合适的顶点连接起来,就可以绘制出3D图形了. 使用OpenGL  ES绘制3D图形的方法与绘制2D图形的步骤大致相同,只是绘制3D图形需要定义更多的 ...

  6. CDR绘制绚丽五角星※※

    CDR绘制绚丽五角星 1.绘制一个五角星,在多边形工具下拉的第二个就是 2.选中五角星,点击颜色即可.给五角星加上颜色 3.用立体化工具进行延伸. 4.点击图形中心向下拉. 看到了中间的一个长方条了没 ...

  7. 【Qt for Android】OpenGL ES 绘制彩色立方体

    Qt 内置对OpenGL ES的支持.选用Qt进行OpenGL ES的开发是很方便的,很多辅助类都已经具备.从Qt 5.0開始添加了一个QWindow类,该类既能够使用OpenGL绘制3D图形,也能够 ...

  8. [转]关于OpenGL的绘制上下文

    [转]关于OpenGL的绘制上下文 本文转自(http://www.cnblogs.com/Liuwq/p/5444641.html) 什么是绘制上下文(Rendering Context) 初学Op ...

  9. leaflet 如何绘制圆

    方法1(根据指定的半径和中心点去绘制圆) var polygon1 = new L.Circle([34, 108], 120000, { color: 'red', //颜色 fillColor: ...

随机推荐

  1. 12.1、USB驱动——描述符、URB、管道

    大家常说,一个设备通常有多个配置,配置通常有多个接口,接口通常有多个端点.接口代表逻辑上的设备,比如声卡分为 录音和播放.访问设备时,访问的是某个接口(逻辑设备).除了端点0之外,每个端点只支持一个传 ...

  2. IntelliJ IDEA设置鼠标悬浮提示

    测试代码; public interface MyInterface { /** * 我是接口方法的注释 * @param num1 我是接口方法入参的注释 * @return 我是接口方法返回值的注 ...

  3. windows程序扫雷程序设计

    详细资源见:http://download.csdn.net/detail/zhouyelihua/7604765 在学习windows程序设计中.我们希望通过一个完整的程序来学习windows AP ...

  4. js进阶正则表达式实现过滤字符串(RegExp对象操作正则表达式)(正则:regular)(表达式:expression)

    js进阶正则表达式实现过滤字符串(RegExp对象操作正则表达式)(正则:regular)(表达式:expression) 一.总结 1.str_replace:正则作用:高效快速匹配 2.break ...

  5. Nginx+uswgi+Django部署

    详情参考: http://blog.csdn.net/a_little_snail/article/details/78045636

  6. HDU 5072 Coprime 同色三角形问题

    好吧,我承认就算当时再给我五个小时我也做不出来. 首先解释同色三角形问题: 给出n(n >= 3)个点,这些点中的一些被涂上了红色,剩下的被涂上了黑色.然后将这些点两两相连.于是每三个点都会组成 ...

  7. skip-slave-start的重要性

    原来做复制的主机因为数据丢失需要重新创建复制环境,机器上已经有了主库数天前的备份,于是删除数据目录直接把备份放上去,结果发现复制没有抱错,show slave status一切正常,select co ...

  8. PatentTips - Hardware virtualization such as separation kernel hypervisors

    BACKGROUND 1. Field Innovations herein pertain to computer virtualization, computer security and/or ...

  9. INT_MIN与溢出

    隔了好久没更新了,由于我在学习PL和编译器/解释器的知识. 挺好奇这方面的,由于没有学过相关的课程.所以学起来有点吃力,进展缓慢.所以导致没啥可写的. 今天看到这么一段话: 32位的int型的取值是2 ...

  10. js进阶 9-15 多选框如何限制选中数目

    js进阶 9-15 多选框如何限制选中数目 一.总结 一句话总结: 1.多选框如何限制选中数目? 没点击选择一次,来统计现在总共选了多少个,如果超出,就给onclick事件返回false,取消oncl ...