MFC-MFC中opengl编程画图没有结果显示?

发布于 2016-12-05 20:57:32 字数 878 浏览 1154 评论 2

这下面是部分函数:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

偏爱自由 2017-08-11 10:57:49

你所有的顶点坐标的Z轴都在0.0f这里,而你又没有设置视角,所以默认视角是(0.0f, 0.0f, 0.0f),视角和点在同一个平面,当然就看不见啦。。。
把所有的点都向后移动几个单位就OK了。。。如(0.0f, 1.0f, -3.0f)。。。OpenGL的立体所标Z轴指向外侧。。。

夜无邪 2017-07-26 19:00:39

你没有定义视点,而默认的视点在原点处,所以看不到。你可以这样考虑,你在一张白纸按照你代码里给定的坐标画了一个三角形,但是这个时候你的眼睛却在这张纸的中心,你能看到这个三角形么,所以你需要把你的眼睛或者你画的图沿着Z坐标移动,使得你能够看到图。可以参考这篇教程http://bbs.pfan.cn/post-196017.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文