答案:
在MFC的视图-文档结构中的用OpenGl函数绘制图形的代码
OpenGl的初始化部分就省略了,因为我可以绘制出图形来
void COpenGLMFC1View::OnPaint()
{
CPaintDC dc(this); // device context for painting'
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f, 1.0f, 1.0f);
glutWireCube(140.0);///***问题在这!!!
glBegin(GL_POLYGON); //绘制一个彩色的三角形
glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
glVertex3f(100.0f, 50.0f,0.0f);
glColor4f(0.0f, 1.0f, 0.0f, 1.0f);
glVertex3f(450.0f, 400.0f,0.0f);
glVertex3f(450.0f, 50.0f,0.0f);
glEnd();
glFlush();
}
View::OnSize(UINT nType, int cx, int cy) //设置视图的刷新的处理
{
CView::OnSize(nType, cx, cy);
GLsizei width, height;
GLdouble aspect;
width = cx;
height = cy;
if (cy==0)
aspect = (GLdouble)width;
else
aspect = (GLdouble)width/(GLdouble)height;
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 500.0*aspect, 0.0, 500.0);
//gluLookAt(200,150,10,200,150,0,0,1.0,0.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
我的问题是我在OnPaint() 中有个绘制glutWireCube(140.0)函数,但是三角形能出来,但这个线框的立方体却没有出来,不知道为什么?
无论该函数是否在glBegin()..glEnd()之间.
怎么才能出来?
另外我设置gluLookAt(200,150,10,200,150,0,0,1.0,0.0),一旦启用这个函数视图中就什么也看不见面,我想(200,150,200)应该在三角型内部,怎么都应该看见一点呀.不知道为什么.
---------------------------------------------------------------
glClearColor(0.2f,0.5f,0.9f,1.0f);//ÉèÖñ³¾°ÑÕɫΪºÚÉ«
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(0.0f, 1.0f, 0.0f);
glutWireCube(140.0);///***问题在这!!!
gluLookAt(200,150,500,200,150,0,0,1.0,0.0),
不断的调整第三个参数试试。
---------------------------------------------------------------
你的程序中使用的是:
gluOrtho2D(0.0, 500.0*aspect, 0.0, 500.0);
这个函数的默认near=-1,far=1;这个far是设置你最远能看见的距离,就只有1个单位
而你的gluLookAt(200,150,10,200,150,0,0,1.0,0.0);
摄像机已经是在10的单位以上了,
你当然什么都看不见!!!
改正后:
glOrtho(0.0, 500.0*aspect, 0.0, 500.0,-1,100);
gluLookAt(140,140,10,100,50,0,0,1,0);