Possible Duplicate:
sketching object near to each other
我想在屏幕下方绘制草图;
|----| 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 ) ;
最佳答案
我不想在这里成为坏人,所以让我解释一下,如果没有上下文,那段代码为什么一文不值,以及为什么您需要理解。
让我们逐行浏览此代码段。一切始于
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对绘制圆柱体没有任何影响。
您现在看到问题了吗?您在问一个非常具体的问题,那就是家庭作业,在其中放置一些随机代码,只问“如何绘制”,却不知道您实际上在做什么。
如果您不首先掌握基础知识,我们将无法为您提供帮助。我们很乐意为您提供帮助。首先画一些简单的东西,例如以窗口为中心的三角形。