MFC-MFC中opengl编程画图没有结果显示?
这下面是部分函数:
void COpengl::DrawWithOpenGL()
{
glLoadIdentity();
glColor3f(0.0,1.0,1.0);
glBegin(GL_TRIANGLES);
glVertex3f(0.0f,1.0f,0.0f);
glVertex3f(-1.0f,-1.0f,0.0f);
glVertex3f(1.0f,-1.0f,0.0f);
glEnd();
glFlush();
}
void COpengl::SwapGLBuffer()
{
SwapBuffers(m_hdc);
}
void COpengl::ClearBuffer()
{
glClearColor(0.0,0.0,0.0,0.0);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
}
void CMFCopenglView::OnDraw(CDC* pDC)
{
CMFCopenglDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
m_bgl.ClearBuffer();
m_bgl.DrawWithOpenGL();
m_bgl.SwapGLBuffer();
}
int CMFCopenglView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
CClientDC dc(this);
return (m_bgl.OnGLInitial(dc.m_hDC));
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你所有的顶点坐标的Z轴都在0.0f这里,而你又没有设置视角,所以默认视角是(0.0f, 0.0f, 0.0f),视角和点在同一个平面,当然就看不见啦。。。
把所有的点都向后移动几个单位就OK了。。。如(0.0f, 1.0f, -3.0f)。。。OpenGL的立体所标Z轴指向外侧。。。
你没有定义视点,而默认的视点在原点处,所以看不到。你可以这样考虑,你在一张白纸按照你代码里给定的坐标画了一个三角形,但是这个时候你的眼睛却在这张纸的中心,你能看到这个三角形么,所以你需要把你的眼睛或者你画的图沿着Z坐标移动,使得你能够看到图。可以参考这篇教程http://bbs.pfan.cn/post-196017.html