我想在屏幕下方绘制图表;
|----| sphere
|----|
/ /
/ /
/ / cylinder
/ /
/ / angle = 45
| |
| |
| | cylinder (i)
| |
| |
| |
----------- cylinder
-----------
要绘制标有(i)的圆柱,我使用下面的代码,你能帮我解决我的错误,因为我无法画画(i)吗?
glTranslatef(0.0f, 10.0f, 400.0f ) ;
glColor3f ( 0.0f, 1.0f, 1.0f ) ;
glRotatef (90.0f, 1.0f, 1.0f, 0.0f );
gluCylinder(quadric,0.0f,200.0f,100.0f,32,32);
glTranslatef(0.0f, 10.0f, -400.0f ) ;
答案 0 :(得分:0)
我不想成为这里的坏人,所以让我解释一下,为什么没有上下文以及为什么你需要理解这些代码是没有价值的。
让我们逐行浏览这个片段。这一切都以
开头glTranslatef(0.0f, 10.0f, 400.0f ) ;
第一个问题是:这是什么矩阵运作。可能是modelview,但我们不知道。那个调用glTranslatef之前的矩阵是什么? OpenGL矩阵操作有点像x86汇编,因为它们用操作的结果替换堆栈上的矩阵。
glColor3f ( 0.0f, 1.0f, 1.0f ) ;
设置颜色状态。当然。一个人通常将此调用与要绘制的几何图形组合在一起,而不是将其放在代码中间的某个位置。
glRotatef (90.0f, 1.0f, 1.0f, 0.0f );
围绕轴(1,1,0)旋转,即它像穿过物体的轴,穿过本地原点并朝向点(1,1,0),然后旋转90°关于这个轴。
gluCylinder(quadric,0.0f,200.0f,100.0f,32,32);
现在绘制一个圆柱体,它将首先旋转,然后平移,然后......只有你知道,因为你省略了部分,在开始渲染帧时模型视图矩阵被重置。
glTranslatef(0.0f, 10.0f, -400.0f ) ;
最终的glTranslatef对绘制圆柱体没有任何影响。
你现在看到问题了吗?你问的是一个非常具体的问题,那显然是家庭作业,在那里放了一些随机代码,只是问“如何画出来”,不知道你在做什么。
如果你没先先掌握基础知识,我们就无法帮助你。我们很乐意帮助您到达那里。首先绘制一些简单的东西,比如窗口中心的三角形。