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显示一些立体图形示例程序:

文章若未注明转载皆为原创,如需转载请注明出处FindSpace博客及文章链接,文章markdown格式源码现已开放,欢迎转载。文章源码地址:


分享到:

Find

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

You may also like...