OpenGL(一)绘制圆、五角星、正弦曲线
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(一)绘制圆、五角星、正弦曲线的更多相关文章
- OpenGL学习-------绘制简单的几何图形
本次课程所要讲的是绘制简单的几何图形,在实际绘制之前,让我们先熟悉一些概念. 一.点.直线和多边形我们知道数学(具体的说,是几何学)中有点.直线和多边形的概念,但这些概念在计算机中会有所不同.数学上的 ...
- 【AR实验室】OpenGL ES绘制相机(OpenGL ES 1.0版本)
0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLA ...
- CSharpGL(6)在OpenGL中绘制UI元素
CSharpGL(6)在OpenGL中绘制UI元素 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立的Demo,更适合入 ...
- C# Graphic 绘制圆、三角形、椭圆、图片
在form和panel上可以绘制图形,线段,圆,文字,图形等等. 绘制代码必须放在OnPaint()函数里面,因为窗体刷新的时候,都会调用该函数,重新刷新所绘的图. 示例代码在Panel上绘制图形来简 ...
- 使用OpenGL ES绘制3D图形
如果应用定义的顶点不在同一个平面上,并且使用三角形把合适的顶点连接起来,就可以绘制出3D图形了. 使用OpenGL ES绘制3D图形的方法与绘制2D图形的步骤大致相同,只是绘制3D图形需要定义更多的 ...
- CDR绘制绚丽五角星※※
CDR绘制绚丽五角星 1.绘制一个五角星,在多边形工具下拉的第二个就是 2.选中五角星,点击颜色即可.给五角星加上颜色 3.用立体化工具进行延伸. 4.点击图形中心向下拉. 看到了中间的一个长方条了没 ...
- 【Qt for Android】OpenGL ES 绘制彩色立方体
Qt 内置对OpenGL ES的支持.选用Qt进行OpenGL ES的开发是很方便的,很多辅助类都已经具备.从Qt 5.0開始添加了一个QWindow类,该类既能够使用OpenGL绘制3D图形,也能够 ...
- [转]关于OpenGL的绘制上下文
[转]关于OpenGL的绘制上下文 本文转自(http://www.cnblogs.com/Liuwq/p/5444641.html) 什么是绘制上下文(Rendering Context) 初学Op ...
- leaflet 如何绘制圆
方法1(根据指定的半径和中心点去绘制圆) var polygon1 = new L.Circle([34, 108], 120000, { color: 'red', //颜色 fillColor: ...
随机推荐
- 11、V4L2摄像头获取单幅图片测试程序
#根据网上常见的一个测试程序修改而来 by rockie cheng#include <stdio.h>#include <stdlib.h>#include <stri ...
- centos7 安装部署运行 Redis5
原文:centos7 安装部署运行 Redis5 Redis5 下载与解压(官网: https://redis.io/download ) 下载命令:wget http://download.redi ...
- SpringMvc(4-1)Spring MVC 中的 forward 和 redirect(转)
Spring MVC 中,我们在返回逻辑视图时,框架会通过 viewResolver 来解析得到具体的 View,然后向浏览器渲染.通过配置,我们配置某个 ViewResolver 如下: <b ...
- glide 安装
glide是go的一个包管理工具 参考了 https://studygolang.com/articles/10453?fr=email 遇到的问题是,用了 go get githubXXXXX去下载 ...
- HDU 2852 KiKi's K-Number 树状数组
先补充从n个数中求第k小数的理论知识........ 睡觉去~ ------------------------------------------又要睡觉的分割线------------------ ...
- STL algorithm算法make_heap和sort_heap(32)
make_heap原型: std::make_heap default (1) template <class RandomAccessIterator> void make_heap ( ...
- JavaScript 初学者应知的 24 条最佳实践
原文:24 JavaScript Best Practices for Beginners (注:阅读原文的时候没有注意发布日期,觉得不错就翻译了,翻译到 JSON.parse 那一节觉得有点不对路才 ...
- source insight totalcmd 中文目录
@echo off for /F "usebackq delims=" %%a in (`echo %1^^^|iconv -f utf-8 -t gb18030`) do ( s ...
- Rational Rose2007无法正常启动解决方式
安装完Rational Rose发现无法正常启动,我遇到了下面两个问题,希望能帮到同样经历的同学. 问题一: 安装完Rational Rose后不能用,提演示样例如以下:无法启动此程序,由于计算机中丢 ...
- 【oracle11g ,19】索引管理
一.索引的分类: 1.逻辑上分为: 单列索引和复合索引 唯一索引和非唯一索引 函数索引 domain索引 2.物理上分: 分区索引和非分区索引 b-tree bitmap 注意:表和索引最好 ...