在opengl中编写的程序没有错误,可是就是不显示图形 5

voidCGeneric2View::OnDrawBezierCurve(){//TODO:在此添加命令处理程序代码HWNDhWnd=GetSafeHwnd();HDCh... void CGeneric2View::OnDrawBezierCurve()
{
// TODO: 在此添加命令处理程序代码
HWND hWnd=GetSafeHwnd();
HDC hDC=::GetDC(hWnd);
wglMakeCurrent(hDC,hglrc);
drawb_curve();
wglMakeCurrent(NULL,NULL);
SwapBuffers(hDC);
}

void CGeneric2View::drawb_curve(void)
{
myinit();
GLfloat points[4][3]={
{-0.6,-0.6,0.0},
{-0.4,0.6,0.0},
{0.4,-0.6,0.0},
{0.6,0.6,0.0}
};
glMap1f(GL_MAP1_VERTEX_3,0.0,1.0,3,4,&points[0][0]);
glEnable(GL_MAP1_VERTEX_3);
glShadeModel(GL_FLAT);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3f(0.0,0.0,1.0);
glLineWidth(5.0);
glBegin(GL_LINE_STRIP);
int i;
for(i=0;i<=30;i++)
glEvalCoord1f((GLfloat)i/30.0);
glEnd();
glPointSize(10.0);
glColor3f(1.0,0.0,0.0);
glBegin(GL_POINTS);
for(i=0;i<=4;i++)
glVertex3fv(&points[i][0]);
glEnd();
glFlush();

}
展开
 我来答
迅捷司鼐膊俳b9ade
2014-10-28 · TA获得超过532个赞
知道小有建树答主
回答量:291
采纳率:0%
帮助的人:211万
展开全部
void CGeneric2View::OnDrawBezierCurve()
{
// TODO: 在此添加命令处理程序代码
HWND hWnd=GetSafeHwnd();
HDC hDC=::GetDC(hWnd);
wglMakeCurrent(hDC,hglrc);
drawb_curve();
wglMakeCurrent(NULL,NULL);
SwapBuffers(hDC);
}

我怎么没有看到HGLRC的赋值过程?
wglCreateContext(hDC);
追问
我知道了,刚刚看了一下原来是在HGLRC这边法赋值出了问题,谢谢了!
追答
还有你的SwapBuffers(hDC);在wglMakeCurrent(NULL,NULL);之后,我不确定这样好不好,因为我没试过.最好是画完图直接交换缓冲区.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式