Opengl MFC多线程如何在原窗口进行绘图

由于OPENGL绘图占用时间较长(32ms),不得不新开一个线程进行绘图,但我发现我现在的程序每次都要新建窗口。请问,怎么在原窗口上绘图啊?

5个回答

glutCreateWindow()从名字上看不是你注释的设置窗口标题,而是创建一个新窗口。
看你线程中的代码应该是从一个控制台项目中拷贝过来的,因为没用过opengl所以不能给你明确的解决办法,但估计opengl应该有个设置绘图窗口的函数,你在线程中调用这个函数就可以了。
建议还是仔细看过库的详细用法再动手开发,否则也是知其然不知其所以然。

Cracent
Cracent 谢谢你的意见,勿以浮沙筑高台
接近 5 年之前 回复

图片说明图片说明

这个nene的教程上面应该有的啊,就是旋转立方体的那个

已经解决了,这是我的线程函数(类似于单片机程序,很熟悉)
int OpenGLThread(LPVOID lpv)//线程run函数
{
//获得线程创建时对话框传入的参数,可以通过这里传递给opengl一些控制参数
COpenGLVS20122Dlg* pTaskMain = (COpenGLVS20122Dlg *) lpv;
pTaskMain->MySetPixelFormat(::GetDC(pTaskMain->m_hWnd)); // 设置当前的绘图像素格式
pTaskMain->hdc = ::GetDC(pTaskMain->m_hWnd); // 获得绘图描述表
pTaskMain->hglrc = wglCreateContext(pTaskMain->hdc); // 创建绘图描述表
wglMakeCurrent(pTaskMain->hdc, pTaskMain->hglrc); // 使绘图描述表为当前调用现程的当前绘图描述表
//pTaskMain->OnCreate(pTaskMain->lpCreateStruct);
pTaskMain->InitGL();
while (true)
{
pTaskMain->GLDraw();
}

这样就OK了

原窗口,那你还是要在主线程上画图,那你线程中发送消息过去通知主线程画图。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐