OpenGL三维绘图学习2画常见立体图形

Pre

有同学用的是手算看到图形的比例,然后给出一个正方体的参数(约定好某个点+边长)来画,我偷懒直接用库函数。

库函数

//球  
glutWireSphere(8.0f,20,20);  
glutSolidSphere(8.0f,20,20);  
//锥体  
glutWireCone(4.0f,8.0f,20,20);  
glutSolidCone(4.0f,8.0f,20,20);  
//立体  
glutWireCube(8.0f);  
glutSolidCube(8.0f);  
//甜圈  
glutWireTorus(3.0f,6.0f,20,20);  
glutSolidTorus(3.0f,6.0f,20,20);  
//十六面体,默认半径1.0  
glScalef(6.0f,6.0f,6.0f);//x,y,z轴均放大6倍  
glutWireDodecahedron();  
glutSolidDodecahedron();  
//茶壶  
glutWireTeapot(8.0f);  
glutSolidTeapot(8.0f);  
//八面体,默认半径1.0  
glScalef(6.0f,6.0f,6.0f);//x,y,z轴均放大6倍  
glutWireOctahedron();  
glutSolidOctahedron();  
//四面体,默认半径1.0  
glScalef(6.0f,6.0f,6.0f);//x,y,z轴均放大6倍  
glutWireTetrahedron();  
glutSolidTetrahedron();  
//二十面体,默认半径1.0  
glScalef(6.0f,6.0f,6.0f);//x,y,z轴均放大6倍  
glutWireIcosahedron();  
glutSolidIcosahedron();  

gluWire*的是线,上一节中的示例便是
gluSolid*的是面,如本节第一个立方体的图
长方体的可以这样来做:

glPushMatrix();
// do the scale here
// do the draw here

glPopMatrix();

这个push和pop,是opengl状态机,可以这样来理解,push到栈里之后,一些列的操作矩阵,在pop之后,都会按原路返回,也就是说,此时你的绘图焦点,回到了push之前。

opengl三维绘图入门系列:

OpenGL三维绘图学习1入门
OPENGL三维绘图学习2画常见立体图形
OPENGL三维绘图学习3键盘监听
OPENGL三维绘图学习4裁剪(画半球体)

Reference

基于Glut OpenGL显示一些立体图形示例程序:

文章版权归 FindHao 所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明作者 FindHao 和本文原始地址:
https://www.findhao.net/easycoding/1214

你可能喜欢:(相似内容推荐和广告都使用了谷歌的推荐系统,需要对本站取消广告屏蔽才能显示。感谢点击↓广告支持博主~)

Find

新浪微博(FindSpace博客)QQ群:不安分的Coder(375670127) 不安分的Coder

1 条回复

  1. 你学Java的,课余可以试试Processing,写起来很爽~(虽然我目前基本没怎么写过)另外Arch里面可以已经可以直接用pacman安装了

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*