绘制圆柱体
sketch cylinder
可能的重复:
绘制彼此靠近的对象
我想在屏幕上绘制下图;
|----| 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 ) ;
第一个问题是:这是在什么矩阵上运行的。可能是模型视图,但我们不知道。调用glTranslatef之前的矩阵是什么?OpenGL矩阵运算有点像x86汇编,因为它们用运算结果替换堆栈上的矩阵。
glColor3f ( 0.0f, 1.0f, 1.0f ) ;
这设置了颜色状态。当然通常将此调用与要绘制的几何图形进行分组,但不将其放在代码中间的某个位置。
glRotatef (90.0f, 1.0f, 1.0f, 0.0f );
绕轴(1,1,0)旋转,也就是说,这就像将轴穿过对象,穿过局部原点并指向点(1,0,0),然后绕该轴旋转90°。
gluCylinder(quadric,0.0f,200.0f,100.0f,32,32);
现在绘制了一个圆柱体,它将首先旋转,然后平移,然后……只有您知道,因为您省略了在开始渲染帧时重置模型视图矩阵的部分。
glTranslatef(0.0f, 10.0f, -400.0f ) ;
最终的glTranslatef对绘制圆柱体没有任何影响。
你现在看到问题了吗?你问的是一个非常具体的问题,这显然是家庭作业,在里面放一些随机代码,只是问"如何画",而不知道你到底在做什么。
如果你不先掌握基本知识,我们就无法帮助你。我们很乐意帮助你到达那里。从画一些简单的东西开始,比如在窗户中央画一个三角形。
相关文章:
- QuadTree只在窗口的右上角绘制
- 绘制旋转的三角形
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- 如何在QT中的自定义视频小工具t上绘制矩形
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- 无法使用VAO和EBO(openGL)绘制多个对象
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 绘制顺时针三角形,重新排序点
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- SFML 文本未绘制在窗口上
- 如何在快板的屏幕中显示子位图的绘制?
- 如何绘制自定义形状的元素?
- QPainter 将 QBrush 设置为 在 QT/C++ 中绘制文本
- 除非重新绘制大小,否则SDL_Texture在调整大小后呈现黑色
- 绘制圆柱体
- 在基于着色器的 opengl 中绘制圆柱体
- Opengl - 使用纹理图集绘制圆柱体
- 如何在opengl中绘制y轴或x轴上的圆柱体
- OpenGL:绘制2个圆柱体
- 使用GLUT绘制圆锥体和圆柱体