文档章节

OpenGL学习一:分割三角形

K
 Kwkan
发布于 2015/09/20 23:22
字数 223
阅读 19
收藏 0

效果如图:

代码:

#include <iostream>
#include <GL\glut.h>

using namespace std;

namespace wk{

 //画一个三角形,三个点
 void triangle(GLfloat *a, GLfloat *b, GLfloat *c){
  glVertex2fv(a);
  glVertex2fv(b);
  glVertex2fv(c);
 }

 void devideTriangle(GLfloat *a, GLfloat *b, GLfloat *c,int depth){
  GLfloat ab[2], ac[2], bc[2];
  if (depth > 0){
   for (int i = 0; i < 2; i++) ab[i] = (a[i] + b[i]) / 2;
   for (int i = 0; i < 2; i++) ac[i] = (a[i] + c[i]) / 2;
   for (int i = 0; i < 2; i++) bc[i] = (b[i] + c[i]) / 2;
   devideTriangle(a, ab, ac, depth - 1);
   devideTriangle(b, ab, bc, depth - 1);
   devideTriangle(c, ac, bc, depth - 1);
  }
  else triangle(a, b, c);

 }

 void display(void){
  glClear(GL_COLOR_BUFFER_BIT);
  glViewport(0, 0, 500, 500);
  glColor3f(1, 0, 0);
  GLfloat points[3][2] = { {-100,-100}, {0,100}, {100,-100} };
  int depth = 5;
  glBegin(GL_TRIANGLES);
  devideTriangle(points[0], points[1], points[2], depth);
  glEnd();
  glFlush();
 }

 void init(void){
  glClearColor(1, 1, 1, 1);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluOrtho2D(-100, 100, -100, 100);
  glMatrixMode(GL_MODELVIEW);
 }
}

using namespace wk;
void main(int argc, char **argv){
 string windowTitle = "三角形分割";
 glutInit(&argc, argv);
 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
 glutInitWindowPosition(100, 100);
 glutInitWindowSize(500, 500);
 glutCreateWindow(windowTitle.c_str());
 init();
 glutDisplayFunc(display);
 glutMainLoop();
}


© 著作权归作者所有

K
粉丝 2
博文 6
码字总数 4816
作品 0
常州
私信 提问
Android 使用 OpenGL ES 绘制三角形

1. OpenGL ES 简介 OpenGL 是一个跨平台的图形 API,为 3D 图形处理硬件制定了一个标准软件接口。OpenGL ES 是为嵌入式设备设计的 OpenGL 规范,Android 提供了对 OpenGL ES 的支持。 OpenGL...

落英坠露
05/02
0
0
OpenGL ES 绘制 3D 图形

OpenGL ES是 OpenGL三维图形API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。 Ophone目前支持OpenGL ES 1.0 ,OpenGL ES 1.0 是以 OpenGL 1.3 规范为基础的,OpenGL ES 1.1 是以 Op...

鉴客
2011/09/25
10K
4
与OpenGL ES的第一次约会

最近公司的项目中需要实现一个实时视频绘制的功能,在相机中根据识别到的人脸点位信息,对指定的点之间绘制出图案来引导用户。出于性能的考量,决定采用OpenGL ES来进行图案的绘制。最终效果...

金小俊
2018/09/05
0
0
开始在 OS X 开发 OpenGL 应用

有一段时间了,我一直想着进入某些视频游戏开发领域. 对于OpenGL我也很感兴趣,并且因此我也想到了为什么不深入去研究研究OpenGL,再去做一款视频游戏呢?我已经有了许多我想要去探索的游戏的...

oschina
2014/05/13
4.2K
6
Android 使用 OpenGL ES 绘制图片

关于 OpenGL ES 的介绍,请先看上篇:Android 使用 OpenGL ES 绘制三角形。 1. 纹理介绍 使用 OpenGL ES 绘制简单的几何形状还不够,OpenGL 更多地是用来显示而纹理图像,比如本地图片、相机...

落英坠露
05/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 判断实体类属性是否为空工具类

import org.apache.commons.lang.StringUtils;import java.lang.reflect.Field;import java.lang.reflect.Method;/** * 判断对象是否为空 * @param obj * @return */pub......

骑羊放狼灬
18分钟前
0
0
基于nginx搭建RTMP服务器

安装nginx 下载ngnix源码 git clone https://github.com/nginx/nginx.gitgit clone https://github.com/arut/nginx-rtmp-module.git 编译安装 ./configure --add-module=../nginx-rtmp-mod......

cloudjx
31分钟前
0
0
从 Spark 到 Kubernetes — MaxCompute 的云原生开源生态实践之路

2019年5月14日,喜提浙江省科学技术进步一等奖的 MaxCompute 是阿里巴巴自研的 EB 级大数据计算平台。该平台依托阿里云飞天基础架构,是阿里巴巴在10年前做飞天系统的三大件之分布式计算部分...

迷你芊宝宝
34分钟前
0
0
5个Vue.js项目的模板

开发人员查看使用SPA,Webpack,身份验证,GraphQL,文档和测试的Vue开发人员的资源。 你准备开始一个重要的Vue项目吗?为了确保从坚实的基础开始,您可以使用模板(也就是样板,骨架,起动器...

写字的男孩儿
34分钟前
0
0
epoll 的本质是什么?

从事服务端开发,少不了要接触网络编程。epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,nginx、Redis、Skynet 和大部分游戏服务器都使用到这一多路复用技术。 epoll 很重要,但是...

编辑部的故事
38分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部