
VC6.0中opengl画茶壶的实现
以下是代码,为什么矩形都正确的画出来了而茶壶却不见?#include<windows.h>#include<gl/glut.h>voidmyInit(void){glCl...
以下是代码,为什么矩形都正确的画出来了而茶壶却不见?
#include<windows.h>
#include<gl/glut.h>
void myInit(void)
{
glClearColor(1.0,1.0,1.0,1.0);
glColor3f(0.0f,0.0f,0.0f);
glPointSize(1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,640.0,0.0,480.0);
}
void myDisplay()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.2f,0.5f,0.3f);
glutSolidTeapot(200);
glColor3f(0.5f,0.5f,0.5f);
glRecti(0,0,100,100);
glFlush();
}
void main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(640,480);
glutInitWindowPosition(100,150);
glutCreateWindow("my first attempt");
glutDisplayFunc(myDisplay);
myInit();
glutMainLoop();
} 展开
#include<windows.h>
#include<gl/glut.h>
void myInit(void)
{
glClearColor(1.0,1.0,1.0,1.0);
glColor3f(0.0f,0.0f,0.0f);
glPointSize(1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,640.0,0.0,480.0);
}
void myDisplay()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.2f,0.5f,0.3f);
glutSolidTeapot(200);
glColor3f(0.5f,0.5f,0.5f);
glRecti(0,0,100,100);
glFlush();
}
void main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(640,480);
glutInitWindowPosition(100,150);
glutCreateWindow("my first attempt");
glutDisplayFunc(myDisplay);
myInit();
glutMainLoop();
} 展开
1个回答
展开全部
你画的茶壶是三维的,而你定义的视景体却是二维的
gluOrtho2D(0.0,640.0,0.0,480.0);
茶壶的中心坐标是(0,0),因此最多也只能看到右上角4/1的茶壶
而且茶壶的腹部部分会被剪切掉,因为它位于视景体之外
所以你看到的是零星的曲线,是平面的
你把视景体改成三维的glOrtho(-5.0,5.0,-5.0,5.0,-5.0,5.0);
然后把茶壶跟正方形的大小缩小,改成
glutSolidTeapot(2);
glRecti(0,0,1,1);
这样就能看到茶壶了
如果不想改茶壶的大小,你也可以改大视景体的大小,使之能容纳你的茶壶
gluOrtho2D(0.0,640.0,0.0,480.0);
茶壶的中心坐标是(0,0),因此最多也只能看到右上角4/1的茶壶
而且茶壶的腹部部分会被剪切掉,因为它位于视景体之外
所以你看到的是零星的曲线,是平面的
你把视景体改成三维的glOrtho(-5.0,5.0,-5.0,5.0,-5.0,5.0);
然后把茶壶跟正方形的大小缩小,改成
glutSolidTeapot(2);
glRecti(0,0,1,1);
这样就能看到茶壶了
如果不想改茶壶的大小,你也可以改大视景体的大小,使之能容纳你的茶壶
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询